Kubernete无法从eks pod访问rds mysql

时间:2020-01-01 20:56:39

标签: amazon-web-services kubernetes amazon-rds eks

我正在尝试使用rds mysql设置eks。我使用eksctl设置eks集群,但没有更改任何默认网络配置。 eks和rds使用相同的vpc。 这是调试窗格中的结果

telnet xx.rds.amazonaws.com 3306
Connected to xx.us-west-2.rds.amazonaws.com
J
8.0.16\#t'Ti1??]Gp^;&Aomysql_native_passwordConnection closed by foreign host
/ # nslookup xxx.us-west-2.rds.amazonaws.com
Server:     10.100.0.10
Address:    10.100.0.10:53

Non-authoritative answer:
xxx.us-west-2.rds.amazonaws.com canonical name = ec2-xx.us-west-2.compute.amazonaws.com
Name:   ec2-xx.us-west-2.compute.amazonaws.com
Address: 192.168.98.108

nc -vz 192.168.98.108 3306
192.168.98.108 (192.168.98.108:3306) open

我使用了服务网格Istio,我在没有启用命名空间的sidecar中创建了一个mysql客户端Pod,但收到如下错误消息 MySQL客户端容器

 ERROR 2002 (HY000) Can't connect to MySQL sever on xxxxx.us-west-2.rds.amazonaws.com. 

enter image description here 我是vpc的新手。 rds和vpc使用相同的vpc。它们是否连接在专用网络中?

如果在我的grpc服务器日志中显示连接被拒绝,则eks grpc服务器尝试连接192.168.98.108,这是广告的专用ip。我是否需要在vpc中进行其他配置?有任何想法吗?欢呼

1 个答案:

答案 0 :(得分:0)

我确实有相同的情况(与EKS群集在同一VPC中的RDS)。我所做的如下:

  1. 我创建了一个Cloudformation模板,使用该模板创建了自定义VPC,8个子网(3个公共,3个用于EKS集群的私有网络和2个用于RDS数据库的私有网络),Internet网关,NAT网关,路由表和路线。

  2. 使用eksctl和群集配置yaml,我创建了群集和节点组。节点组加入了我的集群。

  3. 使用aws cli,我创建了db-subnet-group(包含2个私有DB子网),并且还启动了RDS实例。然后,我设置了一个安全组,以仅允许从3个私有子网向DB的通信)

作为创建我的自定义cloudformation模板的参考,当运行带有--node-private-networking标志的create命令时,我使用了eksctl创建的模板。