k8s-部署AspNetCore應用(3)


1、准備AspNetCore WebApi項目

修改Controller,返回當前主機的名稱和IP:

image-20201015231323079

編寫Dockerfile:

#指定基礎鏡像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base

#配置工作目錄 相當於cd
WORKDIR /app
  
#暴露容器端口,此端口與程序運行路徑一致,可
EXPOSE 5000

#復制文件到工作目錄
COPY . .
 
#ENV :配置系統環境變量,比如程序環境環境等在這里配置(開發、預發、線上環境)
#這里是配置程序運行端口,如果程序不使用默認的80端口這里一定要設置(程序運行端口)
ENV ASPNETCORE_URLS http://+:5000

#設置時間為中國上海,默認為UTC時間
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

#啟動程序
ENTRYPOINT ["dotnet", "AspNetCoreDeployInK8S.dll"]

2、制作鏡像

docker build -t easyboys/k8sdemo:coreapi-v1  .

3、編寫發布應用的demoDeployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: k8s-demo-deployment
  labels:
    k8s-app: k8s-demo-web
spec:
  replicas: 2
  selector:
    matchLabels:
      k8s-app: k8s-demo-web
  template:
    metadata:
      labels:
        k8s-app: k8s-demo-web
    spec:
      containers:
      - name: k8s-demo
        image: easyboys/k8sdemo:coreapi-v1
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 5000
---
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: k8s-demo-web
  name: k8s-demo-service
spec:
  type: NodePort
  ports:
  - port: 5000
    targetPort: 5000
  selector:
    k8s-app: k8s-demo-web

下篇文章再分析該yaml

創建deployment:

kubectl create -f  demoDeployment.yaml

image-20201015231938221

查看pod,svc狀態:

kubectl get svc,pod -o wide

image-20201015232232840

從上圖可以看到對外暴露pod的端口為31803,且該api運行了兩個副本,分別在node1和node2運行。

4、在瀏覽器通過http://nodeIP:nodePort訪問我們的api

本次例子為http://192.168.124.202:32506/

image-20201015232536292

image-20201015232558854

訪問成功,證明我們的aspnetcore應用成功部署在K8S上!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM