Kubernetes修改CoreDNS配置文件解析内部域名

在 Kubernetes 中,CoreDNS 作为默认的 DNS 服务器,负责集群内部的域名解析。要添加域名解析,通常需要修改 CoreDNS 的配置文件,该配置文件实际上是一个存储在 kube-system 命名空间下的 ConfigMap 对象。

案例:假设要将域名 docker.local.io 解析到 IP 地址 192.168.0.100,以下是详细的操作步骤

  • 打开 CoreDns 的配置文件
kubectl edit cm coredns -n kube-system
  • 在配置文件中添加域名解析条目

修改之前可以先备份一下原 ConfigMap,以防配置修改错误。

apiVersion: v1
data:
  Corefile: |
    .:53 {
        errors
        health {
          lameduck 5s
        }
        ready
        hosts {
          192.168.1.100 docker.local.io # 新增
          fallthrough
        }
        kubernetes cluster.local in-addr.arpa ip6.arpa {
          pods insecure
          upstream
          fallthrough in-addr.arpa ip6.arpa
        }

        prometheus :9153
        forward . /etc/resolv.conf {
          max_concurrent 1000
        }
        cache 30
        loop
        reload
        loadbalance
    }
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system

保存并关闭配置文件,请注意,hosts 插件的配置块必须正确缩进。

  • 重启 CoreDNS 服务以应用更改
    修改 ConfigMap 后,Kubernetes 会自动检测到这些更改并重新加载 CoreDNS 配置,但有时候为了确保更改立即生效,您可能需要手动重启 CoreDNS 的 Pod。这可以通过删除 CoreDNS 的 Pod 来实现,Kubernetes 的 Deployment 控制器会自动创建新的 Pod 来替换它们:
kubectl delete pod -n kube-system -l k8s-app=kube-dns

请注意,在某些 Kubernetes 集群中,CoreDNS 的 label 可能不是 k8s-app=kube-dns,而是其他类似的 label,如 k8s-app=coredns。您可以使用下面的命令来检查正确的 label。

kubectl get pods -n kube-system --show-labels
### 如何配置 CoreDNS 进行外部域名解析 为了使 Kubernetes 中的 CoreDNS 正确处理集群外的 DNS 查询,需调整其配置文件——`Corefile`。此文件定义了 CoreDNS 的行为模式及其所使用的插件链。 #### 修改 `Corefile` 默认情况下,Kubernetes 安装过程中已预设了一个基本版本的 `Corefile` 来支持内部服务发现。要启用对外部名称的支持,则需要编辑该文件并加入特定条目以允许转发未知域到公共互联网上的递归解析器[^2]: ```bash apiVersion: v1 data: Corefile: | .:53 { errors health ready kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure upstream fallthrough in-addr.arpa ip6.arpa } prometheus :9153 forward . /etc/resolv.conf cache 30 loop reload loadbalance } kind: ConfigMap metadata: name: coredns namespace: kube-system ``` 上述配置中的关键部分在于 `forward . /etc/resolv.conf` 行,它指示 CoreDNS 使用宿主机 `/etc/resolv.conf` 文件中指定的名字服务器作为上游解析器来查找不属于本地命名空间内的任何记录[^1]。 当应用程序尝试访问不在 `.cluster.local` 后缀下的资源时(比如公网网站),这些请求会被传递给系统级 DNS 解析程序完成最终定位过程。 #### 应用更改后的配置 更新后的 `ConfigMap` 对象应通过如下命令应用至正在运行的 K8s 群集中: ```shell kubectl apply -f path/to/coredns-configmap.yaml ``` 之后重启 CoreDNS Pods 让新的设置生效。通常可以通过删除现有实例让它们自动重建达到目的: ```shell kubectl delete pod -n kube-system -l k8s-app=kube-dns ``` 这样就完成了对 CoreDNS 外部域名解析能力的基础设定。如果遇到复杂场景或特殊需求,可能还需要进一步定制化配置选项以及添加额外的功能模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值