删除所有工作程序节点后,为什么我的 pod 不在新的工作程序节点上启动?
排查工作节点删除失败和Pod卡死的问题。
虚拟私有云 传统基础设施
您已删除集群中的所有工作程序节点,因此存在零个工作程序节点。 然后,添加了一个或多个工作程序节点。 运行以下命令时,Kubernetes 组件的几个 pod 会卡死在 ContainerCreating 状态,而 calico-node pod 会卡死在 CrashLoopBackOff 状态。
oc -n calico-system get pods
删除集群中的所有工作程序节点时,不存在要在其上运行 calico-kube-controllers pod 的工作程序节点。 Calico 控制器 pod 的数据无法更新以删除已删除工作节点的数据。 当 Calico 控制器 pod 在新的工作节点上重新开始运行时,其数据不会针对新的工作节点进行更新,也不会启动 calico-node pod。
删除现有的 calico-node 工作程序节点条目,以便可以创建新的 pod。
开始之前: 安装 Calico CLI。
-
运行
ibmcloud oc cluster config命令并复制和粘贴输出以设置KUBECONFIG环境变量。 在--admin命令中包含--network和ibmcloud oc cluster config选项。 “--admin”选项用于下载访问您的基础设施组合所需的密钥,并在您的工作节点上运行 Calico 命令。--network选项会下载 Calico 配置文件,以便运行所有 Calico 命令。ibmcloud oc cluster config --cluster CLUSTER_NAME_OR_ID --admin --network -
对于处于
CrashLoopBackOff状态的calico-nodepod,请记下NODEIP 地址。oc -n calico-system get pods -o wide在此示例输出中,
calico-nodepod 无法在工作程序节点10.176.48.106上启动。NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES ... calico-kube-controllers-656c5785dd-kc9x2 1/1 Running 0 25h 10.176.48.107 10.176.48.107 <none> <none> calico-node-mkqbx 0/1 CrashLoopBackOff 1851 25h 10.176.48.106 10.176.48.106 <none> <none> coredns-7b56dd58f7-7gtzr 0/1 ContainerCreating 0 25h 172.30.99.82 10.176.48.106 <none> <none> -
获取
calico-node工作程序节点条目的标识。 仅 复制您在上一步中检索到的工作程序节点 IP 地址的标识。calicoctl get nodes -o wide -
使用标识来删除工作程序节点条目。 删除工作程序节点条目后,Calico 控制器会重新调度新工作程序节点上的
calico-nodepod。calicoctl delete node <node_ID> -
验证 Kubernetes 组件 pod (包括
calico-nodepod) 现在是否正在运行。 调度calico-nodePod 和创建新组件 Pod 可能需要几分钟时间。oc -n calico-system get pods
要防止将来发生此错误,请切勿删除集群中的所有工作程序节点。 始终在集群中至少运行一个工作程序节点,如果使用 Ingress 或路由来公开应用程序,那么每个专区至少运行两个工作程序节点。