kubectl
、kubeadm
?和?kubelet,
kube-proxy的概念和關系
一、kubeadm:K8s 集群的 “搭建工程師”
核心定位
如果把 K8s 集群比作一棟大樓,kubeadm
?就是負責 “打地基、搭框架” 的工程師,專門用來快速搭建 K8s 集群的工具。
具體工作內容
初始化集群骨架
- 啟動集群時,只需要一條命令(比如?
kubeadm init
),它就會自動:- 部署控制平面組件(如 API Server、Scheduler、Controller Manager);
- 配置網絡插件(讓容器能互相通信);
- 生成集群運行所需的證書和配置文件。
- 就像蓋樓時先搭好承重柱和橫梁,
kubeadm
?會確保集群的基礎架構能穩定運行。
- 啟動集群時,只需要一條命令(比如?
添加節點到集群
- 當需要擴展集群(比如增加更多服務器)時,
kubeadm join
?命令會生成一個 “入伙憑證”,新節點用這個憑證就能加入集群,就像往大樓里添加更多房間。
- 當需要擴展集群(比如增加更多服務器)時,
簡化環境依賴
- 自動處理 K8s 運行所需的依賴(如 Docker、containerd 容器運行時),不用手動逐個安裝配置,降低了搭建集群的門檻。
類比理解
kubeadm
?就像 “一鍵安裝包”,比如你想搭建一個論壇網站,不需要從零搭建服務器環境,用?kubeadm
?類似的工具能快速部署好論壇的基礎架構。
二、kubelet:節點上的 “容器管家”
核心定位
每個 K8s 節點(物理機或虛擬機)上都必須運行?kubelet
,它是節點的 “大管家”,負責管理節點上的所有容器。
具體工作內容
接收并執行指令
- 控制平面(如 API Server)會告訴?
kubelet
:“在這個節點上運行某個容器應用”,kubelet
?就會調用容器運行時(如 Docker、containerd)來啟動容器,就像管家按主人的要求安排任務。
- 控制平面(如 API Server)會告訴?
監控容器狀態
- 持續檢查容器是否在運行、資源使用情況(CPU、內存),如果容器掛了,會嘗試重啟;如果節點資源不足,會向控制平面匯報,避免過載。
節點與集群的 “橋梁”
- 收集節點的健康狀態、資源信息(如硬盤空間),反饋給控制平面,讓集群知道每個節點的 “健康情況”,以便調度任務。
類比理解
kubelet
?類似小區物業管家:
- 業主(控制平面)下達 “安排住戶(容器)入住” 的指令,管家負責找房間(節點資源)、安排入住(啟動容器);
- 平時監控住戶是否正常生活(容器運行狀態),有問題及時處理(重啟容器),并向業主匯報小區情況(節點狀態)。
三、kubectl:用戶的 “集群遙控器”
核心定位
kubectl
?是用戶與 K8s 集群交互的命令行工具,就像電視遙控器,通過它可以向集群發送各種操作指令。
具體工作內容
管理集群資源
- 用?
kubectl
?可以創建、刪除、查看各種 K8s 資源,比如:- 部署應用:
kubectl apply -f app.yaml
(根據配置文件啟動容器應用); - 查看狀態:
kubectl get pods
(查看所有運行的容器組); - 伸縮應用:
kubectl scale deployment my-app --replicas=5
(把應用副本數增加到 5 個)。
- 部署應用:
- 就像用遙控器切換電視頻道、調節音量,
kubectl
?讓用戶能靈活控制集群。
- 用?
調試與排查問題
- 當容器應用出問題時,用?
kubectl logs pod-name
?查看日志,或?kubectl exec -it pod-name sh
?進入容器內部調試,相當于用遙控器檢查電視哪里出了故障。
- 當容器應用出問題時,用?
配置集群參數
- 通過修改配置文件,用?
kubectl
?提交更新,比如調整應用的資源限制、更新鏡像版本等,實時修改集群的運行方式。
- 通過修改配置文件,用?
類比理解
kubectl
?就是用戶的 “集群遙控器”:想讓集群做什么,直接通過命令告訴它 —— 比如 “我要啟動一個微信服務”“我要看當前有多少個容器在運行”,所有操作都通過這個工具來傳達。
四、三者的協作關系:從 “搭建” 到 “管理” 的全流程
- 搭建階段:
kubeadm
?負責快速搭好集群框架,初始化控制平面和節點; - 運行階段:每個節點的?
kubelet
?負責管理本地容器,與控制平面通信; - 操作階段:用戶通過?
kubectl
?向集群發送指令,kubelet
?接收并執行,實現對容器應用的管理。
類比場景
- 建小區(集群):
kubeadm
?負責買地、建樓(初始化集群); - 小區運營:每個樓的管家(
kubelet
)管理住戶(容器),處理日常事務; - 業主操作:住戶(用戶)通過物業系統(
kubectl
)提交需求(如報修、搬家),管家接收并處理。
五,kube-proxy:集群網絡的 “交通指揮員”?
1. 核心定位:讓容器服務能被 “找到”
K8s 集群中,每個容器都有自己的 IP,但當容器被部署在不同節點上時,如何讓它們互相訪問?kube-proxy
就是解決這個問題的 “網絡管家”,負責實現服務的網絡通信和負載均衡。
2. 具體工作內容:三種 “交通指揮” 模式
模式 1:iptables 代理(默認)
就像在路口設置路牌,kube-proxy
用 Linux 的iptables
規則,將訪問服務 IP 的請求轉發到具體的容器 IP 上。例如,當用戶訪問 “微信服務” 的 IP 時,iptables
規則會告訴網絡:“把請求交給節點 A 上的微信容器 1 或節點 B 上的微信容器 2”,實現流量分發。模式 2:ipvs 代理(高性能場景)
比iptables
更高效的 “智能交通系統”,適合大規模集群。它維護一個服務到容器的映射表,像高速路的 ETC 系統一樣快速轉發流量,減少延遲。模式 3:userspace 代理(舊版本兼容)
相當于 “人工指揮交通”,所有流量先經過kube-proxy
進程再轉發給容器,性能較低,現在很少用。
3. 類比理解:快遞分揀中心
- 集群中的服務(如 Web 應用)像 “快遞公司總部”,有一個對外的地址(服務 IP);
kube-proxy
像分揀中心的工作人員,收到寄給 “總部” 的快遞(網絡請求)后,根據包裹信息(請求類型),把快遞送到具體的分店(容器實例),確保每個請求都能準確到達目的地。