亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

k8s之內部異常(節點異常)

2024-09-27 09:20:49
217
0

1.k8s集(ji)群節點notready狀態的幾種情況(kuang)

情(qing)況1: 剛安(an)裝好k8s集群的node節點notready

現象:node節點(dian)notready,查看coredns的(de)pod狀態(tai)為pending

可能原(yuan)因: 可(ke)能是沒有部(bu)署網絡插件(calicoflannel),需(xu)要(yao)安裝網絡(luo)插件

情況2k8s運行一段時間后(hou),node節點notready

可能原因(yin):

(1).查看node節點宿主機(ji)的網(wang)絡情況(kuang)、磁(ci)盤(pan)情(qing)況、內(nei)存情(qing)況、cpu情況,查看資源是否足夠

(2).查看node節點的(de)kubelet服務是否正常

如果node節(jie)點的kubelet服務不正常,也會顯示notready狀態(tai)

(3).查看node節點的詳細信息排(pai)查原因(yin)

#kubectl describe node node

 

2.pod的幾種調度方式

當我們發送請求創建pod,調度器就會把pod調(diao)度到合適的(de)物理節點(dian),大致分為以下過程:

1).Scheduler根據預選策略和優(you)選函(han)數,選擇合適node節點調度。

a).預選(xuan)階段(Predicates):過濾節點,調度(du)器用一組規則過濾掉(diao)不(bu)符合要求的node節點,比如pod設置了資源的request,那么可(ke)用(yong)資源比pod需要(yao)資源少的(de)主機顯(xian)然就會被過濾掉

b).優選階段(duan)(Priorities):為節點的優先(xian)級(ji)打分,將上一階段過濾出來的node列表進行(xing)打分(fen),調度器會考慮一(yi)些整體的優化策略,比(bi)如把deployment控(kong)制的多(duo)個pod 副本盡量分布(bu)到不同的主機上,使用最低負(fu)載的(de)主機等等策略

2).可以通過定義(yi)nodeName(一般不經過(guo)調度器,使用很少)nodeSelector進行調度。

3).可以根(gen)據節點親和(he)性(xing)進(jin)行調度。

nodeAffinity: 節(jie)點(dian)親和(he)性,與(yu)nodeSelector作用(yong)一樣,但(dan)相比更靈活,滿(man)足更多條件(jian):

-匹(pi)配有更多的(de)(de)邏輯組(zu)合,不只是(shi)字符串的(de)(de)完全(quan)相(xiang)等。

-調(diao)度分為軟策略(lve)和硬策略(lve),而不是硬性要求。

a).硬(required): 必須滿足

b).軟(preferred):嘗試滿足,但不(bu)保證(zheng)

操作符:InNotInExistsDoesNotExistGtLt (操作(zuo)(zuo)符(fu)支持這(zhe)些,標簽選擇不(bu)一定等(deng)于,也可是包含或(huo)其他(ta)等(deng)操作(zuo)(zuo))

節點選(xuan)擇器2nodeAffinity分(fen)兩(liang)種:硬性(xing)需(xu)求(qiu):必須(xu)滿(man)足。軟(ruan)性(xing)需(xu)求(qiu):嘗試滿足(zu),但不(bu)保證(zheng)。

硬性需(xu)求應用場景: 創建(jian)pod資源(yuan)或其他資源(yuan)時(shi)候,yaml文件里指定在打(da)了具(ju)體標簽的(de)node節點上,就必須只能在(zai)該node節點上創建資源,如果node節點上沒有符合(he)的(de)標簽(qian),就不會被調度。所(suo)有node節點都(dou)不滿足,就(jiu)都(dou)不調度創建(jian)資源(yuan)。

軟(ruan)性需求應(ying)用(yong)場景: 創建pod資源或(huo)其他資源時候(hou),yaml文件里指定(ding)在打了具體標簽的node節點上,則(ze)盡可能在該node節點上創建資源,如果所有node節點(dian)上都沒有(you)符合的(de)(de)標簽(qian),就再按(an)其他調度算(suan)法創建在相應的(de)(de)node節(jie)點(dian)上

