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

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

k8s之應用故障(應用異常)

2024-10-18 09:19:46
67
0

1.k8sservice訪問異常(chang)的(de)常(chang)見問題

1).service沒有正確匹配到后(hou)端(duan)的(de)pod標簽

(1).service匹配的(de)label標簽沒有(you)匹配上(shang)后面的(de)pod(導致訪(fang)問不到界面)

(2).service匹配的label標簽匹配到(dao)后面其他錯誤的pod(導致(zhi)訪問(wen)的(de)別的(de)界面)

2).kube-proxy服務故障導致service無法提(ti)供服務(wu)

kube-proxy是什么:

Service為(wei)一(yi)組(zu)相同(tong)的pod提供了統一的(de)入(ru)口(kou),起到負載(zai)均衡的(de)效(xiao)果。Service具(ju)有這樣的功(gong)能,真是kube-proxy的功勞,kube-proxy是(shi)一(yi)個代理,安裝在每一(yi)個k8s節點,當(dang)我們(men)暴露一個service的(de)時候,kube-proxy會(hui)在iptables中(zhong)追加一(yi)些規則,為我們實(shi)現(xian)路由與負載(zai)均衡的功能。

kube-proxy的兩(liang)種轉發(fa)規(gui)則: iptables(DNAT規則轉(zhuan)發到(dao)后臺pod)ipvs

故障現象:

service的(de)標簽選擇器正常,pod也正常,但是訪問service的(de)ip時(shi),還是代理不到pod,就需要檢(jian)查kube-proxy組件。

解決思路:

(1).查(cha)看相應node節點kube-proxy服務是否正常。

(2).查看(kan)相應node節點上(shang)kube-proxy相(xiang)關(guan)日志,有沒有報(bao)錯,資(zi)源不足,如(ru):cpu/內(nei)存/磁盤

(3)查看相(xiang)應node節點上系統日志(zhi)中有沒(mei)有關(guan)于kube-proxy的日志報錯.

#cat /var/log/messages[kube-proxy] |grep kube-proxykubectl logs pod|grep kube-proxy

解決方法(fa):

(1).擴容節點(dian)資(zi)源(yuan),增加服務器或者虛(xu)擬機的cpu和內(nei)存。

(2).修改kube-proxy的(de)yaml中的(de)limit資源限制(zhi),限制(zhi)可使用的cpu和(he)內存。

 

2.k8spod刪除失敗的(de)解決

故障現象:在k8s中,可能會產生很多(duo)垃圾pod,也就(jiu)是有些pod雖然是(shi)running狀(zhuang)態,可是其所調度到的k8snode節點已經(jing)從k8s集群(qun)刪除了,但是(shi)pod還是(shi)在(zai)這(zhe)個node上,沒有被驅逐,針對這種情況就需要把pod刪除。

故障問題(ti):刪除pod時(shi)候,pod一(yi)直處于terminate狀態,很長時間無法刪(shan)除。

解決(jue)方案(an):

可以通過如下方法添加參數(shu)強制刪除pod,–force --grace-period=0, grace-period表(biao)示過渡(du)存活期,默認30s,在刪除pod之(zhi)前運行pod慢(man)慢(man)終止其上的容器進程,從而優雅(ya)退出,0表(biao)示(shi)立即終(zhong)止pod.

#kubectl delete pod pod名(ming) --force --grace-period=0

 

3.k8s中命名空間的強制刪除

雖然pod可(ke)以(yi)強制刪除,但(dan)是可(ke)能(neng)命名空(kong)間還是處于terminate狀態,無法(fa)刪除(chu)。

解決(jue)方法:

(1).強制(zhi)刪除命名空間

#kubectl delete ns 命名空間 --force --grace-period=0

(2).獲取namespace的(de)json文(wen)件(jian),刪(shan)除(chu)相關內容

#kubectl get ns 命名空間 -o json > /root/xx.json

#vim /root/xx.json

刪除spec下的”finalizers:[ 和”kubernetes” 內容

調用api-server接口(kou)進行刪除:

打開(kai)一(yi)個(ge)新的終端(duan),或者(zhe)把下面的命令(ling)放到后臺執行: # kubectl proxy --port=8081

調(diao)用接口刪除:

#curl -k -H Content-Type: application/json-X PUT --data-binary @xx.json

127.0.0.1:8081/api/v1/namespaces/命名空間名/finalize

如果kubectl get ns 命名空間 -o json的結果(guo)中”spec:{}中為空了,但是metadata部分(fen)還有finalizers字段,需要(yao)將里(li)面相關finalizers的內(nei)容也刪除。

#kubectl edit ns 命名空間(jian)

進去后,直接刪除相關(guan)finalizers的內容即可,保(bao)存退出后(hou),出入Terminating狀(zhuang)態的ns便沒有了(le)。

 

4.k8s中(zhong)跨(kua)主機(ji)連接不通(podpod

1).pause容器(qi)概(gai)念:

Pause容器,又叫Infra容(rong)器(qi),Pause容器對應(ying)的鏡像屬于(yu)k8s平臺(tai)的一(yi)部分,除了(le)pause容器,每個(ge)pod還包含(han)一(yi)個(ge)或(huo)者多個(ge)緊密相關的(de)用(yong)戶(hu)業務容器。

2).pause容器的作用:

