Kubernetes(K8S) Controller - Deployment 介紹
阿新 • • 發佈:2022-11-30
什麼是controller
實際存在的,管理和執行容器的物件
Pod 和 Controller 關係
Pod 是通過 Controller 實現應用的運維,比如伸縮、滾動升級等等
Pod 和 Controller 之間通過 label 標籤建立關係
Deployment 控制器應用場景
場景:Web服務、微服務
部署無狀態應用
管理Pod和ReplicaSet
部署、滾動升級等功能
yaml 檔案欄位說明
Deployment 控制器應用部署
通過 matchLabels 和 labels 進行匹配
- 匯出 yaml 檔案 kubectl create
- 編輯 yaml 檔案
- 進行部署,kubectl apply -f
- 對外發布,kubectl expose deployment 或者在 yaml 中編輯 NodePort
升級回滾
- 升級
# 命令修改 [root@k8smaster ~]# kubectl set image deployment/javademo1 vipsoft=registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:2.0 # 手動修改 # Containers: # vipsoft: # Image: registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:1.0 #將 :1.0 改成 2.0 # 一旦映象名(或 Pod 定義)發生了修改,則觸發 k8s 系統完成 Deployment 所有執行 Pod 的滾動升級操作 [root@k8smaster ~]# kubectl edit deployment/javademo1
- 回滾
# 檢視歷史版本
[root@k8smaster ~]# kubectl rollout history deployment/javademo1
# 這邊沒加參婁,回滾到上一個版本
[root@k8smaster ~]# kubectl rollout undo deployment/javademo1
# 回到指定的版本
[root@k8smaster ~]# kubeetl rollout undo deployment/javademo1 --to-revision=2
Kubernetes(K8S) Deployment 升級和回滾
彈性伸縮
# 建立 3 個副本 [root@k8smaster ~]# kubectl scale deployment javademo1 --replicase=3