注意:pod在調度的(de)時(shi)候會(hui)找(zhao)到一個合適的(de)節點(dian),所以如果節點(dian)資源(yuan)不足(zu);pod定(ding)(ding)義了指(zhi)定(ding)(ding)的(de)節點,但是指(zhi)定(ding)(ding)的(de)節點出現故障(zhang);或者pod定義了親和性(xing),但是節點沒有(you)滿足(zu)的條件(jian),都會(hui)導(dao)致調度失敗(bai)。

解釋:親(qin)和性和反親(qin)和性概(gai)念:

pod 親和性(podAffinity)主要解決pod可以和哪些pod部署在同(tong)一個(ge)拓撲域中的問(wen)題(其中拓撲域用(yong)主機(ji)標(biao)簽(qian)實現,可以是單個(ge)主機(ji),也(ye)可以是多個(ge)主機(ji)組成的 clusterzone 等(deng)等(deng)),而(er) pod 反親和性主(zhu)要是解決 pod 不能(neng)和哪些pod部署在同(tong)一個拓撲域中的問題,它們都(dou)是處理的 pod pod 之間的關系,比(bi)如(ru)一個Pod在一個(ge)節(jie)點上了,那么(me)我(wo)這(zhe)個(ge)也得在這(zhe)個(ge)節(jie)點,或(huo)者(zhe)你這(zhe)個(ge)Pod在節點上(shang)了(le),那么我就不想和你待在同一個節點上(shang)。

 

3.k8s中一個node節點(dian)突然斷電,恢復后上面的pod無法啟動故障

1).故障(zhang)現象:

k8spod一(yi)直(zhi)正常運行(xing),偶爾(er)一(yi)次(ci)node節(jie)點突然(ran)斷(duan)電,恢復之后,發現pod無法啟(qi)動

報錯日志: node節點(dian)包含污點(dian),但是沒(mei)有(you)配置容忍(ren)度

2).排查思路(lu):

(1).首先查看node節(jie)點是(shi)否有污(wu)點存在

node節點宕機,k8s會自動(dong)為這(zhe)個節點(dian)(dian)加(jia)上不可調度污(wu)(wu)點(dian)(dian)。有可能開(kai)機后,污(wu)(wu)點(dian)(dian)沒有自動(dong)消(xiao)失(shi),導致有污(wu)(wu)點(dian)(dian),讓pod調度不(bu)過去。

(2).檢(jian)查node節點的(de)主(zhu)機名(ming)是否更(geng)改,主(zhu)機名(ming)更(geng)改后連接不到集群(qun),也會添加污點

如果初(chu)始化(hua)后的(de)集(ji)群的(de)某個node節(jie)點的主(zhu)機(ji)名更(geng)改后,重啟kubelet服務后,該(gai)node節點就注冊不到k8s集群(qun)了,這是(shi)該(gai)node節點也顯示notready狀(zhuang)態。即使將該node節點(dian)和masterhosts解析改(gai)成新主機名(ming),也(ye)不行,kubelet還是(shi)按最初(chu)初(chu)始化集群時定(ding)義的主(zhu)機名注冊,除(chu)非再(zai)將node節點(dian)的主機(ji)名(ming)(ming)改成原來初始化時(shi)候(hou)的主機(ji)名(ming)(ming)才能恢復。所以,初始化時(shi)候(hou)一般(ban)要定義好主機(ji)名(ming)(ming),后面不要隨意修改主機(ji)名(ming)(ming)。

(3).檢查node節點的kubelet服(fu)務是否正常

如果node節點的kubelet服務不(bu)正常,也會(hui)使node節點notready狀態。

注意:只要node節點的狀態為notready狀態,k8s就(jiu)會(hui)給該node節點打上一個污點,如果(guo)node節點恢復了(le),污點一般會(hui)自動消失(shi),但也有(you)可能沒消失(shi),這時候(hou)可以手動刪除污點或看看別的(de)原因。

3).解決思(si)路:

(1).在相應node節點查看(kan)kubelet服務狀態,如(ru)果(guo)不(bu)行,重(zhong)啟kubelet服務。

(2).將相應(ying)node節點上(shang)的污點手動刪除。

#kubectl taint node node名(ming) 污點(dian)-

 

