问题:0/3 nodes are available: 1 Insufficient cpu, 2 node(s) didn’t match Pod’s node affinity/selector.
就是 cpu 不足导致的问题。
用的是 kubesphere 可视化界面,我需要部署的 pod 只需要 4 cpu,看下图剩余的 cpu 明显够,但一部署就报错。
在 Linux 中查看实际剩余的 cpu
kubectl describe node |grep -E '((Name|Roles):\s{6,})|(\s+(memory|cpu)\s+[0-9]+\w{0,2}.+%\))'
我要部署的 pod 指定部署到 njoffice04 这个点,看到已用了44987m (94%),机器是 48 核的,也就是 48000m。那现在就只剩下 3013m,小于我现在要部署的 pod 需要的 4000m,所以会报错。
另外补充一下:虽然另外两个节点剩余的 cpu 充足,但因为我指定部署到 njoffice04,所以报错信息里有下面内容
2 node(s) didn't match Pod's node affinity/selector.
解决故障
找到了报错原因,那解决这个故障也就很容易了。以下三个方法都可以消除报错,并实现 deployment 的安装:
- 清理已安装的 k8s 对象,既可以删除一部分,也可以将某些对象的 requests 的值换成一个更小的数。
- 扩容 k8s 集群。
- 修改待安装的 deployment 的 requests 的值,减少申明的所需内存。
参考:https://blog.csdn.net/monarch91/article/details/124952023