用 Deployment 運行應用 - 每天5分鐘玩轉 Docker 容器技術(123)
Deployment
前面我們已經了解到,Kubernetes 通過各種 Controller 來管理 Pod 的生命周期。為了滿足不同業務場景,Kubernetes 開發了 Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job 等多種 Controller。我們首先學習最常用的 Deployment。
先從例子開始,運行一個 Deployment:
kubectl run nginx-deployment --image=nginx:1.7.9 --replicas=2
上面的命令將部署包含兩個副本的 Deployment nginx-deployment
,容器的 image 為 nginx:1.7.9
。
下面詳細分析 Kubernetes 都做了些什麽工作。
kubectl get deployment
命令可以查看 nginx-deployment
的狀態,輸出顯示兩個副本正常運行。
接下來我們用 kubectl describe deployment
了解更詳細的信息。
大部分內容都是自解釋的,我們重點看最下面部分。這裏告訴我們創建了一個 ReplicaSet nginx-deployment-1260880958
,Events
是 Deployment 的日誌,記錄了 ReplicaSet 的啟動過程。
通過上面的分析,也驗證了 Deployment 通過 ReplicaSet 來管理 Pod 的事實。接著我們將註意力切換到 nginx-deployment-1260880958
,執行 kubectl describe replicaset
:
兩個副本已經就緒,用 kubectl describe replicaset
查看詳細信息:
Controlled By
指明此 ReplicaSet 是由 Deployment nginx-deployment
創建。Events
記錄了兩個副本 Pod 的創建。接著我們來看 Pod,執行 kubectl get pod
:
兩個副本 Pod 都處於 Running
狀態,用 kubectl describe pod
查看更詳細的信息:
Controlled By
指明此 Pod 是由 ReplicaSet nginx-deployment-1260880958
創建。Events
記錄了 Pod 的啟動過程。如果操作失敗(比如 image 不存在),也能在這裏查看到原因。
總結一下這個過程:
用戶通過
kubectl
創建 Deployment。Deployment 創建 ReplicaSet。
ReplicaSet 創建 Pod。
從上圖也可以看出,對象的命名方式是:子對象的名字
= 父對象名字
+ 隨機字符串或數字
。
本節我們是通過 kubectl run
創建的 Deployment,下一節學習另一種更常用的方法。
書籍:
1.《每天5分鐘玩轉Docker容器技術》
https://item.jd.com/16936307278.html
2.《每天5分鐘玩轉OpenStack》
https://item.jd.com/12086376.html
用 Deployment 運行應用 - 每天5分鐘玩轉 Docker 容器技術(123)