向 Kubernetes 上的 CoreDNS 服务添加一条简单的 A 记录

seb*_*lel 6 nfs kubernetes coredns

问题是这样的:我们有几个 microk8s 集群运行在不同的网络上;但每个人都可以访问我们的 NAS 所在的存储网络。

在 Kubernetes 中,我们使用 nfs-provisioner (nfs-externalsubdir) 创建磁盘。有些磁盘是使用指定的 NAS 服务器的 IP 创建的。当我们需要更改IP时,我们发现磁盘与IP绑定了,更改IP意味着在其中创建新的存储资源。

为了避免这种情况,我们希望能够在 Kubernetes 集群级别设置 DNS 记录,以便我们可以使用 nfs 配置程序基于名称而不是 IP 创建存储资源,并且我们可以在需要时更改 DNS 记录(当例如,我们升级或迁移我们的外部 NAS 设备)例如,我想告诉每个 microk8s 环境:

192.168.1.4 my-nas.mydomain.local

...就像我在 /etc/hosts 文件中一样。

有没有正确的方法来实现这一目标?我尝试遵循此链接上的建议:Is there a way to add randomrecords to kube-dns? (答案被赞成 15 次,集群部分),重新启动部署,但它不起作用

我无法使用 hostAliases 功能,因为我们使用的每个图表上并未提供该功能,这就是我正在寻找更全局的解决方案的原因。

此致,

Har*_*var 1

您可以使用 Kube-DNS (Core-DNS) 在 K8s 中设置自定义 DNS

您必须将配置文件作为configmap注入/传递到核心 DNS 卷。

配置图看起来像

apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health {
            lameduck 5s
        }
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
            pods insecure
            fallthrough in-addr.arpa ip6.arpa
            ttl 30
        }
        prometheus :9153
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }  
Run Code Online (Sandbox Code Playgroud)

您可以在以下位置阅读更多信息: https: //kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/

https://platform9.com/kb/kubernetes/how-to-customize-coredns-configuration-for-adding-additional-ext

或者您也可以将外部 DNS核心 DNS一起使用

您可以注释服务(资源),外部 DNS 会将地址添加到 core-dns

阅读更多相关信息:

https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/coredns.md

https://docs.mirantis.com/mcp/q4-18/mcp-deployment-guide/deploy-mcp-cluster-using-drivetrain/deploy-k8s/external-dns/verify-external-dns/coredns-etxdns-验证.html