4.當前內置的污點包(bao)括:

node.kubernetes.io/not-ready:節點(dian)未準備(bei)好。這相當于節點(dian)狀(zhuang)況 Ready 的值為 "False"

node.kubernetes.io/unreachable:節(jie)點(dian)控制器訪問不到節(jie)點(dian). 這(zhe)相當于節點狀況 Ready 的值為 "Unknown"

node.kubernetes.io/memory-pressure:節點存在內存壓力。

node.kubernetes.io/disk-pressure:節點(dian)存在磁盤壓力。

node.kubernetes.io/pid-pressure: 節(jie)點(dian)的 PID 壓力。

node.kubernetes.io/network-unavailable:節點網絡不(bu)可用。

node.kubernetes.io/unschedulable: 節點不可調度。

node.cloudprovider.kubernetes.io/uninitialized:如果 kubelet 啟(qi)動時(shi)指定(ding)了一個外部(bu)云(yun)平臺驅動(dong), 它將給當前節點添加一個污(wu)點將其標志(zhi)為不可用。在 cloud-controller-manager 的一個(ge)控制器初(chu)始化這個(ge)節(jie)點(dian)后,kubelet 將刪除(chu)這個污點。

在節點被驅逐時,節點控制器或者 kubelet 會添加帶有 NoExecute 效果(guo)的相關污(wu)點(dian)。 如果(guo)異常狀態恢復(fu)正常,kubelet 或節點控制器能(neng)夠移(yi)除相關的污點。

 

5.pod超過節(jie)點(dian)資源限制

1).pod數量太多超過物理(li)節點限制(zhi)

故障現象: 監控系(xi)統大量(liang)報警(jing),大量pod在批量重啟,還有pod一直處于pending狀態

處理思路:

(1).查(cha)看pod詳細信息,看有(you)(you)沒有(you)(you)報錯,污(wu)點: xx:NoExecute。(當pod數(shu)量太多不可調度時(shi)也會自動加污點)

#kubectl describe pod pod

(2).查看相應node節(jie)點(dian)詳細信息,有沒有報錯: OOM內存泄露。

#kubectl describe node node

(3).到相(xiang)應(ying)node節點,查看磁盤(pan)、cpu、內存等(deng)資源(yuan)情況是否足夠。 #df -h free top

(4).到(dao)相應node節點查看(kan)kubelet的狀態(tai),看有(you)沒有(you)報錯(cuo)。

#systemctl status kubelet

(5).查看相應(ying)node節點數量(liang)是否超出(chu)了(le)默認的110

#kubectl get pod | wc -l |grep node

node節點上pod數(shu)量(liang)太多,超過默認110個(ge)后(hou),無(wu)法再運行pod的(de)處理:

(1).給相應node節點增加資(zi)源,磁盤/內存(cun)/cpu,在(zai)kubelet服務中增(zeng)加啟動參數,調大(da)node節點運行pod數(shu)量,如: --max-pods=300

(2).增加(jia)node節點數量。

2).pod資源(yuan)超過物(wu)理節點(dian)資源(yuan)限(xian)制

故障現(xian)象: k8s中部署pod,發現一直處于pending狀態

處(chu)理思路:

(1).查看(kan)pod詳細信息,看(kan)有沒有污點報(bao)錯,在查看(kan)有沒有資源限(xian)制報(bao)錯、內存/cpu/磁盤等(deng).

#kubectl describe pod pod名(ming)

(2).查看podyaml文件中limit相關的(de)資源限制,看定義(yi)資源范圍node節點(dian)是否(fou)能(neng)滿足(zu)。

解決(jue)方法:

(1).擴容相應(ying)的node宿主機節點的資(zi)源。

(2).增(zeng)加一個新的node節點(dian)。

(3).縮小部署的pod相(xiang)關的limit的(de)資源(yuan)限制(zhi),資源(yuan)參數改(gai)小一(yi)點。

 

0條評論
0 / 1000
Liqingsen
7文章數
0粉絲數
Liqingsen
7 文章 | 0 粉(fen)絲
Liqingsen
7文章(zhang)數
0粉絲數
Liqingsen
7 文章(zhang) | 0 粉絲
原(yuan)創

