配置EKS工作节点子网NAT网关后节点NotReady,求正确部署方法
正确配置EKS工作节点NAT网关的方法
问题根源
你遇到的节点变NotReady的核心原因是:EKS工作节点需要和控制平面双向通信,但你把节点子网的默认路由改成NAT网关后,控制平面无法主动访问节点(NAT网关只支持出站流量转发,不处理入站请求),导致kubelet和API服务器的心跳中断,最终节点进入NotReady状态,kubectl exec的认证错误也是通信中断引发的连锁问题。
正确配置步骤
1. 理清核心网络逻辑
EKS节点子网必须同时满足两个需求:
- 出站流量走NAT网关(用于拉取容器镜像、访问公网服务等场景)
- 维持和EKS控制平面的内网连通(控制平面要能主动连接节点的kubelet端口,节点也要能访问控制平面的API端点)
2. 准备NAT网关
- 选择一个绑定弹性公网IP的公有子网创建NAT网关,确保其状态为
Available - 常规场景下不要将NAT网关部署在节点所在的私有子网中
3. 调整节点子网的路由表
不要直接替换原有路由,而是在现有路由表基础上添加规则:
- 保留原有指向EKS控制平面CIDR的路由条目(通常目标为控制平面的私有IP段,下一跳为VPC内网路由)
- 新增一条
0.0.0.0/0的路由,下一跳指向刚创建的NAT网关(负责所有出站公网流量) - 确保路由表中没有任何会阻断控制平面与节点通信的规则
4. 验证连通性
通过SSH登录到工作节点,执行以下命令确认:
# 测试与EKS控制平面的连通性(替换为你的集群API端点) curl -v https://xxxxxx.eks.amazonaws.com # 测试公网访问(确认NAT网关生效) curl -v https://github.com
5. 检查安全组配置
节点安全组必须允许:
- 入站:来自EKS控制平面的TCP 443(API通信)、TCP 10250(kubelet通信)端口
- 出站:所有TCP/UDP流量(确保能通过NAT网关访问公网)
关键注意事项
绝对不能把节点子网的默认路由完全替换成NAT网关,必须保留控制平面的内网路由条目——这是你之前出错的核心原因。只要维持住控制平面和节点的双向内网连通,再叠加NAT网关的出站路由,节点就能保持Ready状态,同时正常访问公网。
内容的提问来源于stack exchange,提问作者user3398900
相关产品推荐
相关产品推荐

