删除所有工作程序节点后,为什么我的 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 或路由来公开应用程序,那么每个专区至少运行两个工作程序节点。