kubernetes集群刪除pod后長時間處於Terminating狀態的案例


背景:

預生產環境,使用kubeadm部署的HA集群如下。

NAME STATUS ROLES AGE VERSION
sbfk1test Ready master 37d v1.15.2
sbfk2test Ready master 37d v1.15.2
sbfk3test Ready <none> 37d v1.15.2

現象:

刪除pod后,長時間處於Terminating狀態,幾分鍾到十幾分鍾不等。

使用kubectl delete pod --force --grace-period=0 <PODNAME>來強制刪除。

定位:

1、Terminating慢的定位,看了很多文檔,都沒有頭緒。在網上看到一個疑似的案例,資源使用率較高,導致kubectl在銷毀資源的時候被stuck。

2、查看兩台宿主機的資源使用,總體資源比較空閑,但是看到etcd的進程cpu大於50%。

推測可能跟etcd的性能或者集群配置更新有關系,於是查看etcd的pod的日志,看到sbfk2test的etcd一直在刷:error "tls: \"<IP地址A>\" does not match any of DNSNames [\"sbfk1test\" \"localhost\"]

這時我想到自己制作證書的時候,地址寫了IP地址A,而etcd是啟用了雙向認證的,sbfk1test請求sbfk2test的etcd-api時報錯client證書問題。

到這里,我就知道自己配置etcd集群的證書是有問題的。

驗證:

修改/etc/kubernetes/manifests/etcd.yaml的:

--client-cert-auth=true 改為 --client-cert-auth=false

--peer-client-cert-auth=true 改為 --peer-client-cert-auth=false

把client的認證改為false,發現兩個master的etcd的pod都不報錯了,查看進程消耗,發現etcd的cpu使用率小於5%。

解決:

制作新的etcd證書,且該證書支持多域名或ip地址,把kube-apiserver地址、etcd的主機名都加進去。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM