这在我们的 K8 集群中是一种奇怪的行为。
当我们尝试部署新版本的应用程序时,我们会得到:
Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "<container-id>" network for pod "application-6647b7cbdb-4tp2v": networkPlugin cni failed to set up pod "application-6647b7cbdb-4tp2v_default" network: Get "https://[10.233.0.1]:443/api/v1/namespaces/default": dial tcp 10.233.0.1:443: connect: connection refused
我使用kubectl get cs
并找到controller
并scheduler
处于Unhealthy
状态。
正如这里的描述更新/etc/kubernetes/manifests/kube-scheduler.yaml
和
/etc/kubernetes/manifests/kube-controller-manager.yaml
评论--port=0
当我检查systemctl status kubelet
它正在工作时。
Active: active (running) since Mon 2020-10-26 13:18:46 +0530; 1 years 0 months ago
我已经重新启动了 kubelet 服务,controller
并且scheduler
显示它很健康。
但systemctl status kubelet
显示(重启 kubelet 后不久显示运行状态)
Active: activating (auto-restart) (Result: exit-code) since Thu 2021-11-11 10:50:49 +0530; 3s ago<br>
Docs: https://github.com/GoogleCloudPlatform/kubernetes<br> Process: 21234 ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET
尝试按照此处所述添加Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true --fail-swap-on=false"
,但/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
仍然无法正常工作。
还删除--port=0
了上述清单中的注释并尝试重新启动,结果仍然相同。
编辑:此问题是由于kubelet
证书已过期并按照以下步骤修复。如果有人遇到这个问题,请确保/var/lib/kubelet/pki/kubelet-client-current.pem
证书和密钥值在放置时是 base64 编码的/etc/kubernetes/kubelet.conf
许多其他人kubeadm init
再次建议。但是这个集群是在kubespray
没有手动添加节点的情况下创建的。
我们在 Ubuntu 18.04 上运行了裸机 k8。K8:v1.18.8
我们想知道任何调试和修复建议。
PS:
当我们尝试telnet 10.233.0.1 443
从任何节点时,第一次尝试失败,第二次尝试成功。
编辑:在kubelet
服务日志中找到这个
Nov 10 17:35:05 node1 kubelet[1951]: W1110 17:35:05.380982 1951 docker_sandbox.go:402] failed to read pod IP from plugin/docker: networkPlugin cni failed on the status hook for pod "app-7b54557dd4-bzjd9_default": unexpected command output nsenter: cannot open /proc/12311/ns/net: No such file or directory