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
&n