我正在尝试在 AWS 上设置 kubernetes。为此,我根据官方 AWS 教程创建了一个具有 3 个节点 (t2.small) 的 EKS 集群。然后我想用一些与 Postgres(不同 VPC 中的 RDS)通信的应用程序运行一个 pod。
但不幸的是,该应用程序没有连接到数据库。
是)我有的:
- EKS 集群拥有自己的 VPC (CIDR: 192.168.0.0/16)
- RDS (Postgres) 有自己的 VPC (CIDR: 172.30.0.0/16)
- 从 RDS VPC 到 EKS VPC 的对等连接
- 更新了 EKS 集群的 3 个公共子网的路由表:目标为 172.30.0.0/16 和目标的路由 - 添加了步骤 #3 中的对等连接。
- 更新了 RDS 的路由表:添加了目标为 192.168.0.0/16 和目标的路由 - 来自步骤 #3 的对等连接。
- RDS安全组更新,新增入站规则:允许来自192.168.0.0/16的所有流量
在所有这些步骤之后,我执行 kubectl 命令:
kubectl exec -it my-pod-app-6vkgm nslookup rds-vpc.unique_id.us-east-1.rds.amazonaws.com
nslookup: can't resolve '(null)': Name does not resolve
Name: rds-vpc.unique_id.us-east-1.rds.amazonaws.com
Address 1: 52.0.109.113 ec2-52-0-109-113.compute-1.amazonaws.com
然后我连接到 3 个节点之一并执行命令:
getent hosts rds-vpc.unique_id.us-east-1.rds.amazonaws.com
52.0.109.113 ec2-52-0-109-113.compute-1.amazonaws.com rds-vpc.unique_id.us-east-1.rds.amazonaws.com
为了从 pod 访问 RDS,我在 EKS 设置中错过了什么?
更新:
我试图通过以下方式解决问题Service
:
apiVersion: v1
kind: Service
metadata:
name: postgres-service
spec:
type: ExternalName
externalName: rds-vpc.unique_id.us-east-1.rds.amazonaws.com
所以我在 EKS 中创建了这个服务,然后尝试引用postgres-service
为 DB URL 而不是直接的 RDS 主机地址。
此修复不起作用:(