【发布时间】:2021-12-23 16:02:39
【问题描述】:
这在我们的 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状态。
正如描述者 here 更新的 /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
尝试按照here 的描述将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 证书已过期并按照these 步骤修复。如果有人遇到此问题,请确保 /var/lib/kubelet/pki/kubelet-client-current.pem 证书和密钥值在放置 /etc/kubernetes/kubelet.conf 时采用 base64 编码
许多其他人再次建议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
【问题讨论】:
-
从 v1.21 更新到 k8s v1.22.2 后我遇到了类似的问题:/
-
我注意到您正在设置标志 --fail-swap-on=false,但是您可以尝试运行命令 sudo swapoff -a 并执行 重启 kubelet。如果它不起作用,请尝试在 docker 中将 cgroup 更改为 systemd。为此,将 /etc/docker/daemon.json 文件编辑为 '{ "exec-opts": ["native.cgroupdriver=systemd"] }'。并使用 sudo systemctl restart docker 重新启动 docker。有关更多信息,请参阅doc。
-
@ChandraKiranPasumarti 好吧,即使在
docker restart之后,kubelet 仍然没有启动 -
你能检查僵尸进程是否在节点上运行吗?只需
ps aux | grep 'Z' -
@AndD 没有显示僵尸进程
标签: kubernetes kubelet cni