【问题标题】:Kubernete have no access from eks pod to rds mysqlKubernetes 无法从 eks pod 访问 rds mysql
【发布时间】:2020-01-01 20:56:39
【问题描述】:

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

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 客户端 pod

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

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

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

【问题讨论】:

  • 你确定在同一个VPC中有eke和rds吗?
  • 感谢您的回复。我只是使用相同的 vpc 仔细检查 eks 和 rds
  • VPC 是在我使用 eksctl 创建 eks 集群时自动创建的。我没有更改任何 eks 网络配置默认值(eks 安全组 eks、eks 网络 acls) 对于我的 sql,我为 vpc 安全组添加入站规则 3306 0.0.0.0:0。
  • 你有像 envoy 这样的 sidecar 代理吗?还是像 Istio 这样配置的服务网格?有时这些需要一些出站配置。
  • 我想当你创建一个 rds 时它也会自动创建一个 vpc

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


【解决方案1】:

我确实遇到了相同的场景(RDS 在与 EKS 集群相同的 VPC 中)。我所做的如下:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2019-05-03
    • 2023-04-07
    • 2020-07-06
    • 1970-01-01
    • 2015-04-10
    • 2019-05-08
    • 1970-01-01
    • 2021-06-24
    • 2020-04-12
    相关资源
    最近更新 更多