我正在使用kind
在本地Macbook上运行测试kubernetes集群。
我找到了一个状态为NotReady
的节点:
$ kind get clusters
mc
$ kubernetes get nodes
NAME STATUS ROLES AGE VERSION
mc-control-plane Ready master 4h42m v1.18.2
mc-control-plane2 Ready master 4h41m v1.18.2
mc-control-plane3 Ready master 4h40m v1.18.2
mc-worker NotReady <none> 4h40m v1.18.2
mc-worker2 Ready <none> 4h40m v1.18.2
mc-worker3 Ready <none> 4h40m v1.18.2
kubectl describe node mc-worker
中唯一有趣的事情是CNI插件未初始化:
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
MemoryPressure False Tue, 11 Aug 2020 16:55:44 -0700 Tue, 11 Aug 2020 12:10:16 -0700 KubeletHasSufficientMemory kubelet has sufficient memory available
DiskPressure False Tue, 11 Aug 2020 16:55:44 -0700 Tue, 11 Aug 2020 12:10:16 -0700 KubeletHasNoDiskPressure kubelet has no disk pressure
PIDPressure False Tue, 11 Aug 2020 16:55:44 -0700 Tue, 11 Aug 2020 12:10:16 -0700 KubeletHasSufficientPID kubelet has sufficient PID available
Ready False Tue, 11 Aug 2020 16:55:44 -0700 Tue, 11 Aug 2020 12:10:16 -0700 KubeletNotReady runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady
message:Network plugin returns error: cni plugin not initialized
我有2个相似的群集,并且仅在此群集上发生。
由于kind
使用本地Docker守护程序将这些节点作为容器运行,所以我已经尝试过重新启动容器(应该等同于重新启动节点)。
我已经考虑过删除并重新创建群集,但是应该有一种无需重新创建群集即可解决此问题的方法。
以下是我正在运行的版本:
$ kind version
kind v0.8.1 go1.14.4 darwin/amd64
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"16+", GitVersion:"v1.16.6-beta.0", GitCommit:"e7f962ba86f4ce7033828210ca3556393c377bcc", GitTreeState:"clean", BuildDate:"2020-01-15T08:26:26Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.2", GitCommit:"52c56ce7a8272c798dbc29846288d7cd9fbae032", GitTreeState:"clean", BuildDate:"2020-04-30T20:19:45Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
您如何解决此问题?
答案 0 :(得分:2)
最可能的原因:
docker VM的某些资源用完了,无法在该特定节点上启动CNI。
您可以通过以下方式在HyperKit VM中四处浏览:
从外壳:
user_id
如果由于某些原因无法正常工作:
staff
在虚拟机中一次:
staff_id
然后,您始终可以在Docker UI上更新设置:
最后,您的节点毕竟在容器中运行。因此,您可以连接到该容器并查看看到的staff
个错误:
staff_type
✌️</ p>
答案 1 :(得分:0)
我遇到了这种情况。主节点已准备就绪,但工作节点的状态不是。经过一番调查,我发现/ opt / cni / bin为空-我的工作节点主机没有网络插件。因此,我安装了此“ kubernetes-cni.x86_64”并重新启动了kubelet服务。这解决了我的工作节点的“未就绪”状态。