(1).pod里的多個業務(wu)容(rong)器共(gong)享pause容器(qi)的ip,共享pause容(rong)器(qi)掛載的volume,這樣簡化了(le)業務(wu)容(rong)器之(zhi)間的(de)通(tong)信問(wen)題(ti),也解決了(le)容(rong)器之(zhi)間的(de)問(wen)題(ti)件(jian)共享問(wen)題(ti)。

(2).pod中的容器共享同一(yi)個ip地址。故同一個(ge)podcontainer可以做到直接通(tong)過localhost直(zhi)接通信。

3).同一(yi)個(ge)節點多個(ge)pod通信機制:

pause容(rong)器(qi)啟(qi)動之前,會為容(rong)器(qi)創建虛(xu)擬一對ethernet接口,一個保留在(zai)宿主機vethxxx(插在網橋上),一個保留在容器網絡(luo)命(ming)名空(kong)間內(nei),并重命(ming)名為eth0。兩(liang)個虛(xu)擬接口的兩(liang)端,從一端進入(ru),從另一端出來。任何pod連接到該網橋的pod都(dou)可以收(shou)發數(shu)據。

4).跨節點(dian)pod通(tong)信機制:

跨節點pod通信,相當于創建一個(ge)整個(ge)集群公用(yong)的(de) [網橋] ,然后把集群中所有的pod連接起來(lai),就(jiu)可以通信了。

5).跨主機連(lian)接不通(pod和(he)pod)的故障排查(cha)方法:

(1).排查宿主機(ji)網絡(luo)是否(fou)正常,在宿主機(ji)上(shang)ping baidu.com,tcpdump抓(zhua)包看(kan)是否丟包.

(2).查(cha)看k8s中的網(wang)絡插件(jian)(jian)是否正常,查看網(wang)絡組件(jian)(jian)calicoflannel的日志。

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

k8s之應用故障(應用異常)

2024-10-18 09:19:46
67
0

1.k8sservice訪問異常的常見問題

1).service沒有正確(que)匹配到后(hou)端的(de)pod標簽

(1).service匹配的label標簽沒(mei)有匹配上(shang)后(hou)面的pod(導致(zhi)訪問不到界(jie)面)

(2).service匹(pi)配(pei)的label標(biao)簽匹(pi)配到后面(mian)其他錯誤的(de)pod(導(dao)致訪問的(de)別的(de)界(jie)面)

2).kube-proxy服務故障導致service無法提供服(fu)務

kube-proxy是什么:

Service為一組相同的pod提供了統一(yi)的入口(kou),起到負載均衡的效果。Service具(ju)有這樣的功(gong)能,真是kube-proxy的功(gong)勞,kube-proxy是一個代理,安裝在每一個k8s節(jie)點,當我們暴露(lu)一個service的時候,kube-proxy會在iptables中追加一些規(gui)則,為我們實現路由與(yu)負載均衡的功能。

kube-proxy的(de)兩種轉發規則: iptables(DNAT規則轉(zhuan)發到后臺pod)和(he)ipvs

故障現象:

service的標簽選擇器正常(chang),pod也正常(chang),但是訪(fang)問serviceip時(shi),還是代理不到pod,就需要(yao)檢(jian)查kube-proxy組件。

解決(jue)思路:

(1).查(cha)看相應node節點(dian)kube-proxy服(fu)務(wu)是否(fou)正常。

(2).查看相應node節(jie)點上kube-proxy相關日(ri)志,有(you)(you)沒有(you)(you)報錯,資源(yuan)不足,如:cpu/內存/磁(ci)盤

(3)查看相應node節(jie)點(dian)上(shang)系統日志中(zhong)有沒(mei)有關(guan)于kube-proxy的日志(zhi)報錯.

#cat /var/log/messages[kube-proxy] |grep kube-proxy或(huo) kubectl logs pod|grep kube-proxy

解決(jue)方(fang)法:

(1).擴容節點(dian)資源,增加服務器(qi)或者(zhe)虛(xu)擬機的cpu和(he)內存。

(2).修改(gai)kube-proxyyaml中(zhong)的(de)limit資源限制,限制可使用的cpu和內存。

 

2.k8spod刪除(chu)失敗的解決

