k8s學習筆記(3)- kubectl高可用部署,擴容,升級,回滾springboot應用
阿新 • • 發佈:2021-10-19
前言:上一篇通過rancher管理k8s,部署服務應用擴容,高可用,本篇介紹kubectl命令列部署高可用叢集節點,測試升級、擴容等
1、測試環境:3節點k3s,使用其中2節點(ubuntunode1與ubuntunode2),node3暫不用
-
輸入命令,檢視節點狀況
2、進入任意節點,使用kubectl命令列進行服務部署操作,我們這裡用node1節點
-
新建一個.yaml檔案,用於部署2個負載的應用,檔名稱:springbootapp-2nodes.yaml
-
檔案內容如下,kind節點使用Deployment型別:
-
文字如下:
apiVersion: apps/v1 kind: Deployment metadata: name: springbootapp-dep labels: app: springbootapp spec: replicas: 2 selector: matchLabels: app: springbootapp template: metadata: labels: app: springbootapp spec: containers: - name: springbootapp image: xjk27400861/springbootapp:42 ports: - containerPort: 8080
-
新建一個名稱空間,用於部署叢集應用
命令如下:
sudo kubectl create namespace springboot2node
-
輸入命令,建立2節點副本應用,-n 指定名稱空間
命令如下:
sudo kubectl create -f springbootapp-2nodes.yaml -n springboot2node
-
也可以在.yaml檔案中指定名稱空間:
-
輸入命令,檢視pod節點執行狀態
命令如下:
sudo kubectl get pods -n springboot2node
-
輸入命令,檢視副本集情況
命令如下:
sudo kubectl get rs -n springboot2node
-
輸入命令,建立一個svc的service,暴露叢集
命令如下:
sudo kubectl apply -f springbootapp-2node-svc.yaml
-
springbootapp-2node-svc.yaml檔案內容如下:
apiVersion: v1 kind: Service metadata: name: springbootapp-2node-svc namespace: springboot2node labels: app: springbootapp-2node-svc spec: type: NodePort ports: - port: 8080 nodePort: 30001 selector: app: springbootapp
-
通過任意節點ip+埠:30001+路由即可訪問應用,我這是:http://192.168.231.133:30001/hello 或 http://192.168.231.134:30001/hello
3、k8s擴容
-
修改配置檔案springbootapp-2nodes.yaml,2節點改為3節點
-
輸入命令,重新部署,檢視副本集變為3個
sudo kubectl apply -f springbootapp-2nodes.yaml --record=true
-
檢視pod數量,也為3個
4、k8s自愈性
-
刪除2個pod,模擬伺服器宕機狀況
sudo kubectl delete pod springbootapp-dep-67656f6dc9-cncb6 springbootapp-dep-67656f6dc9-pp47x -n springboot2node
-
重新檢視pod狀況,發現又重新構建了2個新的pod,保證負載還是3臺
sudo kubectl get pods -n springboot2node
5、k8s升級
-
修改程式碼,區分版本,重新構建映象推到倉庫
-
新映象tag:43
-
修改部署檔案:springbootapp-2nodes.yaml,映象版本改為43
-
輸入命令,重新部署應用,引數--record=true讓 Kubernetes 把這行命令記到釋出歷史中方便後面檢視
sudo kubectl apply -f springbootapp-2nodes.yaml --record=true
-
ContainerCreating狀態的表示新版本的容器正在啟動,Running的是新版本的已經執行起來了,Terminating的這個是老版本正在停止
-
過了一段時間,發現3個節點已經建立完成
-
訪問應用,即可看見新版本已釋出完成
6、k8s回滾應用
-
輸入命令,檢視釋出歷史
sudo kubectl rollout history deployment springbootapp-dep -n springboot2node
-
可以看到有2個版本,我們回滾到版本1的狀態
sudo kubectl rollout undo deployment springbootapp-dep --to-revision=1 -n springboot2node
-
查看回滾狀態,成功
sudo kubectl rollout status deployment springbootapp-dep -n springboot2node
-
訪問應用,即可看見應用已回滾到老版本
7、rancher2.x對springboot2node進行遷移,遷移到default專案下,便於rancher管理
-
點選右側下拉選單,移動
-
名稱空間已轉移到專案default中
-
以後可以通過rancher操作應用擴容縮容回滾等,會相當方便