k8s環境部署本地.net core web項目

    上一篇文章,我們部署了docker+k8s環境,簡單測試通過,但是,還沒能將我們自己的項目部署上去,繼續記錄部署踩坑過程。

一、準備工作

    1、當然是docker+k8s環境了,詳情請看上一篇文檔 https://www.cnblogs.com/CoderLinkf/p/12395710.html

    2、如果你部署好環境,重啟過,建議先kubeadm reset,重新關閉防火牆,swap重新init一下

systemctl stop firewalld  setenforce 0  swapoff -a  kubeadm init --apiserver-advertise-address=192.168.3.180 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.17.3 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16  

  別忘了改ip,接下來,重新安裝flannel,詳情請看上一篇文檔安裝,這裡還沒有找到重啟後環境不變的方法,最後你得到下圖結果:

 

 同理,node節點也需要重新執行。

二、開始部署

  1、首先,將項目發布到文件系統,ftp到centos系統,這步不細說了

  2、DockerFile:放在項目保存的目錄下

FROM microsoft/aspnetcore:2.0 AS base  WORKDIR /dockerdemo  EXPOSE 80    COPY . .  ENTRYPOINT ["dotnet", "Application.web.dll"]  

  3、拉取鏡像,記得cd到目錄下面,dockerdemo可以改成自己的項目

docker build -t dockerdemo .  

  4、docker images,查看鏡像

 

  5、到此,部署了master節點的鏡像,接下來,同樣的操作,在node節點拉取鏡像(本地項目必須的)

  6、做完上面的工作,我們開始編寫web-pod.yaml,當然文件名不重要,重要的是.yaml內容

apiVersion: apps/v1  kind: Deployment  metadata:    name: web1    labels:      k8s-app: web1  spec:    replicas: 2    selector:      matchLabels:        k8s-app: web1    template:      metadata:        labels:          k8s-app: web1      spec:        containers:        - name: web1          image: dockerdemo          imagePullPolicy: Never          ports:          - containerPort: 80  ---  kind: Service  apiVersion: v1  metadata:    labels:      k8s-app: web1    name: web1  spec:    type: NodePort    ports:    - port: 80      targetPort: 80    selector:      k8s-app: web1  

  解釋一下:

  name可以改,

  replicas參數表示工作副本,運行成功後會運行相應的pod數量在節點中

  image:本地鏡像名稱

  imagePullPolicy:因為是在本地,所以不從pull拉取鏡像,Never(IfNotPresent:如果本地沒有,拉取pull鏡像;Always:總是從pull拉取)

  其他參數就不解釋了,可以了解一下https://www.bbsmax.com/A/obzbN4AyzE/

  當然了,yaml文件格式非常嚴格,一不小心就會驗證失敗,可以在https://www.json2yaml.com/convert-yaml-to-json進行驗證格式

  7、運行pod

kubectl create -f web-pod.yaml  

  如果順利的話,執行

kubectl get pod -o wide  

  可以看到

 

 這裡的兩個,即上面配置的replicas效果

kubectl get pod,svc -o wide  

  運行kubectl get pod,svc -o wide,如果出現下圖所示,狀態為running

 

  恭喜你,成功了,訪問圖上所示的鏈接http://192.168.3.180:30165/即可看到我們的網站

如果失敗了,可以查看pod的日誌

kubectl describe pod web1-58f6d7d9b5-mlbx2  

  這裡的pod名,可以通過上面的kubectl get pods來查看

更複雜的日誌:

kubectl create -f web-pod.yaml