溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

kubernetes中kubelet運(yùn)行機(jī)制的示例分析

發(fā)布時間:2021-12-24 16:15:46 來源:億速云 閱讀:119 作者:小新 欄目:云計(jì)算

這篇文章給大家分享的是有關(guān)kubernetes中kubelet運(yùn)行機(jī)制的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

一:簡介

在Kubernetes集群中,每個Node節(jié)點(diǎn)上都會啟動一個Kubelet服務(wù)進(jìn)行。該進(jìn)程用于處理Master節(jié)點(diǎn)下發(fā)到本節(jié)點(diǎn)的任務(wù),管理Pod及Pod中的容器。每個Kubelet進(jìn)程會在API SERVER上注冊節(jié)點(diǎn)自身信息,定期向Master節(jié)點(diǎn)匯報節(jié)點(diǎn)資源的使用情況,并通過cAdvise監(jiān)控容器和節(jié)點(diǎn)資源。

二:節(jié)點(diǎn)管理

節(jié)點(diǎn)通過設(shè)置kubelet的啟動參數(shù)“–register-node”,來決定是否向API Server注冊自己,默認(rèn)為true??梢酝ㄟ^kubelet –help查看該參數(shù)。

kubelet在啟動時通過API Server注冊節(jié)點(diǎn)信息,并定時向API Server發(fā)送節(jié)點(diǎn)的新信息,API Server在接收到這些消息后,將這些消息寫入etcd. 通過kubelet的啟動參數(shù)"--node-status-update-frequency"設(shè)置每隔多長時間向API Server報告節(jié)點(diǎn)狀態(tài),默認(rèn)10s.

kubelet配置參數(shù)

  1. ## kubelet (minion) config

  2. #

  3. ## The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces)

  4. KUBELET_ADDRESS="--address=10.116.82.28"

  5. #

  6. ## The port for the info server to serve on

  7. #KUBELET_PORT="--port=10250"

  8. #

  9. ## You may leave this blank to use the actual hostname

  10. KUBELET_HOSTNAME="--hostname-override=10.116.82.28"

  11. #

  12. ## location of the api-server

  13. #KUBELET_API_SERVER="--api-servers=http://10.116.137.196:8080"

  14. #

  15. ## pod infrastructure container

  16. #KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=sz-pg-oam-docker-hub-001.tendcloud.com/library/pod-infrastructure:rhel7"

  17. KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure"

  18. #

  19. ## Add your own!

  20. 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通過API Server Client使用Watch+List的方式監(jiān)聽“/registry/nodes/$當(dāng)前節(jié)點(diǎn)的名稱”和“/registry/pods”目錄,將獲取的信息同步到本地緩存中。
2.kubelet 監(jiān)聽etcd,所有針對Pod的操作將會被kubelet監(jiān)聽到。如果發(fā)現(xiàn)有新的綁定到本節(jié)點(diǎn)的Pod,則按照Pod清單的要求創(chuàng)建該P(yáng)od.
kubelet讀取監(jiān)聽到的信息,則做如下處理:
a.為該P(yáng)od創(chuàng)建一個數(shù)據(jù)目錄
b.從API Server讀取該P(yáng)od清單
c.為該P(yáng)od掛載外部卷
d.下載Pod用到的Secret
e.創(chuàng)建pause容器
f.創(chuàng)建應(yīng)用容器

四:容器健康檢查

對Pod的健康狀態(tài)檢查可以通過兩類探針來檢查:LivenessProbe和ReadinessProbe
1.LivenessProbe探針: 用于判斷容器是否存活,如果LivenessProbe探針探測到容器不健康,則kubelet將殺掉該容器,并根據(jù)容器的重啟策略做相應(yīng)的處理。如果一個容器不包含LivenessProbe探針,那么kubelet認(rèn)為該容器的LivenessProbe探針返回值永遠(yuǎn)是“Success”.

2.ReadinessProbe探針: 用于判斷容器是否啟動完成,可以接收請求。如果ReadinessProbe 探針檢測到失敗,則Pod的狀態(tài)將被修改。Endpoint Controller將從Service的Endpoint中刪除包括該容器所在Pod的Endpoint.

五:cAdvisor資源監(jiān)控

在Kubernetes集群中,應(yīng)用程序的執(zhí)行情況可以在不同的級別上監(jiān)測到,這些級別包括:容器,Pod,Service和整個集群。

1.Heapster項(xiàng)目為Kubernetes提供了一個基本的監(jiān)控平臺,它是集群級別的監(jiān)控。

2.cAdvisor是一個開源的分析容器資源使用率和性能特性的代理工具。cAdvisor被集成到Kubernetes代碼中,cAdvisor自動查找所有在其節(jié)點(diǎn)上的容器,自動采集CPU,內(nèi)存,文件系統(tǒng)和網(wǎng)絡(luò)使用的統(tǒng)計(jì)信息。cAdvisor通過它所在節(jié)點(diǎn)機(jī)的Root容器,采集并分析該節(jié)點(diǎn)的全面使用情況。

感謝各位的閱讀!關(guān)于“kubernetes中kubelet運(yùn)行機(jī)制的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI