国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【博客694】k8s kubelet 狀態(tài)更新機(jī)制

這篇具有很好參考價(jià)值的文章主要介紹了【博客694】k8s kubelet 狀態(tài)更新機(jī)制。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

k8s kubelet 狀態(tài)更新機(jī)制

場(chǎng)景:

當(dāng) Kubernetes 中 Node 節(jié)點(diǎn)出現(xiàn)狀態(tài)異常的情況下,節(jié)點(diǎn)上的 Pod 會(huì)被重新調(diào)度到其他節(jié)點(diǎn)上去,但是有的時(shí)候我們會(huì)發(fā)現(xiàn)節(jié)點(diǎn) Down 掉以后,Pod 并不會(huì)立即觸發(fā)重新調(diào)度,這實(shí)際上就是和 Kubelet 的狀態(tài)更新機(jī)制密切相關(guān)的,Kubernetes 提供了一些參數(shù)配置來(lái)觸發(fā)重新調(diào)度的時(shí)間

kubelet 狀態(tài)更新的基本流程:

  • 1、kubelet 自身會(huì)定期更新狀態(tài)到 apiserver,通過參數(shù)–node-status-update-frequency指定上報(bào)頻率,默認(rèn)是 10s 上報(bào)一次。
  • 2、kube-controller-manager 會(huì)每隔–node-monitor-period時(shí)間去檢查 kubelet 的狀態(tài),默認(rèn)是 5s。
  • 3、當(dāng) node 失聯(lián)一段時(shí)間后,kubernetes 判定 node 為 notready 狀態(tài),這段時(shí)長(zhǎng)通過–node-monitor-grace-period參數(shù)配置,默認(rèn) 40s。
  • 4、當(dāng) node 失聯(lián)一段時(shí)間后,kubernetes 判定 node 為 unhealthy 狀態(tài),這段時(shí)長(zhǎng)通過–node-startup-grace-period參數(shù)配置,默認(rèn) 1m0s。
  • 5、當(dāng) node 失聯(lián)一段時(shí)間后,kubernetes 開始刪除原 node 上的 pod,這段時(shí)長(zhǎng)是通過–pod-eviction-timeout參數(shù)配置,默認(rèn) 5m0s。

kube-controller-manager 和 kubelet 是異步工作的,這意味著延遲可能包括任何的網(wǎng)絡(luò)延遲、apiserver 的延遲、etcd 延遲,一個(gè)節(jié)點(diǎn)上的負(fù)載引起的延遲等等。因此,如果–node-status-update-frequency設(shè)置為 5s,那么實(shí)際上 etcd 中的數(shù)據(jù)變化會(huì)需要 6-7s,甚至更長(zhǎng)時(shí)間。

注意:

  • kubelet 在更新狀態(tài)失敗時(shí),會(huì)進(jìn)行nodeStatusUpdateRetry次重試,默認(rèn)為 5 次。

  • kubelet 會(huì)在函數(shù)tryUpdateNodeStatus中嘗試進(jìn)行狀態(tài)更新。Kubelet 使用了 Golang 中的http.Client()方法,但是沒有指定超時(shí)時(shí)間,因此,如果 API Server 過載時(shí),當(dāng)建立 TCP 連接時(shí)可能會(huì)出現(xiàn)一些故障。

  • 因此,在nodeStatusUpdateRetry * --node-status-update-frequency時(shí)間后才會(huì)更新一次節(jié)點(diǎn)狀態(tài)。

  • 同時(shí),Kubernetes 的 controller manager 將嘗試每–node-monitor-period時(shí)間周期內(nèi)檢查nodeStatusUpdateRetry次。在–node-monitor-grace-period之后,會(huì)認(rèn)為節(jié)點(diǎn) unhealthy,然后會(huì)在–pod-eviction-timeout后刪除 Pod。

  • kube proxy 有一個(gè) watcher API,一旦 Pod 被驅(qū)逐了,kube proxy 將會(huì)通知更新節(jié)點(diǎn)的 iptables 規(guī)則,將 Pod 從 Service 的 Endpoints 中移除,這樣就不會(huì)訪問到來(lái)自故障節(jié)點(diǎn)的 Pod 了。

如何配置:

對(duì)于這些參數(shù)的配置,需要根據(jù)不通的集群規(guī)模場(chǎng)景來(lái)進(jìn)行配置。

社區(qū)默認(rèn)的配置:

  • –node-status-update-frequency 10s
  • –node-monitor-period 5s
  • –node-monitor-grace-period 40s
  • –pod-eviction-timeout 5m

快速更新和快速響應(yīng):

  • –node-status-update-frequency 4s
  • –node-monitor-period 2s
  • –node-monitor-grace-period 20s
  • –pod-eviction-timeout 30s