故(gu)障現象:在k8s中,可(ke)能(neng)會產生很(hen)多垃圾pod,也就是(shi)有些pod雖然是running狀(zhuang)態,可是其所調(diao)度到(dao)的k8snode節點(dian)已經從k8s集群(qun)刪除(chu)了,但(dan)是pod還(huan)是在這個node上,沒有(you)被驅逐,針對這(zhe)種情況就需(xu)要把(ba)pod刪除。

故障問題(ti):刪除pod時(shi)候,pod一直處于terminate狀態(tai),很(hen)長時(shi)間無法刪除。

解決方案:

可以通過如下(xia)方(fang)法添加參數強(qiang)制刪除pod,–force --grace-period=0, grace-period表示(shi)過渡存(cun)活期,默認(ren)30s,在刪(shan)除pod之前運行pod慢慢終(zhong)止(zhi)其上的容(rong)器進程(cheng),從而優雅(ya)退出,0表示立(li)即終止pod.

#kubectl delete pod pod--force --grace-period=0

 

3.k8s中命(ming)名(ming)空間(jian)的強制刪除(chu)

雖然pod可(ke)以強制刪除(chu),但是可(ke)能命名空間還是處于terminate狀態,無法刪除。

解決方法:

(1).強制刪除命名空間

#kubectl delete ns 命名空(kong)間(jian) --force --grace-period=0

(2).獲取namespacejson文件,刪除相關(guan)內容

#kubectl get ns 命名(ming)空間 -o json > /root/xx.json

#vim /root/xx.json

刪除spec下的”finalizers:[ 和”kubernetes” 內容

調用(yong)api-server接口進行刪除:

打開(kai)一(yi)個新(xin)的終(zhong)端,或者(zhe)把下面(mian)的命令放(fang)到(dao)后臺執行(xing): # kubectl proxy --port=8081

調用接口刪除:

#curl -k -H Content-Type: application/json-X PUT --data-binary @xx.json

127.0.0.1:8081/api/v1/namespaces/命(ming)名(ming)空間名(ming)/finalize

如(ru)果kubectl get ns 命名空間 -o json的結果中(zhong)”spec:{}中為空(kong)了,但(dan)是metadata部分還有finalizers字段,需要將里面相關(guan)finalizers的內容(rong)也刪除(chu)。

#kubectl edit ns 命名(ming)空(kong)間

進去后,直(zhi)接刪除相關finalizers的(de)內容即可,保存退出(chu)后,出(chu)入Terminating狀態的ns便沒有了。

 

4.k8s中跨主(zhu)機連接不通(pod和(he)pod

1).pause容器(qi)概(gai)念:

Pause容(rong)器(qi),又叫Infra容(rong)器,Pause容(rong)器對應的鏡像屬于(yu)k8s平臺的一部分,除了pause容器,每個(ge)pod還包含一個(ge)或者(zhe)多個(ge)緊密相關的用戶(hu)業務容器。

2).pause容器的作用(yong):

(1).pod里的多個(ge)業務容器共(gong)享pause容(rong)器的(de)ip,共享pause容器掛載(zai)的(de)volume,這樣(yang)簡化了(le)業務容器(qi)(qi)之(zhi)(zhi)間(jian)的(de)通信(xin)問題,也解決了(le)容器(qi)(qi)之(zhi)(zhi)間(jian)的(de)問題件共享(xiang)問題。

(2).pod中的(de)容器共享同一個ip地址。故同一個podcontainer可(ke)以做到(dao)直接通過(guo)localhost直接通(tong)信。

3).同一(yi)個(ge)節點(dian)多個(ge)pod通信機制(zhi):

pause容(rong)器(qi)啟動之前,會為容(rong)器(qi)創(chuang)建虛(xu)擬一對ethernet接口,一(yi)個保留在(zai)宿(su)主機vethxxx(插在(zai)網橋上),一個保留在(zai)容器網絡命名(ming)空(kong)間內(nei),并重命名(ming)為(wei)eth0。兩(liang)個(ge)虛擬接口的兩(liang)端(duan)(duan),從(cong)一端(duan)(duan)進(jin)入,從(cong)另一端(duan)(duan)出(chu)來。任何pod連接到該(gai)網橋的pod都可以收發數據。

4).跨節點(dian)pod通信機制:

跨(kua)節點pod通信,相(xiang)當于(yu)創(chuang)建一(yi)個(ge)整個(ge)集群公用的 [網橋] ,然后把(ba)集(ji)群中(zhong)所(suo)有的pod連接起來,就(jiu)可(ke)以(yi)通(tong)信(xin)了。

5).跨(kua)主機連接不(bu)通(podpod)的故(gu)障排查方(fang)法:

(1).排(pai)查宿主機網絡是否正常(chang),在宿主機上ping baidu.com,tcpdump抓(zhua)包看是否丟包.

(2).查看k8s中的網絡插(cha)件(jian)(jian)是(shi)否正(zheng)常,查(cha)看(kan)網絡組件(jian)(jian)calico或(huo)flannel的日志。

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