我的us-east-1中的EKS集群停止使用所有未就绪节点,因为kubelet无法拉出暂停容器。这是在启动时执行的kubelet命令
/usr/bin/kubelet --cloud-provider aws --config /etc/kubernetes/kubelet/kubelet-config.json --kubeconfig /var/lib/kubelet/kubeconfig --container-runtime docker --network-plugin cni --node-ip=10.0.21.107 --pod-infra-container-image=602401143452.dkr.ecr.us-east-1.amazonaws.com/eks/pause-amd64:3.1 --node-labels=kubernetes.io/lifecycle=spot
问题在于拉出图像
602401143452.dkr.ecr.us-east-1.amazonaws.com/eks/pause-amd64:3.1
其他必需的容器也不可用,例如:
602401143452.dkr.ecr.us-east-1.amazonaws.com/eks/kube-proxy:v1.14.6
602401143452.dkr.ecr.us-east-1.amazonaws.com/eks/coredns:v1.3.1
另一方面,容器映像可从其他区域获得,而不仅仅是群集所在的区域。
Kubernetes事件提到未初始化的cni插件。这是预料之中的,因为aws节点容器无法启动。
答案 0 :(得分:0)
工作节点所在的VPC具有用于ECR的PrivateLink端点。该终结点及其附带的DNS条目使同一区域内的ECR域解析为私有IP。这就是为什么docker pull只对同一区域的ECR失败的原因。
辅助节点的安全组需要允许(https)通信出到PrivateLink终结点安全组。