背景
项目中使用k8s+helm安装部署,在部署中间件(mysql)时,pod一直处于Pending状态,k8s集群有node1、node2两个节点,其中node1为master。
问题复现
1、安装mysql
helm install mysql {{helm }}
2、检查pod情况
kubectl get pods | grep mysql
3、查看pod详情
kubectl describe pod mysql-pod-name
Events中的Message展示
0/2 nodes are available: 2 node(s) didn't match node selector.
解决思路
根据提示,查看对应的helm-chart,发现对应的配置文件中存在存在nodeSelector
nodeSelector:
mysql:mysql
nodeSelector会使应用安装在拥有对应标签的节点
分别查看node1和node2节点的打标情况
kubectl get nodes --show-labels
发现node1和node2节点都没mysql标签,至此发现问题
解决方案
在任一节点打标
#给节点node1打上标签mysql=mysql
kubectl label node node1 mysql=mysql