我初始化了主节点并添加了2个工作节点,但当我运行以下命令时,只有主节点和其中一个工作节点显示:
kubectl get nodes
此外,这两个节点都处于"未就绪"状态。我应该采取哪些步骤来了解问题可能是什么?
- 我可以从其他每个节点ping所有节点
- Kubernetes的版本是1.8
- 操作系统是Cent操作系统7
我使用以下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
首先,描述节点并查看它是否报告了任何内容:
$ 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
调试步骤:-
如果您在kubernetes中遇到任何问题,第一步是检查kubernete自身应用程序是否运行良好。
要检查的命令:-kubectl get pods -n kube-system
如果你看到任何吊舱正在崩溃,请检查其日志
如果获取NotReady
状态错误,请验证网络pod日志。
如果无法解决以上问题,请执行以下步骤:-
-
kubectl get nodes
#检查哪个节点未处于就绪状态 -
kubectl describe node nodename
#不在readystate 中的节点名 -
ssh到该节点
-
execute
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利用率。并确保任何进程都不会占用意外内存。
由于不同的原因,我遇到了类似的问题:
错误:
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.conf冲突不正确。从不同的节点和同一目录"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
我最近开始使用VMWare Octanthttps://github.com/vmware-tanzu/octant.这是一个比Kubernetes Dashboard更好的UI。您可以查看Kubernetes集群,并查看集群和PODS的详细信息。这将允许您检查日志并在POD中打开一个终端。
我发现应用网络并重新启动两个节点对我来说很有用。
kubectl apply -f [podnetwork].yaml
我最近遇到了这个问题,并在kind网站上查看了已知的问题https://kind.sigs.k8s.io/docs/user/known-issues/它会特别告诉你,主要问题主要来自于分配给docker的内存不足。他们实际上建议将8GB分配给docker,我从3GB分配了6GB,对我来说效果很好,这是一个不错的版本,我正在运行atm
$ kind version
kind v0.10.0 go1.15.7 darwin/amd64
这是docker版本的
$ docker version
Client:
Cloud integration: 1.0.17
Version: 20.10.8
API version: 1.41
Go version: go1.16.6
Git commit: 3967b7d
Built: Fri Jul 30 19:55:20 2021
OS/Arch: darwin/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.8
API version: 1.41 (minimum version 1.12)
Go version: go1.16.6
Git commit: 75249d8
Built: Fri Jul 30 19:52:10 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.9
GitCommit: e25210fe30a0a703442421b0f60afac609f950a3
runc:
Version: 1.0.1
GitCommit: v1.0.1-0-g4144b63
docker-init:
Version: 0.19.0
GitCommit: de40ad0
我希望这能帮助你或任何面临同样问题的人。这是的输出
$ k get node
NAME STATUS ROLES AGE VERSION
test2-control-plane Ready control-plane,master 4m42s v1.20.2