gpt4 book ai didi

kubernetes - 卸载calico后新的pod卡在containercreating状态

转载 作者:行者123 更新时间:2023-12-02 11:55:26 41 4
gpt4 key购买 nike

卸载 calico 后,kubectl -f calico.yaml,无法在集群中创建新的 Pod。集群中的任何新 pod 都停留在容器创建状态。 Kubectl describe 显示以下错误:

Warning FailedCreatePodSandBox 2m kubelet, 10.0.12.2 Failed create pod sandbox: rpc error: code = Unknown desc = [failed to set up sandbox container "f15743177fd70c5eabf70c60be5b8b354e5346837d1b5d59bf99d1d1b5d6416c" network for pod "test-9465-768b57b5df-fv9d4": NetworkPlugin cni failed to set up pod "test-9465-768b57b5df-fv9d4_policy-demo" network: error getting ClusterInformation: connection is unauthorized: Unauthorized, failed to clean up sandbox container "f15743177fd70c5eabf70c60be5b8b354e5346837d1b5d59bf99d1d1b5d6416c" network for pod "test-9465-768b57b5df-fv9d4": NetworkPlugin cni failed to teardown pod "test-9465-768b57b5df-fv9d4_policy-demo" network: error getting ClusterInformation: connection is unauthorized: Unauthorized]

最佳答案

主要问题是因为 calico 有一个 init 容器但没有一个 cleanup 容器。吨

要取消部署 calico,我们必须执行通常的 kubectl delete -f <yaml> ,然后在每个节点中删除一个calico conf文件/etc/cni/net.d/ .此配置文件和其他二进制文件由 init 容器加载到主机上。

https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/

从这个链接我们可以看到,kubelet 从默认目录中读取配置文件,如果有多个配置文件,那么它会从按字母顺序出现的配置文件中应用 CNI 插件(为什么,天哪?? )。

因此,在我们的例子中,卸载 calico 后,它将从所有管理员权限中删除,但节点仍会尝试根据从默认目录中获取的配置文件应用 calico 规则。然后重新启动节点以摆脱 iptable 规则。

删除文件并重新启动节点解决了问题,我们恢复了正常行为。如果您在托管的 kubernetes 集群上,另一种解决相同问题的方法是简单地从集群中终止节点。由于公有云基础设施会自动启动另一个节点以保持相同的状态,因此它不再具有 calico 配置文件。

关于kubernetes - 卸载calico后新的pod卡在containercreating状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61672804/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com