EKS 工作节点未就绪且 ECR 不可访问
EKS worker nodes not ready and ECRs not reachable
我在 us-east-1 中的 EKS 集群停止与所有节点 NotReady 一起工作,因为 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-node pods 没有启动。
工作节点所在的 VPC 有一个用于 ECR 的 PrivateLink 端点。该端点及其附带的 DNS 条目使同一区域内的 ECR 域解析为私有 IP。这就是为什么 docker 拉取仅对同一地区的 ECR 失败。
工作节点的安全组需要允许 (https) 流量传出到 PrivateLink 端点安全组。
我在 us-east-1 中的 EKS 集群停止与所有节点 NotReady 一起工作,因为 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-node pods 没有启动。
工作节点所在的 VPC 有一个用于 ECR 的 PrivateLink 端点。该端点及其附带的 DNS 条目使同一区域内的 ECR 域解析为私有 IP。这就是为什么 docker 拉取仅对同一地区的 ECR 失败。
工作节点的安全组需要允许 (https) 流量传出到 PrivateLink 端点安全组。