AWS MWAA调用EKSPodOperator连接EKS API Server时出现HTTPS超时
问题排查:MWAA通过EKSPodOperator连接EKS API Server超时
核心问题
使用MWAA的EKSPodOperator启动EKS Pod时触发HTTPS连接超时,本地可正常访问目标EKS API Server,且MWAA安全组已配置全量出站允许。报错信息如下:
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='REDACTED.gr7.us-east-1.eks.amazonaws.com', port=443): Max retries exceeded with url: /api/v1/namespaces/airflow/pods?labelSelector=dag_id%3Deks_pod_example%2Cdemo%3Dhello_world%2Ckubernetes_pod_operator%3DTrue%2Crun_id%3Dmanual__2024-06-18T132428.5113700000-b8a425de4%2Ctask_id%3Dstart_pod%2Calready_checked%21%3DTrue%2C%21airflow-worker (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x7f1c87a07690>, 'Connection to REDACTED.gr7.us-east-1.eks.amazonaws.com timed out. (connect timeout=None)'))
排查与解决步骤
1. 检查MWAA所在VPC的网络ACL
安全组允许出站不代表VPC网络ACL也放行,需确认MWAA子网的出站网络ACL:
- 确保规则允许443端口TCP流量到EKS API Server的公网IP段
- 确认拒绝出站的规则优先级低于允许规则
2. 验证EKS VPC端点配置(若使用)
如果MWAA所在VPC配置了EKS的VPC端点(网关或接口类型):
- 确认端点状态为
Available - 检查端点安全组是否允许MWAA安全组的443端口入站
- 接口类型端点需确保EKS API Server的DNS解析指向端点IP而非公网IP
3. 确认EKS集群的访问控制策略
检查EKS的aws-auth ConfigMap,确保MWAA执行角色已被授权访问集群:
- 执行角色需具备
eks:DescribeCluster等必要权限 - 在ConfigMap中添加对应角色条目,示例格式:
mapRoles: - rolearn: arn:aws:iam::ACCOUNT_ID:role/MWAA-Execution-Role username: mwaa-execution-role groups: - system:masters # 按需调整权限组
4. 测试MWAA环境的网络连通性
添加测试DAG,用BashOperator执行curl命令验证EKS API连通性:
from airflow import DAG from airflow.operators.bash import BashOperator from datetime import datetime with DAG('test_eks_connectivity', start_date=datetime(2024,6,1)) as dag: test_conn = BashOperator( task_id='test_eks_api', bash_command='curl -v https://REDACTED.gr7.us-east-1.eks.amazonaws.com/api/v1/namespaces/default' )
通过任务日志确认是连接超时还是权限问题。
5. 检查EKS API Server的安全组
本地能访问不代表MWAA子网IP段被允许,需确认:
- EKS API Server安全组的入站规则包含MWAA子网的CIDR范围(443/TCP)
6. 验证MWAA执行角色权限
确保执行角色具备以下权限:
eks:DescribeCluster:用于获取EKS集群的API端点和证书数据sts:AssumeRole:若使用IRSA,需确保角色能关联到EKSPodOperator使用的ServiceAccount
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

