文章

集群CoreDNS设置

外部访问自定义

k8s-ConfigMap配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health {
           lameduck 15s
        }
        ready

        kubernetes cluster.local in-addr.arpa ip6.arpa {

          pods verified
          fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }
    # ======= 自定义配置部分 =======
    cluster.dev:53 {
     # 将域名解析到 Nginx 地址
     forward . 10.xxx.xxx.xxx
     cache 30
    }
    cluster.test:53 {
     # 将域名解析到 Nginx 地址
     forward . 10.xxx.xxx.xxx
     cache 30
    }

    sh:53 {
     # 将域名解析到 Nginx 地址
     forward . 10.xxx.xxx.xxx
     cache 30
    }

cluster.dev:53:

这表示 CoreDNS 将在 53 端口上监听来自 cluster.dev 域名的 DNS 查询请求。53 是标准的 DNS 服务端口。

forward . 10.xxx.xxx.xxx:

forward 指令用于将 DNS 查询请求转发到指定的 DNS 服务器或 IP 地址。

. 表示所有域名(即任意域名)。这意味着所有的 DNS 查询都将被转发到 10.xxx.xxx.xxx。

10.xxx.xxx.xxx 是指定的目标 IP 地址,通常是一个运行着 Nginx 或其他 Web 服务器的地址。所有的 DNS 查询都将被解析为指向这个 IP。

cache 30:

cache 指令配置 DNS 查询的缓存时间,这里设置为 30 秒。

这意味着在处理 DNS 查询时,如果请求的结果已经在缓存中,CoreDNS 将在 30 秒内返回缓存的结果,而不会去查找或转发到目标 IP 地址。

10.xxx.xxx.xxx作用

能够正确处理从 CoreDNS 转发过来的请求,通常需要在这台服务器上配置一个 Web 服务器(如 Nginx 或 Apache)来处理 HTTP 请求。

Nginx配置文件例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
   listen 80;  # 监听 80 端口                                                                                                                                                                                    
   server_name cluster.dev;  # 处理来自 cluster.dev 的请求

   location / {
       proxy_pass http://your_backend_service;  # 将请求转发到后端服务
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
   }

   error_page 404 /404.html;  # 处理 404 错误页面
   location = /404.html {
       root /usr/share/nginx/html;  # 404 页面位置
       internal;
   }
}
本文由作者按照 CC BY 4.0 进行授权