為了幫助大家更好地理解 Kubernetes 架構,我們部署一個應用來演示各個組件之間是如何協作的。
執行命令
kubectl run httpd-app --image=httpd --replicas=2
等待一段時間,應用部署完成。
Kubernetes 部署了 deployment httpd-app
,有兩個副本 Pod,分別運行在 k8s-node1
和 k8s-node2
。
詳細討論整個部署過程。
① kubectl 發送部署請求到 API Server。
② API Server 通知 Controller Manager 創建一個 deployment 資源。
③ Scheduler 執行調度任務,將兩個副本 Pod 分發到 k8s-node1 和 k8s-node2。
④ k8s-node1 和 k8s-node2 上的 kubelet 在各自的節點上創建並運行 Pod。
補充兩點:
-
應用的配置和當前狀態信息保存在 etcd 中,執行
kubectl get pod
時 API Server 會從 etcd 中讀取這些數據。 -
flannel 會為每個 Pod 都分配 IP。因為沒有創建 service,目前 kube-proxy 還沒參與進來。
Kubernetes 架構就討論到這里。從下節開始,我們將通過實踐深入學習 Kubernetes 的各種特性。作為容器編排引擎,最重要也是最基本的功能當然是運行容器化應用。下節見。
書籍:
1.《每天5分鍾玩轉Docker容器技術》
https://item.jd.com/16936307278.html
2.《每天5分鍾玩轉OpenStack》
https://item.jd.com/12086376.html