如果您的 EKS 集群中出现了此问题,您可以采取以下步骤解决:
使用 kubectl get nodes 向 EKS 集群发出请求,以查看节点的状态是否为 NotReady。
如果节点的状态为 NotReady,则使用 kubectl describe node 命令查看节点的事件和条件。该命令将返回节点详细信息。
在节点详细信息中查看事件并对其进行故障排除。
例如,以下的日志可能表示该节点已被移除。
Warning NodeNotReady 5m22s (x693 Over 300 occurrences) kubelet, ip-10-0-1-218.oregon.internal Node has not been ready within the timeout given by kubelet (4m0s).
如果节点已经被移除,请使用 kubectl delete node 命令删除该节点,以便 Kubernetes 重新部署 Pod。
如果您还有一个节点空闲,请手动将 Pod 部署到空闲节点上,以避免将 Pod 部署到已经移除的节点上。以下是一个部署 Pod 的示例命令:
kubectl run nginx --image=nginx --restart=Never --overrides='{ "apiVersion": "v1", "spec": { "nodeSelector": { "kubernetes.io/hostname": "NodeName" } } }'
其中,NodeName 为空闲节点的名称,您需要将其替换为实际的节点名称。
kubectl delete node NodeName
以上方法可以帮助您解决 Amazon EKS 中 Pod 被安排在已移除的节点上的问题。