在這種情況下,Pod 將在 50s 被驅(qū)逐,因?yàn)樵摴?jié)點(diǎn)在 20s 后被視為 Down 掉了,–pod-eviction-timeout在 30s 之后發(fā)生,但是,這種情況會(huì)給 etcd 產(chǎn)生很大的開銷,因?yàn)槊總€(gè)節(jié)點(diǎn)都會(huì)嘗試每 2s 更新一次狀態(tài)。

如果環(huán)境有 1000 個(gè)節(jié)點(diǎn),那么每分鐘將有 15000 次節(jié)點(diǎn)更新操作,這可能需要大型 etcd 容器甚至是 etcd 的專用節(jié)點(diǎn)。

如果我們計(jì)算嘗試次數(shù),則除法將給出 5,但實(shí)際上每次嘗試的 nodeStatusUpdateRetry 嘗試將從 3 到 5。 由于所有組件的延遲,嘗試總次數(shù)將在 15 到 25 之間變化。

中等更新和平均響應(yīng):

  • –node-status-update-frequency 20s
  • –node-monitor-period 5s
  • –node-monitor-grace-period 2m
  • –pod-eviction-timeout 1m

這種場(chǎng)景下會(huì) 20s 更新一次 node 狀態(tài),controller manager 認(rèn)為 node 狀態(tài)不正常之前,會(huì)有 2m60/205=30 次的 node 狀態(tài)更新,Node 狀態(tài)為 down 之后 1m,就會(huì)觸發(fā)驅(qū)逐操作。

如果有 1000 個(gè)節(jié)點(diǎn),1 分鐘之內(nèi)就會(huì)有 60s/20s*1000=3000 次的節(jié)點(diǎn)狀態(tài)更新操作。

低更新和慢響應(yīng):

  • –node-status-update-frequency 1m
  • –node-monitor-period 5s
  • –node-monitor-grace-period 5m
  • –pod-eviction-timeout 1m

Kubelet 將會(huì) 1m 更新一次節(jié)點(diǎn)的狀態(tài),在認(rèn)為不健康之后會(huì)有 5m/1m*5=25 次重試更新的機(jī)會(huì)。Node 為不健康的時(shí)候,1m 之后 pod 開始被驅(qū)逐。

更多細(xì)節(jié)參考官方文檔:

https://github.com/kubernetes-sigs/kubespray/blob/master/docs/kubernetes-reliability.md文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-645621.html

