問(wèn)題描述
在k8s集群上部署服務(wù),pod狀態(tài)一直無(wú)法running,通過(guò)kubectl describe pod xxx -n xxx查看event事件,發(fā)現(xiàn)類似“0/9 nodes are available: 9 node(s) had volume node affinity conflict”的報(bào)錯(cuò),提示node上有volume的節(jié)點(diǎn)親和性沖突問(wèn)題。
原因分析
1、找出異常pod使用的pv名稱,先確定容器volume用的是k8s哪個(gè)pv
kubectl get pod xxx -o yaml -n xxx
2、查看pv的親和性信息,找到nodeAffinity對(duì)應(yīng)的k8s節(jié)點(diǎn)標(biāo)簽
kubectl get pv xxx -o yaml -n xxx
3、查看k8s節(jié)點(diǎn)實(shí)際label,是否與pv親和性key的標(biāo)簽一致,肯定是有沖突
kubectl get nodes --show-labels
解決辦法
根據(jù)pv的nodeAffinity的value,修改下k8s集群node對(duì)應(yīng)label key的value值,命名格式:kubectl label nodes <node-name> <label-key>=<label-value> --overwrite,如修改192.168.0.1節(jié)點(diǎn)hostname值為kafka-1。
kubectl label nodes 192.168.0.1 kubernetes.io/hostname=kafka-1 --overwrite
附錄
為k8s-test01節(jié)點(diǎn)添加gpu標(biāo)簽語(yǔ)法:
kubectl label nodes k8s-test01 gpu=label_value
刪除k8s-test01節(jié)點(diǎn)gpu標(biāo)簽語(yǔ)法:
kubectl label nodes k8s-test01 gpu-