我有一个在 AWS 中运行的 Kubernetes v1.4 集群,具有自动缩放节点。我还有一个 Mongo Replica Set 集群,其中包含仅 SSL 连接(FQDN 公用名)和公共 DNS 条目:
- node1.mongo.example.com -> 1.1.1.1
- node2.mongo.example.com -> 1.1.1.2
- node3.mongo.example.com -> 1.1.1.3
Kubernetes 节点是允许访问 mongo 集群的安全组的一部分,但只能通过它们的私有 IP。
当查询公共 FQDN 时,有没有办法在 Kubernetes DNS 中使用私有 IP 创建 A 记录?
我尝试的第一件事是在启动时更新 /etc/hosts 的脚本和 ConfigMap 组合(参考。它是向 kube-dns 添加任意记录的一种方法吗?),但这是有问题的,因为其他 Kubernetes 服务也可能更新主机在不同的时间归档。
我还尝试了 Services & Enpoints 配置:
---
apiVersion: v1
kind: Service
metadata:
name: node1.mongo.example.com
spec:
ports:
- protocol: TCP
port: 27017
targetPort: 27017
---
apiVersion: v1
kind: Endpoints
metadata:
name: node1.mongo.example.com
subsets:
- addresses:
- ip: 192.168.0.1
ports:
- port: 27017
但这失败了,因为服务名称不能是 FQDN ...