1. 程式人生 > 其它 >Kubernetes(K8S) Controller - Deployment 介紹

Kubernetes(K8S) Controller - Deployment 介紹

什麼是controller

實際存在的,管理和執行容器的物件

Pod 和 Controller 關係

Pod 是通過 Controller 實現應用的運維,比如伸縮、滾動升級等等
Pod 和 Controller 之間通過 label 標籤建立關係

Deployment 控制器應用場景

場景:Web服務、微服務
部署無狀態應用
管理Pod和ReplicaSet
部署、滾動升級等功能

yaml 檔案欄位說明

Kubernetes(K8S) 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