我想解决我的 Amazon Elastic Kubernetes Service (Amazon EKS) Worker 节点上的“No space left on device: unknown”(设备上没有剩余空间:未知)错误。
要解决 Amazon EKS Worker 节点上的 No space left on device: unknown(设备上没有剩余空间:未知)错误,请完成以下步骤:
封锁 Worker 节点以将 Worker 节点从集群中移除,并防止容器组被调度: **注意:**将 example-worker-node 替换为 Worker 节点名称。确保使用正确的 IP 地址作为 Worker 节点名称的一部分(例如 ip-123-456-78-90.aws-region.compute.internal)。
kubectl cordon example-worker-node
耗尽 Worker 节点: **注意:**将 example-worker-node 替换为 Worker 节点名称。确保使用正确的 IP 地址作为 Worker 节点名称的一部分(例如 ip-123-456-78-90.aws-region.compute.internal)。
kubectl drain --ignore-daemonsets example-worker-node
打开 AWS 管理控制台。
要连接到受影响的 Worker 节点,请使用 SSH 或会话管理器,这是 AWS Systems Manager 的一项功能。
切换到根用户:
sudo su -
手动修剪或删除悬空和未使用的映像。默认情况下,命名空间为 k8s.io。 **注意:**运行此命令时,您可能会收到错误消息 Buildkit is not running or installed errors(Buildkit 未运行或安装错误)。您可以忽略此错误以及运行此命令时可能收到的任何其他错误消息。
nerdctl system prune --all --namespace=k8s.io
取消对 Worker 节点的封锁以使 Worker 节点重新投入使用: **注意:**将 example-worker-node 替换为 Worker 节点名称。确保使用正确的 IP 地址作为 Worker 节点名称的一部分(例如 ip-123-456-78-90.aws-region.compute.internal)。
kubectl uncordon example-worker-node
检查 Worker 节点状态是否为 Ready(就绪)。 **注意:**将 example-worker-node 替换为 Worker 节点名称。确保使用正确的 IP 地址作为 Worker 节点名称的一部分(例如 ip-123-456-78-90.aws-region.compute.internal)。
kubectl get nodes | grep example-worker-node
检查您是否可以调度容器组以及它们是否成功运行: **注意:**将 example-worker-node 替换为 Worker 节点名称。确保使用正确的 IP 地址作为 Worker 节点名称的一部分(例如 ip-123-456-78-90.aws-region.compute.internal)。
kubectl get pods -A -o wide | grep example-worker-node