您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(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ù)
## 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通過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é)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責(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)容。