到了這里,關(guān)于【博客694】k8s kubelet 狀態(tài)更新機(jī)制的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 云原生Kubernetes:K8S安全機(jī)制

    云原生Kubernetes:K8S安全機(jī)制

    目錄 一、理論 1.K8S安全機(jī)制 2.Authentication認(rèn)證 3.Authorization授權(quán) 4.Admission Control準(zhǔn)入控制 5.User訪問案例 6.ServiceAccount訪問案例 二、實(shí)驗(yàn) 1.Admission Control準(zhǔn)入控制 2.User訪問案例 3.ServiceAccount訪問案例 三、問題 1.生成資源報(bào)錯(cuò) 2.鏡像拉取失敗 四、總結(jié) (1)概念 Kubernetes 作為一個(gè)分

    2024年02月07日
    瀏覽(29)
  • 【Kubernetes】K8s 查看 Pod 的狀態(tài)

    NAME :Pod 的名稱。 READY :代表 Pod 里面有幾個(gè)容器,前面是啟動(dòng)的,后面是總數(shù), 1 / 1 1/1 1/1 。 STATUS :就是當(dāng)前 Pod 狀態(tài),最常見的就是 Running 正在運(yùn)行,最期望的狀態(tài),只要不是 Running 的就說明有問題,就算是 Running 的就不一定沒有問題。 狀態(tài) 說明 Pending 掛起 在執(zhí)行創(chuàng)建

    2024年01月15日
    瀏覽(138)
  • 【kubernetes】k8s中的選主機(jī)制

    1 為什么需要leader-election? 在集群中存在某種業(yè)務(wù)場(chǎng)景,一批相同功能的進(jìn)程同時(shí)運(yùn)行,但是同一時(shí)刻,只能有一個(gè)工作,只有當(dāng)正在工作的進(jìn)程異常時(shí),才會(huì)由另一個(gè)進(jìn)程進(jìn)行接管。這種業(yè)務(wù)邏輯通常用于實(shí)現(xiàn)一主多從。 如果有人認(rèn)為,傳統(tǒng)應(yīng)用需要部署多個(gè)通常是為了容

    2024年02月07日
    瀏覽(21)
  • 云上攻防-云原生篇&;Kubernetes&;K8s安全&;API&;Kubelet未授權(quán)訪問&;容器執(zhí)行

    云上攻防-云原生篇&;Kubernetes&;K8s安全&;API&;Kubelet未授權(quán)訪問&;容器執(zhí)行

    curl -XPOST -k “https://192.168.139.132:10250/run///” -d “cmd=id” 執(zhí)行的命令是test03容器里的命令,需要進(jìn)行容器逃逸。 1、攻擊8080端口:API Server(Master)未授權(quán)訪問 舊版本的k8s的API Server默認(rèn)會(huì)開啟兩個(gè)端口:8080和6443。 6443是安全端口,安全端口使用TLS加密;但是8080端口無(wú)需認(rèn)證,

    2024年04月22日
    瀏覽(71)
  • k8s部署解成功解決node節(jié)點(diǎn)一直處于NotReady狀態(tài)的問題,報(bào)錯(cuò)failed to load Kubelet config file /var/lib/kubelet/config.yaml

    k8s部署解成功解決node節(jié)點(diǎn)一直處于NotReady狀態(tài)的問題,報(bào)錯(cuò)failed to load Kubelet config file /var/lib/kubelet/config.yaml

    我在部署k8s的時(shí)候host1節(jié)點(diǎn)一直顯示NotReady 報(bào)錯(cuò)便報(bào),直接經(jīng)典看日志解決問題思路哈哈哈 看日志找報(bào)錯(cuò)點(diǎn),找問題解決問題,思路一定要清晰。 在host1節(jié)點(diǎn)中查看報(bào)錯(cuò)信息,代碼: 由日志信息可知,報(bào)錯(cuò)原因是不能從/var/llib/kubelet/config.yaml下載到kubelet的配置。 錯(cuò)誤原因估計(jì)

    2024年02月11日
    瀏覽(22)
  • 【博客682】k8s apiserver bookmarks機(jī)制以更高效檢測(cè)變更

    【博客682】k8s apiserver bookmarks機(jī)制以更高效檢測(cè)變更

    List-Watch 是kubernetes中server和client通信的最核心的機(jī)制, 比如說api-server監(jiān)聽etcd, kubelet監(jiān)聽api-server, scheduler監(jiān)聽api-server等等,其實(shí)其他模塊監(jiān)聽api-server相當(dāng)于監(jiān)聽etcd,因?yàn)樵趉8s的設(shè)計(jì)中,只有api-server能跟etcd通信,其他模塊需要etcd的數(shù)據(jù)就只好監(jiān)聽api-server了。 etcd默認(rèn)保留

    2024年02月15日
    瀏覽(25)
  • 【博客687】k8s informer的list-watch機(jī)制剖析

    client-go中的reflector模塊首先會(huì)list apiserver獲取某個(gè)資源的全量信息,然后根據(jù)list到的rv來(lái)watch資源的增量信息。希望使用client-go編寫的控制器組件在與apiserver發(fā)生連接異常時(shí),盡量的re-watch資源而不是re-list informer的list-watch邏輯主要做三個(gè)事情: 1、List部分邏輯:設(shè)置分頁(yè)參數(shù)

    2024年02月14日
    瀏覽(11)
  • Kubernetes基礎(chǔ)(二十一)-k8s的服務(wù)發(fā)現(xiàn)機(jī)制

    Kubernetes(K8s)是一個(gè)強(qiáng)大的容器編排平臺(tái),提供了豐富的功能來(lái)簡(jiǎn)化容器化應(yīng)用的管理。其中之一重要的特性就是服務(wù)發(fā)現(xiàn)機(jī)制,它使得應(yīng)用程序能夠在K8s集群中動(dòng)態(tài)地發(fā)現(xiàn)和訪問其他服務(wù)。本文將深入研究K8s中的服務(wù)發(fā)現(xiàn)機(jī)制,探討其原理、使用方法以及通過詳細(xì)的示例演

    2024年02月20日
    瀏覽(20)
  • 【K8S】Kubernetes 中有狀態(tài)的資源對(duì)象——StatefulSet

    現(xiàn)在基本上很多服務(wù)中的應(yīng)用都是有狀態(tài)的,比如MySQL數(shù)據(jù)庫(kù)、Redis等,因?yàn)槠渲械臄?shù)據(jù)在不斷地變化,所以這些應(yīng)用每個(gè)時(shí)刻都處于一個(gè)不同的狀態(tài)?;蛘咭粋€(gè)系統(tǒng)中存在多個(gè)不同的應(yīng)用,這些應(yīng)用存在一定的依賴關(guān)系。例如一個(gè)博客服務(wù),該服務(wù)中包含了Redis緩存和MySQL數(shù)

    2024年02月04日
    瀏覽(27)
  • Kubernetes技術(shù)--k8s核心技術(shù)集群的安全機(jī)制RBAC

    1.引入 我們?cè)谠L問k8s的集群的時(shí)候,需要經(jīng)過一下幾個(gè)步驟: -a: 認(rèn)證 ?? -1 ). 傳輸安全:對(duì)外是不暴露端口:8080,只能夠在內(nèi)部訪問,對(duì)外使用的是6443端口。 ?? -2). 客戶端認(rèn)證的常用幾種方式: -https 證書 基于ca證書 -https token 認(rèn)證 通過token識(shí)別用戶 -https

    2024年02月10日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包