k8s之內部異常(節點異常)

2024-09-27 09:20:49
217
0

1.k8s集群節點notready狀態的幾種情況

情況1: 剛安裝(zhuang)好k8s集群的node節點notready

現象:node節點notready,查看coredns的(de)pod狀態為pending

可能原因: 可(ke)能是沒有部署網絡插件(calicoflannel),需要安裝網絡(luo)插件(jian)

情(qing)況(kuang)2k8s運行一段時間后(hou),node節點notready

可能原因:

(1).查看node節點宿主機的網絡情況、磁盤情況(kuang)、內存(cun)情況(kuang)、cpu情況(kuang),查看(kan)資源是否足夠

(2).查看(kan)node節點(dian)的kubelet服務是否正常

如果node節點的kubelet服務不正常(chang),也(ye)會顯示notready狀態

(3).查看node節點的詳細信(xin)息排查原因

#kubectl describe node node

 

2.pod的幾(ji)種調(diao)度方(fang)式

當我們發送請求創建pod,調度器就會(hui)把pod調(diao)度到(dao)合適(shi)的物理節(jie)點,大致分為以下過程:

1).Scheduler根據(ju)預選策略(lve)和優選函數,選擇合適node節點(dian)調度。

a).預選(xuan)階段(Predicates):過(guo)濾節點,調度器用一組規則過(guo)濾掉不(bu)符(fu)合要(yao)求的node節點,比如pod設置(zhi)了(le)資源(yuan)的request,那么可用資源比(bi)pod需要資源少的主機顯然就(jiu)會被過濾掉

b).優選階段(Priorities):為節(jie)點的優(you)先級打分(fen),將上一階段過濾出來(lai)的node列表進行打分,調度器會考慮一些整體(ti)的優(you)化策略,比如把deployment控制的多個pod 副本盡量(liang)分布到(dao)不同(tong)的主機上,使用最低負載的主機等等策略

2).可(ke)以通(tong)過定義nodeName(一般不經過(guo)調度器,使(shi)用(yong)很少)或(huo)nodeSelector進行調度。

3).可(ke)以根據節點(dian)親和(he)性進行調度。

nodeAffinity: 節點親和(he)性(xing),與nodeSelector作用一(yi)樣,但(dan)相(xiang)比更(geng)(geng)靈活(huo),滿足更(geng)(geng)多條(tiao)件:

-匹配有更(geng)多的(de)邏輯組合,不只是字符(fu)串的(de)完全相等。

-調度分為軟策略(lve)(lve)和硬(ying)策略(lve)(lve),而(er)不是硬(ying)性要求。

a).硬(required): 必須滿足

b).軟(preferred):嘗試滿足,但不保證

操作符(fu):InNotInExistsDoesNotExistGtLt (操(cao)作(zuo)符支持這些,標(biao)簽(qian)選擇不一定(ding)等(deng)于,也可是包含或其他等(deng)操(cao)作(zuo))

節點選擇器2nodeAffinity分(fen)兩種:硬(ying)性需求:必(bi)須滿足。軟性需求:嘗試滿足,但不保(bao)證。

硬性(xing)需求應用場景: 創(chuang)建pod資(zi)源(yuan)或其(qi)他資(zi)源(yuan)時候(hou),yaml文件里指定在打了(le)具體(ti)標簽的node節點上,就必須只能在該node節點上創建(jian)資源,如果(guo)node節(jie)點上沒有符合的標簽,就不會被調度。所(suo)有node節點都不滿足,就都不調(diao)度創建資源。

軟性(xing)需(xu)求(qiu)應用場(chang)景: 創建pod資(zi)源或其他資(zi)源時候,yaml文件里(li)指定(ding)在打了具體標簽的(de)node節點(dian)上,則盡可能在該node節(jie)點上創(chuang)建資源,如果(guo)所有node節點上都沒有符合(he)的標簽(qian),就(jiu)再(zai)按其他調度算法創建在相(xiang)應的node節點上

