我初始化了主节点并添加了2个工作节点,但是当我运行以下命令时,只显示主节点和一个工作节点:
kubectl get nodes
此外,这两个节点都处于“未就绪”状态。 我应该采取哪些步骤来了解问题所在?
我使用以下repo来安装Kubernetes:
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes] name=Kubernetes
baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
EOF
yum install kubelet kubeadm kubectl kubernetes-cni
答案 0 :(得分:37)
首先,描述节点并查看它是否报告任何内容:
$ kubectl describe nodes
寻找条件,容量和可分配:
Conditions:
Type Status
---- ------
OutOfDisk False
MemoryPressure False
DiskPressure False
Ready True
Capacity:
cpu: 2
memory: 2052588Ki
pods: 110
Allocatable:
cpu: 2
memory: 1950188Ki
pods: 110
如果此处一切正常,请通过SSH进入节点并观察kubelet
日志以查看是否有任何报告。像证书错误,身份验证错误等。
如果kubelet
作为systemd服务运行,则可以使用
$ journalctl -u kubelet
答案 1 :(得分:2)
调试步骤:-
如果您在kubernetes中遇到任何问题,第一步是检查kubernetes自身应用程序是否运行良好。
检查命令:-kubectl get pods -n kube-system
如果看到任何吊舱崩溃,请检查其日志
如果出现NotReady
状态错误,请验证网络Pod日志。
如果无法通过以上方法解决,请执行以下步骤:-
kubectl get nodes
#检查哪个节点未处于就绪状态
kubectl describe node nodename
#nodename尚未就绪
ssh到该节点
执行systemctl status kubelet
#确保kubelet正在运行
systemctl status docker
#确保docker服务正在运行
journalctl -u kubelet
#检查深度日志
您很可能会在这里了解错误,使用以下命令将其修复后,重置kubelet:-
systemctl daemon-reload
systemctl restart kubelet
如果仍然没有找到根本原因,请检查以下内容:-
确保您的节点有足够的空间和内存。特别检查/var
目录空间。
检查命令:-df
-kh
,free -m
使用top命令验证CPU利用率。并确保任何进程都不会占用意外内存。
答案 2 :(得分:0)
由于不同的原因,我遇到了类似的问题:
错误:
cord@node1:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
node1 Ready master 17h v1.13.5
node2 Ready <none> 17h v1.13.5
node3 NotReady <none> 9m48s v1.13.5
cord@node1:~$ kubectl describe node node3
Name: node3
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
Ready False Thu, 18 Apr 2019 01:15:46 -0400 Thu, 18 Apr 2019 01:03:48 -0400 KubeletNotReady runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
Addresses:
InternalIP: 192.168.2.6
Hostname: node3
cord @ node3:〜$ journalctl -u kubelet
Apr 18 01:24:50 node3 kubelet[54132]: W0418 01:24:50.649047 54132 cni.go:149] Error loading CNI config list file /etc/cni/net.d/10-calico.conflist: error parsing configuration list: no 'plugins' key
Apr 18 01:24:50 node3 kubelet[54132]: W0418 01:24:50.649086 54132 cni.go:203] Unable to update cni config: No valid networks found in /etc/cni/net.d
Apr 18 01:24:50 node3 kubelet[54132]: E0418 01:24:50.649402 54132 kubelet.go:2192] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
Apr 18 01:24:55 node3 kubelet[54132]: W0418 01:24:55.650816 54132 cni.go:149] Error loading CNI config list file /etc/cni/net.d/10-calico.conflist: error parsing configuration list: no 'plugins' key
Apr 18 01:24:55 node3 kubelet[54132]: W0418 01:24:55.650845 54132 cni.go:203] Unable to update cni config: No valid networks found in /etc/cni/net.d
Apr 18 01:24:55 node3 kubelet[54132]: E0418 01:24:55.651056 54132 kubelet.go:2192] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
Apr 18 01:24:57 node3 kubelet[54132]: I0418 01:24:57.248519 54132 setters.go:72] Using node IP: "192.168.2.6"
问题:
我的文件:10-calico.conflist不正确。从另一个节点和同一目录“ calico.conflist.template”中的示例文件进行了验证。
分辨率:
更改文件“ 10-calico.conflist”并使用“ systemctl restart kubelet”重新启动服务,解决了我的问题:
NAME STATUS ROLES AGE VERSION
node1 Ready master 18h v1.13.5
node2 Ready <none> 18h v1.13.5
node3 Ready <none> 48m v1.13.5
答案 3 :(得分:0)
我发现应用网络并重新启动两个节点都对我有用。
kubectl apply -f [podnetwork] .yaml
答案 4 :(得分:0)
我最近开始使用 VMWare Octant https://github.com/vmware-tanzu/octant。这是一个比 Kubernetes 仪表板更好的 UI。您可以查看 Kubernetes 集群并查看集群和 PODS 的详细信息。这将允许您检查日志并打开终端进入 POD。