Kubernetes Worker Node組件使用及說明
Kubernetes Worker Node組件
Kubernetes 集群由控制平面(Master)和工作節(jié)點(diǎn)(Worker Node)構(gòu)成。
在工作節(jié)點(diǎn)上,核心組件包括 kubelet、kube-proxy 與 Container Runtime。
這些組件各司其職,共同保障容器化應(yīng)用的穩(wěn)定運(yùn)行。
本文將詳細(xì)介紹這三個(gè)組件的職責(zé)、工作原理及它們?cè)谡麄€(gè) Kubernetes 集群中的作用。
工作節(jié)點(diǎn)概述
在 Kubernetes 集群中,工作節(jié)點(diǎn)負(fù)責(zé)運(yùn)行應(yīng)用的 Pod。每個(gè)工作節(jié)點(diǎn)不僅需要具備運(yùn)行容器的環(huán)境,還需要與控制平面保持通信,以便及時(shí)響應(yīng)調(diào)度決策、健康檢查及狀態(tài)上報(bào)。
工作節(jié)點(diǎn)核心組件主要包括:
- kubelet:作為節(jié)點(diǎn)代理,負(fù)責(zé)管理本節(jié)點(diǎn)上的 Pod 生命周期與健康狀態(tài)。
- kube-proxy:負(fù)責(zé)實(shí)現(xiàn)網(wǎng)絡(luò)代理和負(fù)載均衡,使得 Service 能夠?qū)⒘髁空_分發(fā)至后端 Pod。
- Container Runtime:提供容器的拉取、創(chuàng)建、啟動(dòng)和銷毀等基本功能,目前主流選擇有 Docker、containerd、CRI-O 等。
kubelet —— 節(jié)點(diǎn)的守護(hù)者
角色與職責(zé)
kubelet 是運(yùn)行在每個(gè)工作節(jié)點(diǎn)上的核心守護(hù)進(jìn)程,其主要任務(wù)包括:
- 注冊(cè)與心跳:?jiǎn)?dòng)后,kubelet 向 API Server 注冊(cè)當(dāng)前節(jié)點(diǎn),并定時(shí)發(fā)送心跳信息,報(bào)告節(jié)點(diǎn)和 Pod 的狀態(tài)。
- Pod 生命周期管理:根據(jù)從 API Server 下發(fā)的 Pod 規(guī)范(PodSpec),負(fù)責(zé)啟動(dòng)、監(jiān)控、重啟或終止容器,確保 Pod 達(dá)到預(yù)期狀態(tài)。
- 資源監(jiān)控:借助內(nèi)嵌工具(如 cAdvisor),實(shí)時(shí)收集節(jié)點(diǎn)和容器的資源使用情況(CPU、內(nèi)存、磁盤等),為調(diào)度和自愈機(jī)制提供數(shù)據(jù)支撐。
工作流程
- 獲取 Pod 配置
kubelet 通過 API Server 獲取需要在當(dāng)前節(jié)點(diǎn)上運(yùn)行的 Pod 配置(或通過靜態(tài) Pod 文件)。
- 管理容器
根據(jù) Pod 配置,調(diào)用 Container Runtime 啟動(dòng)或管理容器。
- 狀態(tài)匯報(bào)
定期向 API Server 上報(bào)節(jié)點(diǎn)和 Pod 的運(yùn)行狀態(tài),確??刂破矫婺芗皶r(shí)發(fā)現(xiàn)異常情況。
- 示例:
當(dāng)一個(gè) Pod 中的某個(gè)容器意外退出時(shí),kubelet 會(huì)檢測(cè)到異常并依據(jù)重啟策略嘗試重啟該容器,從而保證應(yīng)用持續(xù)可用。
citeturn0search4
kube-proxy —— 網(wǎng)絡(luò)流量的調(diào)度員
角色與職責(zé)
kube-proxy 運(yùn)行在每個(gè)工作節(jié)點(diǎn)上,主要負(fù)責(zé)以下任務(wù):
- 流量轉(zhuǎn)發(fā):基于 Service 定義的 ClusterIP、端口映射等信息,維護(hù)本地的網(wǎng)絡(luò)規(guī)則(如 iptables 或 IPVS 規(guī)則),將進(jìn)入節(jié)點(diǎn)的流量正確轉(zhuǎn)發(fā)到后端的 Pod。
- 負(fù)載均衡:當(dāng) Service 后端有多個(gè) Pod 時(shí),kube-proxy 通過輪詢或其他負(fù)載均衡策略,將請(qǐng)求均勻分發(fā)到各個(gè) Pod 上。
- 動(dòng)態(tài)更新:實(shí)時(shí)監(jiān)聽 API Server 中 Service 和 Endpoints 的變更,動(dòng)態(tài)調(diào)整網(wǎng)絡(luò)轉(zhuǎn)發(fā)規(guī)則,確保流量路由的準(zhǔn)確性。
工作原理
- 規(guī)則生成
kube-proxy 監(jiān)聽 Kubernetes API Server,獲取最新的 Service 配置及其對(duì)應(yīng)的 Endpoints 列表。
- 規(guī)則應(yīng)用
根據(jù)獲取的配置信息,生成或更新 iptables/ipvs 規(guī)則,以便將到達(dá)指定 ClusterIP 的流量轉(zhuǎn)發(fā)至后端 Pod。
- 流量調(diào)度
客戶端訪問 Service 時(shí),規(guī)則生效后流量自動(dòng)路由到對(duì)應(yīng)的 Pod,實(shí)現(xiàn)內(nèi)部負(fù)載均衡。
- 示例:
創(chuàng)建一個(gè) Service 后,kube-proxy 將在每個(gè)節(jié)點(diǎn)上配置相應(yīng)的轉(zhuǎn)發(fā)規(guī)則,使得訪問 Service IP 的請(qǐng)求自動(dòng)分發(fā)到運(yùn)行該 Service 的多個(gè) Pod。
citeturn0search1
Container Runtime —— 容器的運(yùn)行時(shí)環(huán)境
角色與職責(zé)
Container Runtime 是在節(jié)點(diǎn)上真正執(zhí)行容器任務(wù)的底層軟件,其主要職責(zé)包括:
- 鏡像拉取:從鏡像倉(cāng)庫(kù)中下載應(yīng)用所需的鏡像。
- 容器創(chuàng)建與啟動(dòng):基于鏡像創(chuàng)建容器實(shí)例,并根據(jù)配置啟動(dòng)容器。
- 容器管理:監(jiān)控容器的運(yùn)行狀態(tài)、資源消耗,并在必要時(shí)終止或銷毀容器。
- 與 kubelet 通信:通過 Container Runtime Interface(CRI),接受 kubelet 下發(fā)的容器管理命令。
主要實(shí)現(xiàn)
目前 Kubernetes 支持多種 Container Runtime,如:
- Docker:曾經(jīng)是默認(rèn)的運(yùn)行時(shí),但隨著 dockershim 的逐步棄用,已不再是未來的主流選擇。
- containerd:作為一個(gè)輕量級(jí)、高效的運(yùn)行時(shí),已被廣泛采用。
- CRI-O:專為 Kubernetes 設(shè)計(jì),提供了更高效的容器管理方案。
示例:
在使用 containerd 作為運(yùn)行時(shí)時(shí),kubelet 通過 CRI 調(diào)用 containerd 的 API 來拉取鏡像并啟動(dòng) Pod 內(nèi)的容器,整個(gè)過程高度標(biāo)準(zhǔn)化與解耦。
citeturn0search10
三者協(xié)同工作
交互流程
- kubelet 與 Container Runtime
kubelet 調(diào)用 CRI 接口,向 Container Runtime 發(fā)送容器啟動(dòng)、停止、監(jiān)控等指令,實(shí)現(xiàn) Pod 內(nèi)容器的生命周期管理。 - kubelet 與 kube-proxy
雖然 kubelet 主要負(fù)責(zé)容器管理,但通過上報(bào)節(jié)點(diǎn)狀態(tài)與資源信息,為 kube-proxy 等網(wǎng)絡(luò)組件提供參考,確保服務(wù)的穩(wěn)定通信。 - 整體監(jiān)控
三者共同配合,使得控制平面能夠?qū)崟r(shí)感知節(jié)點(diǎn)的健康狀況和資源使用,從而做出動(dòng)態(tài)調(diào)度和自愈決策。
故障自愈
- 當(dāng)某個(gè)容器因故障退出時(shí),kubelet 及時(shí)重啟容器;
- 如果網(wǎng)絡(luò)規(guī)則失效,kube-proxy 自動(dòng)調(diào)整;
- 當(dāng)容器運(yùn)行時(shí)出現(xiàn)異常,kubelet 可依賴 CRI 接口發(fā)起重試或更換鏡像等操作。
總結(jié)
在 Kubernetes Worker Node 中,kubelet、kube-proxy 與 Container Runtime 各自承擔(dān)著關(guān)鍵職責(zé),共同構(gòu)成了工作節(jié)點(diǎn)的基礎(chǔ):
- kubelet 確保每個(gè)節(jié)點(diǎn)上 Pod 的期望狀態(tài),進(jìn)行生命周期管理與狀態(tài)上報(bào)。
- kube-proxy 保證網(wǎng)絡(luò)流量的正確路由與負(fù)載均衡,支持 Service 的透明訪問。
- Container Runtime 負(fù)責(zé)容器的實(shí)際運(yùn)行,為應(yīng)用提供標(biāo)準(zhǔn)化的執(zhí)行環(huán)境。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Rancher通過界面管理K8s平臺(tái)的圖文步驟詳解
這篇文章主要為大家介紹了Rancher通過界面管理K8s平臺(tái)通過詳細(xì)的圖文進(jìn)行步驟講解,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03
CentOS 7下YUM 本地倉(cāng)庫(kù)的搭建詳細(xì)步驟
這篇文章主要介紹了CentOS 7下YUM 本地倉(cāng)庫(kù)的搭建詳細(xì)步驟的相關(guān)資料,希望通過本文能幫助到大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-09-09
k8s跨服務(wù)調(diào)用入門到實(shí)戰(zhàn)示例詳解
這篇文章主要為大家介紹了k8s跨服務(wù)調(diào)用入門到實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
K8S?使用EFK日志的統(tǒng)一管理(詳細(xì)步驟)
在Kubernetes中,EFK是一種常見的日志統(tǒng)一管理方案,EFK堆棧允許你收集、存儲(chǔ)、搜素、分析和可視化容器應(yīng)用程序的日志,下面是如何在Kubernetes中使用EFK實(shí)現(xiàn)日志統(tǒng)一管理的詳細(xì)步驟,感興趣的朋友一起看看吧2025-01-01
Linux安裝Kubernetes(k8s)超詳細(xì)教程
Kubernetes是一個(gè)輕便的和可擴(kuò)展的開源平臺(tái),用于管理容器化應(yīng)用和服務(wù),通過Kubernetes能夠進(jìn)行應(yīng)用的自動(dòng)化部署和擴(kuò)縮容,這篇文章主要給大家介紹了關(guān)于Linux安裝Kubernetes(k8s)的相關(guān)資料,需要的朋友可以參考下2024-07-07
Kubernetes中創(chuàng)建命名空間實(shí)現(xiàn)方法
這篇文章主要為大家介紹了Kubernetes中創(chuàng)建命名空間實(shí)現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
K8S?實(shí)用工具之合并多個(gè)kubeconfig實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了K8S?實(shí)用工具之合并多個(gè)kubeconfig實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
IoT邊緣集群Kubernetes?Events告警通知實(shí)現(xiàn)示例
這篇文章主要為大家介紹了IoT邊緣集群Kubernetes?Events告警通知實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02

