共計(jì) 2580 個(gè)字符,預(yù)計(jì)需要花費(fèi) 7 分鐘才能閱讀完成。
這篇文章給大家分享的是有關(guān) kubernetes 中 kubelet 運(yùn)行機(jī)制的示例分析的內(nèi)容。丸趣 TV 小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨丸趣 TV 小編過(guò)來(lái)看看吧。
一:簡(jiǎn)介
在 Kubernetes 集群中,每個(gè) Node 節(jié)點(diǎn)上都會(huì)啟動(dòng)一個(gè) Kubelet 服務(wù)進(jìn)行。該進(jìn)程用于處理 Master 節(jié)點(diǎn)下發(fā)到本節(jié)點(diǎn)的任務(wù),管理 Pod 及 Pod 中的容器。每個(gè) Kubelet 進(jìn)程會(huì)在 API SERVER 上注冊(cè)節(jié)點(diǎn)自身信息,定期向 Master 節(jié)點(diǎn)匯報(bào)節(jié)點(diǎn)資源的使用情況,并通過(guò) cAdvise 監(jiān)控容器和節(jié)點(diǎn)資源。
二:節(jié)點(diǎn)管理
節(jié)點(diǎn)通過(guò)設(shè)置 kubelet 的啟動(dòng)參數(shù)“–register-node”,來(lái)決定是否向 API Server 注冊(cè)自己,默認(rèn)為 true。可以通過(guò) kubelet –help 查看該參數(shù)。
kubelet 在啟動(dòng)時(shí)通過(guò) API Server 注冊(cè)節(jié)點(diǎn)信息,并定時(shí)向 API Server 發(fā)送節(jié)點(diǎn)的新信息,API Server 在接收到這些消息后,將這些消息寫(xiě)入 etcd. 通過(guò) kubelet 的啟動(dòng)參數(shù) –node-status-update-frequency 設(shè)置每隔多長(zhǎng)時(shí)間向 API Server 報(bào)告節(jié)點(diǎn)狀態(tài),默認(rèn) 10s.
kubelet 配置參數(shù)
## kubelet (minion) config
#
## The address for the info server to serve on (set to 0.0.0.0 or for all interfaces)
KUBELET_ADDRESS= –address=10.116.82.28
#
## The port for the info server to serve on
#KUBELET_PORT= –port=10250
#
## You may leave this blank to use the actual hostname
KUBELET_HOSTNAME= –hostname-override=10.116.82.28
#
## location of the api-server
#KUBELET_API_SERVER= –api-servers=http://10.116.137.196:8080
#
## pod infrastructure container
#KUBELET_POD_INFRA_CONTAINER= –pod-infra-container-image=sz-pg-oam-docker-hub-001.tendcloud.com/library/pod-infrastructure:rhel7
KUBELET_POD_INFRA_CONTAINER= –pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure
#
## Add your own!
KUBELET_ARGS= –cgroup-driver=systemd –cluster-dns=10.254.0.2 –experimental-bootstrap-kubeconfig=/etc/kubernetes/bootstrap.kubeconfig –kubeconfig=/etc/kubernetes/kubelet.kubeconfig –require-kubeconfig –cert-dir=/etc/kubernetes/ssl –cluster-domain=cluster.local. –hairpin-mode promiscuous-bridge –serialize-image-pulls=false –runtime-cgroups=/systemd/system.slice –kubelet-cgroups=/systemd/system.slice
三:Pod 管理
1.kubelet 通過(guò) API Server Client 使用 Watch+List 的方式監(jiān)聽(tīng)“/registry/nodes/$ 當(dāng)前節(jié)點(diǎn)的名稱(chēng)”和“/registry/pods”目錄,將獲取的信息同步到本地緩存中。
2.kubelet 監(jiān)聽(tīng) etcd, 所有針對(duì) Pod 的操作將會(huì)被 kubelet 監(jiān)聽(tīng)到。如果發(fā)現(xiàn)有新的綁定到本節(jié)點(diǎn)的 Pod, 則按照 Pod 清單的要求創(chuàng)建該 Pod.
kubelet 讀取監(jiān)聽(tīng)到的信息,則做如下處理:
a. 為該 Pod 創(chuàng)建一個(gè)數(shù)據(jù)目錄
b. 從 API Server 讀取該 Pod 清單
c. 為該 Pod 掛載外部卷
d. 下載 Pod 用到的 Secret
e. 創(chuàng)建 pause 容器
f. 創(chuàng)建應(yīng)用容器
四:容器健康檢查
對(duì) Pod 的健康狀態(tài)檢查可以通過(guò)兩類(lèi)探針來(lái)檢查:LivenessProbe 和 ReadinessProbe
1.LivenessProbe 探針:用于判斷容器是否存活,如果 LivenessProbe 探針探測(cè)到容器不健康,則 kubelet 將殺掉該容器,并根據(jù)容器的重啟策略做相應(yīng)的處理。如果一個(gè)容器不包含 LivenessProbe 探針,那么 kubelet 認(rèn)為該容器的 LivenessProbe 探針?lè)祷刂涤肋h(yuǎn)是“Success”.
2.ReadinessProbe 探針: 用于判斷容器是否啟動(dòng)完成,可以接收請(qǐng)求。如果 ReadinessProbe 探針檢測(cè)到失敗,則 Pod 的狀態(tài)將被修改。Endpoint Controller 將從 Service 的 Endpoint 中刪除包括該容器所在 Pod 的 Endpoint.
五:cAdvisor 資源監(jiān)控
在 Kubernetes 集群中,應(yīng)用程序的執(zhí)行情況可以在不同的級(jí)別上監(jiān)測(cè)到,這些級(jí)別包括:容器,Pod,Service 和整個(gè)集群。
1.Heapster 項(xiàng)目為 Kubernetes 提供了一個(gè)基本的監(jiān)控平臺(tái),它是集群級(jí)別的監(jiān)控。
2.cAdvisor 是一個(gè)開(kāi)源的分析容器資源使用率和性能特性的代理工具。cAdvisor 被集成到 Kubernetes 代碼中,cAdvisor 自動(dòng)查找所有在其節(jié)點(diǎn)上的容器,自動(dòng)采集 CPU,內(nèi)存,文件系統(tǒng)和網(wǎng)絡(luò)使用的統(tǒng)計(jì)信息。cAdvisor 通過(guò)它所在節(jié)點(diǎn)機(jī)的 Root 容器,采集并分析該節(jié)點(diǎn)的全面使用情況。
感謝各位的閱讀!關(guān)于“kubernetes 中 kubelet 運(yùn)行機(jī)制的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!