【问题标题】:After uninstalling calico, new pods are stuck in container creating state卸载calico后,新的pod卡在容器创建状态
【发布时间】:2020-08-23 15:15:08
【问题描述】:

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

警告失败版本盒2m kubelet,10.0.12.2失败创建吊舱沙箱:rpc错误:code =未知desc = [设置sandbox container'foct sandbox容器“f15743177fd70c5eabf70c60be5b8b354e5346837d1b5d59bf99d1d1b59bf99d1d1b59bf99d1d1b59bf9d1d1b5d6416c”用于Pod网络“测试-9465-768b57b5df-fv9d4”:networkplugin cni失败成立荚“测试9465-768b57b5df-fv9d4_policy-演示”网络:错误越来越ClusterInformation:连接未经授权:未经授权,未能清除沙箱集装箱“f15743177fd70c5eabf70c60be5b8b354e5346837d1b5d59bf99d1d1b5d6416c”网络荚“测试9465-768b57b5df-fv9d4”:NetworkPlugin cni 无法拆除 pod“test-9465-768b57b5df-fv9d4_policy-demo”网络:获取 ClusterInformation 时出错:连接未授权:未授权]

【问题讨论】:

    标签: kubernetes calico


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      • 2020-11-02
      • 2016-05-28
      • 2020-05-19
      • 2021-09-23
      • 2022-11-03
      • 1970-01-01
      相关资源
      最近更新 更多