日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

ACK默認(rèn)使用CoreDNS作為DNS服務(wù)器,本文介紹CoreDNS的常見插件和各應(yīng)用場景下配置說明。

前提條件

在進(jìn)行內(nèi)置DNS配置前,請確保您已完成以下操作:

場景說明

本文示例場景:使用ACK集群提供的CoreDNS來做域名解析,即使用dnsPolicy: ClusterFirst策略。示例配置如下:

apiVersion: v1
kind: Pod
metadata:
  name: alpine
  namespace: default
spec:
  containers:
  - image: alpine
    command:
      - sleep
      - "10000"
    imagePullPolicy: Always
    name: alpine
  dnsPolicy: ClusterFirst

關(guān)于dnsPolicy配置和場景說明,請參見DNS原理和配置說明。

CoreDNS的默認(rèn)配置

在命名空間kube-system下,ACK集群有一個CoreDNS配置項(有關(guān)如何查看配置項的具體步驟,請參見管理配置項)。CoreDNS會基于該配置項啟用和配置插件。不同CoreDNS版本的配置項有略微差異,修改配置前請仔細(xì)閱讀CoreDNS官方文檔。以下是一個1.6.2版本CoreDNS默認(rèn)采用的配置文件:

  Corefile: |
    .:53 {
        errors
        log
        health {
           lameduck 15s
        }
        ready
        kubernetes {{.ClusterDomain}} in-addr.arpa ip6.arpa {
          pods verified
          fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        forward . /etc/resolv.conf {
              prefer_udp
        }
        cache 30
        loop
        reload
        loadbalance
    }
說明

配置文件中ClusterDomain代指集群創(chuàng)建過程中填寫的集群本地域名,默認(rèn)值為cluster.local

參數(shù)

描述

errors

錯誤信息到標(biāo)準(zhǔn)輸出。

health

CoreDNS自身健康狀態(tài)報告,默認(rèn)監(jiān)聽端口8080,一般用來做健康檢查。您可以通過http://localhost:8080/health獲取健康狀態(tài)。

ready

CoreDNS插件狀態(tài)報告,默認(rèn)監(jiān)聽端口8181,一般用來做可讀性檢查??梢酝ㄟ^http://localhost:8181/ready獲取可讀狀態(tài)。當(dāng)所有插件都運行后,ready狀態(tài)為200。

kubernetes

CoreDNS Kubernetes插件,提供集群內(nèi)服務(wù)解析能力。

prometheus

CoreDNS自身metrics數(shù)據(jù)接口??梢酝ㄟ^http://localhost:9153/metrics獲取prometheus格式的監(jiān)控數(shù)據(jù)。

forward(或proxy

將域名查詢請求轉(zhuǎn)到預(yù)定義的DNS服務(wù)器。默認(rèn)配置中,當(dāng)域名不在Kubernetes域時,將請求轉(zhuǎn)發(fā)到預(yù)定義的解析器(/etc/resolv.conf)中。默認(rèn)使用宿主機的/etc/resolv.conf配置。

cache

DNS緩存。

loop

環(huán)路檢測,如果檢測到環(huán)路,則停止CoreDNS。

reload

允許自動重新加載已更改的Corefile。編輯ConfigMap配置后,請等待兩分鐘以使更改生效。

loadbalance

循環(huán)DNS負(fù)載均衡器,可以在答案中隨機A、AAAA、MX記錄的順序。

CoreDNS的擴(kuò)展配置

針對以下不同場景,您可以擴(kuò)展CoreDNS的配置:

  • 場景一:開啟日志服務(wù)

    如果需將CoreDNS每次域名解析的日志打印出來,您可以開啟Log插件,在Corefile里加上log。示例配置如下:

      Corefile: |
        .:53 {
            errors
            log
            health {
               lameduck 15s
            }
            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 {
                  prefer_udp
            }
            cache 30
            loop
            reload
            loadbalance
        }
  • 場景二:特定域名使用自定義DNS服務(wù)器

    如果example.com類型后綴的域名需要經(jīng)過自建DNS服務(wù)器(IP為10.10.0.10)進(jìn)行解析的話,您可為域名配置一個單獨的服務(wù)塊。示例配置如下:

    example.com:53 {
      errors
      cache 30
      forward . 10.10.0.10 {
      prefer_udp
      }
    }

    完整配置如下:

      Corefile: |
        .:53 {
            errors
            health {
               lameduck 15s
            }
            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 {
              prefer_udp
            }
            cache 30
            loop
            reload
            loadbalance
        }
        example.com:53 {
            errors
            cache 30
            forward . 10.10.0.10 {
            prefer_udp
            }
        }
  • 場景三:外部域名完全使用自建DNS服務(wù)器

    如果您需要使用的自建DNS服務(wù)的域名沒有統(tǒng)一的域名后綴,您可以選擇所有集群外部域名都使用自建DNS服務(wù)器(此時需要您將自建的DNS服務(wù)不能解析的域名轉(zhuǎn)發(fā)到阿里云DNS,禁止直接更改集群ECS上的/etc/resolv.conf文件)。例如,您自建的DNS服務(wù)器IP為10.10.0.10和10.10.0.20,可以更改forward參數(shù)進(jìn)行配置。示例配置如下:

      Corefile: |
        .:53 {
            errors
            health {
               lameduck 15s
            }
            ready
            kubernetes cluster.local in-addr.arpa ip6.arpa {
              pods insecure
              fallthrough in-addr.arpa ip6.arpa
              ttl 30
            }
            prometheus :9153
            forward . 10.10.0.10 10.10.0.20 {
              prefer_udp
            }
            cache 30
            loop
            reload
            loadbalance
        }
  • 場景四:自定義Hosts

    如果您需要為特定域名指定hosts,如為www.example.com指定IP為127.0.0.1,可以使用Hosts插件來配置。示例配置如下:

      Corefile: |
        .:53 {
            errors
            health {
               lameduck 15s
            }
            ready
            
            hosts {
              127.0.0.1 www.example.com
              fallthrough
            }
          
            kubernetes cluster.local in-addr.arpa ip6.arpa {
              pods insecure
              fallthrough in-addr.arpa ip6.arpa
              ttl 30
            }
            prometheus :9153
            forward . /etc/resolv.conf {
              prefer_udp
            }
            cache 30
            loop
            reload
            loadbalance
        }
    重要

    請配置fallthrough,否則會造成非定制Hosts域名解析失敗。

  • 場景五:集群外部訪問集群內(nèi)服務(wù)

    如果您希望運行在集群ECS上的進(jìn)程能夠訪問到集群內(nèi)的服務(wù),雖然可以通過將ECS的/etc/resolv.conf文件內(nèi)nameserver配置為集群kube-dns的ClusterIP地址來達(dá)到目的,但不推薦您直接更改ECS的/etc/resolv.conf文件的方式來達(dá)到任何目的。

    內(nèi)網(wǎng)場景下,您可以將集群內(nèi)的服務(wù)通過內(nèi)網(wǎng)SLB進(jìn)行暴露,然后在云解析PrivateZone控制臺通過添加A記錄到該SLB的內(nèi)網(wǎng)IP進(jìn)行解析。具體操作,請參見添加解析記錄。

  • 場景六:統(tǒng)一域名訪問服務(wù)或是在集群內(nèi)對域名做CNAME解析

    您可以實現(xiàn)在公網(wǎng)、內(nèi)網(wǎng)和集群內(nèi)部通過統(tǒng)一域名foo.example.com訪問您的服務(wù),原理如下:

    • 集群內(nèi)的服務(wù)foo.default.svc.cluster.local通過公網(wǎng)SLB進(jìn)行了暴露,且有域名foo.example.com解析到該公網(wǎng)SLB的IP。

    • 集群內(nèi)服務(wù)foo.default.svc.cluster.local通過內(nèi)網(wǎng)SLB進(jìn)行了暴露,且通過云解析PrivateZone在VPC內(nèi)網(wǎng)中將foo.example.com解析到該內(nèi)網(wǎng)SLB的IP。具體步驟,請參見上述場景四:自定義Hosts。

    • 在集群內(nèi)部,您可以通過Rewrite插件將foo.example.com CNAME到foo.default.svc.cluster.local。示例配置如下:

        Corefile: |
          .:53 {
              errors
              health {
                 lameduck 15s
              }
              ready
              
              rewrite stop {
                name exact foo.example.com foo.default.svc.cluster.local
                answer name foo.default.svc.cluster.local foo.example.com 
              }
      
              kubernetes cluster.local in-addr.arpa ip6.arpa {
                pods insecure
                fallthrough in-addr.arpa ip6.arpa
                ttl 30
              }
              prometheus :9153
              forward . /etc/resolv.conf {
                prefer_udp
              }
              cache 30
              loop
              reload
              loadbalance
          }
  • 場景七:禁止CoreDNS對IPv6類型的AAAA記錄查詢返回

    當(dāng)業(yè)務(wù)容器不需要AAAA記錄類型時,可以在CoreDNS中將AAAA記錄類型攔截,返回空(NODATA),以減少不必要的網(wǎng)絡(luò)通信。示例配置如下:

      Corefile: |
        .:53 {
            errors
            health {
               lameduck 15s
            }
            #新增以下一行Template插件,其它數(shù)據(jù)請保持不變。
            template IN AAAA .
        
        }
  • 場景八:開啟ACK One多集群服務(wù)功能

    說明

    1.9.3及更高版本的CoreDNS支持ACK One多集群服務(wù)功能,如果您的CoreDNS組件版本低于1.9.3,請升級CoreDNS后再開啟此功能。詳細(xì)信息,請參見CoreDNS自動升級CoreDNS手動升級。

    1. 執(zhí)行如下命令,變更CoreDNS配置項。

      kubectl edit configmap/coredns -n kube-system
    2. kubernetes字樣上方增加一行multicluster clusterset.local,表示開啟multicluster多集群服務(wù)插件功能,并將多集群服務(wù)域名后綴設(shè)置為clusterset.local。

      Corefile: |
          .:53 {
              # 此處省略其它內(nèi)容。
              # 增加以下一行。
              multicluster clusterset.local
              kubernetes cluster.local in-addr.arpa ip6.arpa {
                pods insecure
                fallthrough in-addr.arpa ip6.arpa
                ttl 30
              }
              # 此處省略其它內(nèi)容。
          }
    3. 修改完成后,按Esc鍵,輸入:wq!并按Enter鍵,保存修改后的配置文件并退出編輯模式。