1. 程式人生 > 其它 >Kubernetes 基礎概念

Kubernetes 基礎概念

Kubernetes(k8s)是一款開源的以容器為中心的,用於跨主機叢集自動部署(automating deployment),控制容器擴充套件/收縮(scaling)和管理容器化應用程式(management of containerized applications)的基礎平臺。

Kubernetes功能
自動配載(Automatic binpacking):在保證應用服務可用前提下,每個容器所佔用資源會根據實際情況與配置約束進行自動分配;

自我修復(Self-healing):如果容器出錯,在嘗試重啟失敗後它將會被替換與重新編排;k8s也會自動關閉由你定義為“不健康”的容器;只有“健康”的容器才會被用於提供應用服務;

橫向擴充套件(Horizontal scaling) : 可以通過一個簡單的指令、介面操作或CPU使用情況,來控制你的應用程式擴充套件或收縮;

服務發現與負載均衡(Service discovery and load balancing):無需修改你現有的應用程式便可使用“服務發現”;k8s為容器提供了一個虛擬網路環境,每個容器擁有獨立的IP地址與DNS名稱,使得他們之間可以相互訪問,提供了負載均衡的基礎。

自動部署與回滾(Automated rollouts and rollbacks):k8s支援滾動更新模式,能逐步替換當前環境的應用程式與配置,同時檢測整體應用服務執行情況,以確保不會在同一時刻終止所有容器,導致服務癱瘓;如果在部署過程出現問題,k8s將會回滾本次部署所有操作。

安全與配置管理(Secret and configuration management):在容器映象與異常資訊堆疊中不會暴露你的部署資訊、更新祕鑰以及應用程式配置。

儲存編排(Storage orchestration):k8s能掛接到你所選的儲存系統,無論是本地儲存、網路儲存、雲端儲存都支援。(如:GCPAWSNFSiSCSIGlusterCephCinderFlocker)

批處理(Batch execution):除了服務以外,k8s還能管理你的批處理與“CI workloads”;如果有需要可以在容器出錯時執行你的批處理指令。

容器技術的優勢
敏捷的建立與部署(Agile application creation and deployment)
持續式開發、整合與部署(Continuous development, integration, and deployment)
dev與ops職能分離(Dev and Ops separation of concerns)
統一開發、測試、生產環境(Environmental consistency across development, testing, and production)
可在單機與雲之間移植(Cloud and OS distribution portability)
以應用為中心的管理(Application-centric management)
鬆耦合、分散式、彈性計算,釋放微服務(Loosely coupled, distributed, elastic, liberated micro-services)
資源隔離(Resource isolation)
質量利用(Resource utilization)

Etcd:鍵值資料庫,在k8s中儘量使用SSD硬碟,注意備份,生產環境建議三個以上叢集節點;

參考:http://t.zoukankan.com/Leo_wl-p-6513008.html

Kube-APIServer:叢集的控制中樞,各個模組之間資訊互動都需要經過Kube-APIServer,同時它也是叢集管理、資源配置、整個叢集安全機制的入口。
Controller-Manager:叢集的狀態管理器,保證Pod或其他資源達到期望值,也是需要和APIServer進行通訊,在需要的時候建立、更新或刪除它所管理的資源。
Scheduler:叢集的排程中心,它會根據指定的一系列條件,選擇一個或一批最佳的節點,然後部署我們的Pod。
Etcd:鍵值資料庫,報錯一些叢集的資訊,一般生產環境中建議部署三個以上節點(奇數個)。
Kubelet:負責監聽節點上Pod的狀態,同時負責上報節點和節點上面Pod的狀態,負責與Master節點通訊,並管理節點上面的Pod。
Kube-proxy:負責Pod之間的通訊和負載均衡,將指定的流量分發到後端正確的機器.
Calico:符合CNI標準的網路外掛,給每個Pod生成一個唯一的IP地址,並且把每個節點當做一個路由器。Cilium
CoreDNS:用於Kubernetes叢集內部Service的解析,可以讓Pod把Service名稱解析成IP地址,然後通過Service的IP地址進行連線到對應的應用上。
Docker:容器引擎,負責對容器的管理。

檢視Kube-proxy工作模式:curl 127.0.0.1:10249/proxyMode
檢視IPVS規則:ipvsadm -L -n