Amazon Linux 2023实例出站连接异常及EKS集群修复咨询
Amazon Linux 2023 AMI 1.27.4-20230825 出站TCP请求失效问题
已知原因
该问题是此特定版本AMI的已知bug,根源在于默认配置的iptables规则错误拦截了TCP协议的出站流量。ping依赖ICMP协议,不在拦截范围内所以可正常执行;而curl使用TCP协议,因此请求失败。该bug仅存在于Amazon Linux 2023的1.27.4-20230825版本中,后续AMI版本已修复此问题。
修复方案
一、单个EC2实例修复
临时修复(重启后失效)
- 查看当前iptables规则,确认拦截项:
iptables -L OUTPUT -n -v - 删除错误的TCP拦截规则,示例命令:
iptables -D OUTPUT -p tcp -j REJECT - 若不确定具体规则,可直接重置iptables:
iptables -F && iptables -X && iptables -t nat -F && iptables -t nat -X && iptables -t mangle -F && iptables -t mangle -X && iptables -P INPUT ACCEPT && iptables -P FORWARD ACCEPT && iptables -P OUTPUT ACCEPT
永久修复
- 编辑iptables配置文件(通常为
/etc/sysconfig/iptables或/etc/iptables/rules.v4),删除其中错误的TCP拦截规则。 - 保存配置后重启iptables服务:
systemctl restart iptables
二、EKS集群节点组批量修复
方法1:用DaemonSet自动修复
创建DaemonSet在所有问题节点上执行修复:
apiVersion: apps/v1 kind: DaemonSet metadata: name: fix-iptables namespace: kube-system spec: selector: matchLabels: name: fix-iptables template: metadata: labels: name: fix-iptables spec: hostNetwork: true containers: - name: fix-iptables image: amazonlinux:2023 command: ["/bin/sh", "-c"] args: - | iptables -D OUTPUT -p tcp -j REJECT || true iptables-save > /etc/sysconfig/iptables systemctl restart iptables securityContext: privileged: true volumeMounts: - name: sysconfig mountPath: /etc/sysconfig volumes: - name: sysconfig hostPath: path: /etc/sysconfig
应用该配置:
kubectl apply -f fix-iptables-daemonset.yaml
方法2:升级节点组AMI版本
将EKS节点组的AMI升级到1.27.4之后的Amazon Linux 2023版本(如1.27.5-20230901及以上),后续版本已修复此iptables规则问题。
方法3:用户数据初始化修复
在节点组的用户数据中添加修复脚本,确保新节点启动时自动修正规则:
#!/bin/bash iptables -D OUTPUT -p tcp -j REJECT || true iptables-save > /etc/sysconfig/iptables systemctl restart iptables
内容的提问来源于stack exchange,提问作者cmcnphp
相关产品推荐
相关产品推荐

