K8s集群核心組件全解析:從架構(gòu)設(shè)計到最佳實踐
圖片
控制平面組件
1. API Server
API Server是整個集群的統(tǒng)一入口,負責(zé)處理所有REST API請求。它實現(xiàn)了認證、授權(quán)、準入控制等重要安全機制。
高級特性:
? 支持水平擴展
? 提供了Watch機制,支持增量更新
? 實現(xiàn)了RBAC細粒度權(quán)限控制
?? 注意事項:在高可用架構(gòu)中,建議至少部署3個API Server實例,并通過負載均衡確保服務(wù)可用性。
2. etcd
etcd是集群的數(shù)據(jù)庫,采用鍵值對格式存儲集群的所有配置信息和狀態(tài)數(shù)據(jù)。
核心特性:
? 強一致性(基于Raft協(xié)議)
? 提供watch機制
? 支持數(shù)據(jù)加密存儲
?? 注意事項:生產(chǎn)環(huán)境中,etcd至少需要3個節(jié)點構(gòu)建高可用集群,并且建議使用SSD存儲。
3. Controller Manager
Controller Manager是集群的大腦,負責(zé)維護集群的狀態(tài),比如故障檢測、自動擴展、滾動更新等。
主要控制器:
? ReplicaSet Controller:維護Pod副本數(shù)
? Node Controller:管理節(jié)點狀態(tài)
? Endpoint Controller:服務(wù)發(fā)現(xiàn)相關(guān)
? ServiceAccount Controller:管理默認賬戶
?? 注意事項:不同控制器的循環(huán)周期可以通過參數(shù)調(diào)整,需要根據(jù)集群規(guī)模合理設(shè)置。
4. Scheduler
Scheduler負責(zé)Pod的調(diào)度決策,通過復(fù)雜的算法選擇最適合的Node運行Pod。
調(diào)度流程:
新建Pod過濾階段打分階段綁定階段Pod運行
核心功能:
? 資源需求和節(jié)點資源匹配
? 親和性/反親和性調(diào)度
? 污點容忍度檢查
?? 注意事項:可以通過自定義調(diào)度器擴展調(diào)度策略,滿足特定場景需求。
工作節(jié)點組件(Worker Node)
1. Kubelet
Kubelet是每個節(jié)點的agent,負責(zé)維護容器的生命周期。
核心職責(zé):
? 接收并執(zhí)行Master的指令
? 管理容器和鏡像
? 上報節(jié)點和Pod狀態(tài)
?? 注意事項:建議對Kubelet的資源預(yù)留進行合理配置,避免節(jié)點資源耗盡。
2. Container Runtime
容器運行時引擎,負責(zé)真正的容器創(chuàng)建和管理工作。
支持的運行時:
? Containerd(推薦)
? CRI-O
? Docker(已棄用)
?? 注意事項:建議使用Containerd,它更輕量且性能更好。
3. Kube-proxy
Kube-proxy負責(zé)集群的網(wǎng)絡(luò)代理,實現(xiàn)了Service的抽象。
工作模式:
? iptables(默認)
? IPVS(高性能)
? userspace(已棄用)
?? 注意事項:大規(guī)模集群建議使用IPVS模式,性能更好。