kuberntes/manifest 更新后 kubelet 不会启动
kubelet won't start after kuberntes/manifest update
这在我们的 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
将评论作为社区 wiki 答案发布以获得更好的知名度
此问题是由于 kubelet
证书已过期并已在 these steps 后修复。如果有人遇到此问题,请确保 /var/lib/kubelet/pki/kubelet-client-current.pem
证书和密钥值在 /etc/kubernetes/kubelet.conf
上进行了 base64
编码
这在我们的 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
许多其他人再次建议 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
将评论作为社区 wiki 答案发布以获得更好的知名度
此问题是由于 kubelet
证书已过期并已在 these steps 后修复。如果有人遇到此问题,请确保 /var/lib/kubelet/pki/kubelet-client-current.pem
证书和密钥值在 /etc/kubernetes/kubelet.conf
base64
编码