问题描述
在k8s集群上部署服务,pod状态一直无法running,通过kubectl describe pod xxx -n xxx
查看event事件,发现类似“0/9 nodes are available: 9 node(s) had volume node affinity conflict”的报错,提示node上有volume的节点亲和性冲突问题。
原因分析
1、找出异常pod使用的pv名称,先确定容器volume用的是k8s哪个pv
kubectl get pod xxx -o yaml -n xxx
2、查看pv的亲和性信息,找到nodeAffinity对应的k8s节点标签
kubectl get pv xxx -o yaml -n xxx
3、查看k8s节点实际label,是否与pv亲和性key的标签一致,肯定是有冲突
kubectl get nodes --show-labels
解决办法
根据pv的nodeAffinity的value,修改下k8s集群node对应label key的value值,命名格式:kubectl label nodes <node-name> <label-key>=<label-value> --overwrite
,如修改192.168.0.1节点hostname值为kafka-1。
kubectl label nodes 192.168.0.1 kubernetes.io/hostname=kafka-1 --overwrite
附录
为k8s-test01节点添加gpu标签语法:
kubectl label nodes k8s-test01 gpu=label_value
删除k8s-test01节点gpu标签语法:
kubectl label nodes k8s-test01 gpu-