所屬技術領域:
kubernetes
|名詞定義|
Deployment為pod和replica set(下一代replication controller)提供聲明式更新。隻需要在deployment中描述想要的目标狀态,deployment controller就會幫您将pod和replicasSet的實際狀态改變到您的目标狀态。也可以定義一個全新的deployment來建立replicasSet或者删除已有的deployment并建立一個新的來替換。
|發展曆程|
2019.11.15 Deployment是kubernetes v1.2引入的機率概念,引入的目的是為了更好地解決pod的編排問題。為此,deployment在内部使用了replicas set來實作目的,無論從deployment的作用與目的,它的YAML定義,還是從它的具體指令行操作來看,我們都可把它看作RC的一次更新,兩者相似度超過90%
|技術特點|
Deployment能幫我們做什麼事情
- 定義一組pod的期望數量,controller會維持pod數量與期望值一緻
- 配置pod釋出方式,controller會按照給定政策更新pod、保證更新過程中不可用的pod數量在限定範圍内
-
如果釋出有問題,支援‘一鍵’復原
Deployment文法
新知識點:replicas:終态數量、template:pod模闆
舊知識點:labels:标簽、selector:選擇器、pod image:鏡像版本
檢視deployment狀态
$kubectl create –f nginx-deployment.yaml
$kubectl get deployment
檢視pod
$kubectl get pod
更新鏡像
$kubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.9.1
快速復原
$kubectl rollout undo deployment/nginx-deployment
復原到deployment上一個版本
$kubectl rollout undo deployment.v1.apps/nginx-deployment --to-revision=2
復原到deployment到某一個版本,需要先查詢版本清單
$kubectl rollout history deployment.v1.apps/nginx-deployment
DeploymentStatus

管理模式
Deployment隻負責管理不同版本的ReplicaSet,由ReplicaSet管理Pod副本數
每個ReplicaSet對應了deployment template的一個版本
一個ReplicaSet下的Pod都是相同的版本
Deployment控制器
ReplicaSet控制器
擴容模拟
Deployment的副本數由ReplicaSet管理
修改deployment replicas之後,controller會把replicas同步到目前版本的ReplicaSet中,由ReplicaSet執行擴容/縮容
釋出模拟
復原模拟
復原的過程,其實是deployment controller 重新調整下屬ReplicaSet的replicas數量,最終使舊版本的ReplicaSetreplicas重新擴出所有pod、
|相關詞|
Spec字段解析
MinRreadySseconds:判斷pod available的最小ready時間
RevisionHhistoryLlimit:保留曆史revision(ReplicaSet)的數量,預設值為10
Paused:辨別deployment隻做數量維持,不做新的釋出
ProgressDdeadlineSseconds:判斷deployment status condition為failed的最大時間
更新政策字段解析
MaxUunavailable:滾動過程中最多有多少個pod不可用
MmaxSsurge:滾動過程中最多存在多少個pod超過期望replicas數量
|資料來源|
名稱定義:
http://www.manongjc.com/article/101319.html#deployment%E6%8E%A7%E5%88%B6%E5%99%A8發展曆程:
http://www.orchome.com/1337