k8s環境部署本地.net core web項目
- 2020 年 3 月 4 日
- 筆記
上一篇文章,我們部署了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