kubernetes - 如何在 kubernetes 中使用多个命名空间配置 coredns,以在每个命名空间中实现 pod 获得自己的 dns 解析

标签 kubernetes namespaces coredns

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.comtest-database.example.com .

关于kubernetes - 如何在 kubernetes 中使用多个命名空间配置 coredns,以在每个命名空间中实现 pod 获得自己的 dns 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61008575/

相关文章:

kubernetes - 如何启动kubelet服务?

kubernetes - Pod规范中为何定义容器重启策略?

c# - uwp c# 2019 : How to refer to RootGrid

PHP call_user_func 命名空间别名

kubernetes - Azure (AKS) 中的 kubernetes 集群升级 1.24.9 处于失败状态,pod 面临间歇性 DNS 问题

Kubernetes Engine API 删除 pod

amazon-ec2 - 将流量路由到 AWS EC2 上的公共(public) Kubernetes 服务

javascript - js - 避免 namespace 冲突

ssl - 如何在 Kubernetes 中的 pod-to-service 调用中轻松启用 SSL

某些查询中附加了 kubernetes dns 搜索域