Kubernetes 版本 1.13.5,由 kubeadm 在裸机中安装。
我创建了 2 个命名空间,分别是“dev”和“test”。将一些自创建的 dns 记录(如 'mysql.a.com')添加到默认在 'kube-system' ns 中的 coredns 中。
我想要实现的是让每个命名空间中的 pod 拥有自己的 dns 记录解析,例如 'dev' ns 查找中的 pod 'mysql.a.com' 得到 1.1.1.1,'test' ns 查找中的 pod 'mysql' .a.com' 得到 2.2.2.2。我想将 DNS 记录映射到的所有这些服务都在集群之外。
这可能吗?或者有什么我想念的。
最佳答案
避免为此在 CoreDNS 中配置集群范围的默认值。而是使用 Kubernetes 服务。
service type ExternalName可用于在 DNS 中创建条目。由于 ExternalName 服务,就像其他服务一样,是命名空间资源,您可以在各自的命名空间中以不同方式解析相同的 DNS 条目。
开发示例:
apiVersion: v1
kind: Service
metadata:
name: database
namespace: dev
spec:
type: ExternalName
externalName: dev-database.example.com
测试示例:
apiVersion: v1
kind: Service
metadata:
name: database
namespace: test
spec:
type: ExternalName
externalName: test-database.example.com
在每个命名空间内,对
database.svc.cluster.local
的 DNS 查询将解析为 dev-database.example.com
或 test-database.example.com
.
关于kubernetes - 如何在 kubernetes 中使用多个命名空间配置 coredns,以在每个命名空间中实现 pod 获得自己的 dns 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61008575/