注(zhu)意:pod在調(diao)度的時候會找到一個合適的節(jie)點,所以如(ru)果節(jie)點資源不足;pod定義了指定的節點(dian),但是(shi)指定的節點(dian)出(chu)現故(gu)障;或(huo)者pod定義了親和性,但(dan)是節點沒有(you)滿足的條(tiao)件,都會導致(zhi)調(diao)度失敗。

解釋:親和(he)(he)性和(he)(he)反(fan)親和(he)(he)性概念:

pod 親和(he)性(podAffinity)主要解決pod可以和(he)哪些pod部署(shu)在同一個(ge)拓撲域中(zhong)的問(wen)題(其中(zhong)拓撲域用主機(ji)(ji)標簽實現,可以(yi)是單(dan)個(ge)主機(ji)(ji),也可以(yi)是多個(ge)主機(ji)(ji)組成的 clusterzone 等等),而 pod 反親和性主要是解決 pod 不能和哪些pod部署在同一個拓撲(pu)域中的(de)問題,它們都是處理的(de) pod 與(yu)pod 之間的(de)關系,比(bi)如一個(ge)Pod在(zai)一個(ge)節點(dian)(dian)上了(le),那么我這個(ge)也得在(zai)這個(ge)節點(dian)(dian),或者你這個(ge)Pod在節點上了,那么我就不(bu)想和(he)你待在同一個節點上。

 

3.k8s中一個node節點突然斷電,恢復(fu)后(hou)上面(mian)的(de)pod無法啟動故障

1).故障現象:

k8spod一(yi)直正常運行,偶爾一(yi)次node節(jie)點突(tu)然斷電,恢復之后,發現pod無法啟動

報錯日志: node節點包含污點,但是沒有(you)配(pei)置容忍(ren)度(du)

2).排查思(si)路(lu):

(1).首先查看node節點是否(fou)有污點存在

node節點宕機,k8s會自(zi)動為這個節(jie)點加上不(bu)可(ke)調度污點。有(you)可(ke)能開機(ji)后,污點沒有(you)自(zi)動消失,導致(zhi)有(you)污點,讓pod調度不過去。

(2).檢查(cha)node節點(dian)的主機名是否更改(gai),主機名更改(gai)后連接(jie)不到集(ji)群,也會添(tian)加污(wu)點(dian)

如(ru)果(guo)初始化后的集群的某個node節(jie)點的主機名(ming)更改后,重啟(qi)kubelet服務后,該node節點(dian)就注冊(ce)不(bu)到(dao)k8s集群了(le),這是(shi)該node節點(dian)也顯(xian)示notready狀態。即使將該node節點和masterhosts解析(xi)改(gai)成(cheng)新主機名,也不行,kubelet還(huan)是按最(zui)初(chu)初(chu)始化(hua)集群(qun)時定義(yi)的主機名注冊,除非(fei)再將node節(jie)點的(de)主(zhu)機(ji)(ji)名(ming)(ming)改成原來初始(shi)化(hua)時(shi)候(hou)的(de)主(zhu)機(ji)(ji)名(ming)(ming)才能恢復。所以(yi),初始(shi)化(hua)時(shi)候(hou)一般(ban)要(yao)(yao)定義好主(zhu)機(ji)(ji)名(ming)(ming),后面不要(yao)(yao)隨意(yi)修改主(zhu)機(ji)(ji)名(ming)(ming)。

(3).檢查(cha)node節點的kubelet服務是否正常(chang)

如果node節點的kubelet服(fu)務(wu)不(bu)正常(chang),也會使node節點notready狀態。

注意:只要node節(jie)點的狀態為notready狀態,k8s就會(hui)給(gei)該node節點打上一個污點,如果node節(jie)點(dian)恢復了(le),污(wu)點(dian)一般會(hui)自動(dong)(dong)消失,但(dan)也有可能沒消失,這時候可以(yi)手動(dong)(dong)刪(shan)除污(wu)點(dian)或看看別的(de)原因。

3).解(jie)決思(si)路:

(1).在相應node節點(dian)查看(kan)kubelet服務(wu)狀態(tai),如果(guo)不行(xing),重(zhong)啟kubelet服務。

(2).將(jiang)相應node節點上(shang)的污點手動(dong)刪除。

#kubectl taint node node名 污點(dian)-

 

