k8s學習筆記(3)- kubectl高可用部署,擴容,升級,回滾springboot應用
前言:上一篇通過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+路由即可訪問應用,我這是://192.168.231.133:30001/hello 或 //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操作應用擴容縮容回滾等,會相當方便