什麼是 Kubernetes
Kubernetes 是 Google 開源的容器集群管理系統,其提供應用部署、維護、 擴展機制等功能,利用 Kubernetes 能方便地管理跨機器運行容器化的應用,其主要功能如下:
1、使用 Docker 對應用程序包裝 (package)、實例化 (instantiate)、運行 (run)。
2、 以集群的方式運行、管理跨機器的容器。
3、解決 Docker 跨機器容器之間的通訊問題。
4、Kubernetes 的自我修復機制使得容器集群總是運行在用戶期望的狀態。
當前 Kubernetes 支持 GCE、vShpere、CoreOS、OpenShift、Azure 等平臺,除此之外,也可以直接運行在物理機上。
Kubernetes 特點
- 可移植: 支持公有云,私有云,混合雲,多重雲(multi-cloud)
- 可擴展: 模塊化, 插件化, 可掛載, 可組合
- 自動化: 自動部署,自動重啟,自動複製,自動伸縮/擴展
Kubernetes 架構
Kubernetes借鑑了Borg的設計理念,Kubernetes的整體架構跟Borg非常像,如下圖所示:
Kubernetes主要由以下幾個核心組件組成:
- etcd保存了整個集群的狀態;
- apiserver提供了資源操作的唯一入口,並提供認證、授權、訪問控制、API註冊和發現等機制;
- controller manager負責維護集群的狀態,比如故障檢測、自動擴展、滾動更新等;
- scheduler負責資源的調度,按照預定的調度策略將Pod調度到相應的機器上;
- kubelet負責維護容器的生命週期,同時也負責Volume(CVI)和網絡(CNI)的管理;
- Container runtime負責鏡像管理以及Pod和容器的真正運行(CRI);
- kube-proxy負責為Service提供cluster內部的服務發現和負載均衡;
使用kubectl實現應用伸縮
使用Deployment擴展能確保在新的可用Node資源上創建Pods,縮小比例將減少Pod的數量到理想狀態。如果伸縮需求是0,將會終止Deployment指定的所有Pod;
運行應用將要考慮一些情況,需要將流量分配給所有實例。Service集成了負載均衡器,可以將網絡流量分配到Deployment暴露的所有Pod中。Service將使用Endpoints持續監控運行的Pod,用來確保僅將流量分配到可用的Pod。
閱讀更多 咱小二 的文章