4.當前(qian)內置(zhi)的(de)污點包括:

node.kubernetes.io/not-ready:節點(dian)未準備(bei)好。這(zhe)相當于節點(dian)狀況 Ready 的值為 "False"

node.kubernetes.io/unreachable:節點控制器訪(fang)問不到節點. 這相當于節點(dian)狀(zhuang)況 Ready 的值為 "Unknown"

node.kubernetes.io/memory-pressure:節點(dian)存在內存壓力(li)。

node.kubernetes.io/disk-pressure:節點存在(zai)磁盤壓力。

node.kubernetes.io/pid-pressure: 節點的 PID 壓(ya)力。

node.kubernetes.io/network-unavailable:節點網絡不可用。

node.kubernetes.io/unschedulable: 節點不可調度。

node.cloudprovider.kubernetes.io/uninitialized:如(ru)果 kubelet 啟動時指定了一個外部云平臺驅動, 它(ta)將給(gei)當(dang)前節點(dian)添加一個污點(dian)將其標(biao)志(zhi)為(wei)不(bu)可用(yong)。在 cloud-controller-manager 的一(yi)個控制器(qi)初(chu)始化這個節點后,kubelet 將刪除這個(ge)污點(dian)。

在節(jie)點(dian)被驅(qu)逐時(shi),節(jie)點(dian)控制器或者 kubelet 會添加帶(dai)有 NoExecute 效果的(de)相(xiang)關(guan)污點(dian)。 如果異常狀(zhuang)態恢復正常,kubelet 或(huo)節點(dian)(dian)控(kong)制器(qi)能夠移除(chu)相(xiang)關(guan)的(de)污點(dian)(dian)。

 

5.pod超過節點資源限制

1).pod數量(liang)太多超過物理節點限制

故障現象: 監(jian)控系統大量報警,大量(liang)pod在批量(liang)重(zhong)啟,還有pod一直處(chu)于(yu)pending狀態

處理思路:

(1).查看pod詳細信息,看有沒有報(bao)錯,污點(dian): xx:NoExecute。(當pod數量(liang)太多不可調度時也會自動加污點(dian))

#kubectl describe pod pod

(2).查(cha)看相(xiang)應node節點詳(xiang)細(xi)信(xin)息,有(you)沒有(you)報錯: OOM內(nei)存(cun)泄露。

#kubectl describe node node

(3).到相(xiang)應(ying)node節點,查(cha)看(kan)磁盤、cpu、內存(cun)等資(zi)源情況(kuang)是否足夠。 #df -h free top

(4).到相(xiang)應node節點查看(kan)kubelet的狀態,看(kan)有沒有報錯。

#systemctl status kubelet

(5).查看相應node節(jie)點數量是否超出(chu)了默(mo)認(ren)的110

#kubectl get pod | wc -l |grep node名(ming)

當(dang)node節(jie)點(dian)上pod數量太多,超過默認(ren)110個后,無法再(zai)運行pod的處理(li):

(1).給(gei)相應(ying)node節點(dian)增加(jia)資源,磁盤/內存/cpu,kubelet服(fu)務中增加啟動參數(shu),調大node節點運行pod數(shu)量,如: --max-pods=300

(2).增加node節(jie)點數量。

2).pod資源(yuan)超過物理節點資源(yuan)限制

故障現象: 在(zai)k8s中部署pod,發(fa)現一直(zhi)處(chu)于(yu)pending狀態

處理思(si)路:

(1).查看pod詳細信息,看(kan)有(you)沒有(you)污點(dian)報錯,在查看(kan)有(you)沒有(you)資源限(xian)制報錯、內存/cpu/磁(ci)盤等.

#kubectl describe pod pod

(2).查看pod的(de)yaml文件中limit相(xiang)關的(de)資源限制,看定義資源范圍node節點是否能(neng)滿足。

解(jie)決方法(fa):

(1).擴容(rong)相(xiang)應的node宿(su)主機節點的資源。

(2).增加一個(ge)新的node節點(dian)。

(3).縮小(xiao)部署(shu)的pod相關的(de)limit的資源(yuan)限制,資源(yuan)參數改小一點。

 

文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0