Azure Kubernetes Service (AKS) için CoreDNS'yi özelleştirme

Azure Kubernetes Service (AKS), tüm 1.12.x ve üzeri kümelerle küme DNS yönetimi ve çözümlemesi için CoreDNS kullanır. AKS yönetilen bir hizmet olduğundan CoreDNS ( CoreFile) için ana yapılandırmayı değiştiremezsiniz. Bunun yerine, varsayılan ayarları geçersiz kılmak için Kubernetes ConfigMap kullanırsınız. Varsayılan AKS CoreDNS ConfigMaps'i görmek için komutunu kullanın kubectl get configmaps --namespace=kube-system coredns --output yaml .

Bu makalede, Azure Kubernetes Service'te (AKS) temel CoreDNS özelleştirme seçenekleri için ConfigMap'lerin nasıl kullanılacağı gösterilmektedir.

Not

Daha önce AKS, küme DNS yönetimi ve çözümlemesi için kullanılıyordu kube-dns , ancak artık kullanım dışı bırakılıyordu. kube-dns Kubernetes yapılandırma haritası aracılığıyla farklı özelleştirme seçenekleri sundu. CoreDNS ile geriye dönük uyumlu kube-dns. CoreDNS ile çalışmak için önceki özelleştirmeleri güncelleştirmeniz gerekir.

Önkoşullar

  • Bu makalede, mevcut bir AKS kümeniz olduğu varsayılır. AKS kümesine ihtiyacınız varsa Azure CLI, Azure PowerShell veya Azure portalını kullanarak bir küme oluşturabilirsiniz.
  • Çalıştırdığınız CoreDNS sürümünü doğrulayın. Yapılandırma değerleri sürümler arasında değişebilir.

Eklenti desteği

Tüm yerleşik CoreDNS eklentileri desteklenir. Hiçbir eklenti/üçüncü taraf eklentisi desteklenmez.

Önemli

Bu makaledekiler gibi yapılandırmalar oluşturduğunuzda, data bölümünde belirttiğiniz adlar .server veya .override ile bitmelidir. Bu adlandırma kuralı, komutunu kullanarak kubectl get configmaps --namespace=kube-system coredns --output yaml görüntüleyebileceğiniz varsayılan AKS CoreDNS ConfigMap içinde tanımlanır.

DNS adı yeniden yazmalarını yapılandırma

  1. adlı corednsms.yaml bir dosya oluşturun ve aşağıdaki örnek yapılandırmaya yapıştırın. <domain to be rewritten> öğesini, kendi tam etki alanı adınızla (FQDN) değiştirdiğinizden emin olun.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      test.server: |
        <domain to be rewritten>.com:53 {
        log
        errors
        rewrite stop {
          name regex (.*)\.<domain to be rewritten>\.com {1}.default.svc.cluster.local
          answer name (.*)\.default\.svc\.cluster\.local {1}.<domain to be rewritten>.com
        }
        forward . /etc/resolv.conf # You can redirect this to a specific DNS server such as 10.0.0.10, but that server must be able to resolve the rewritten domain name
        }
    

    Önemli

    CoreDNS hizmeti IP'si gibi bir DNS sunucusuna yeniden yönlendirirseniz, bu DNS sunucusunun yeniden yazılan etki alanı adını çözümleyebilmesi gerekir.

  2. komutunu kullanarak ConfigMap'i kubectl apply configmap oluşturun ve YAML bildiriminizin adını belirtin.

    kubectl apply -f corednsms.yaml
    
  3. kubectl get configmaps komutunu kullanarak özelleştirmelerin uygulandığını doğrulayın.

    kubectl get configmaps --namespace=kube-system coredns-custom -o yaml
    
  4. ConfigMap'i yeniden yüklemek ve Kubernetes Scheduler'ın, kubectl rollout restart komutunu kullanarak CoreDNS'yi kapalı kalma süresi olmadan yeniden başlatmasını sağlamak için yuvarlanarak bir yeniden başlatma gerçekleştirin.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Ağ trafiğiniz için bir iletme sunucusu belirtme

  1. adlı corednsms.yaml bir dosya oluşturun ve aşağıdaki örnek yapılandırmaya yapıştırın. forward ismini ve <domain to be rewritten> kendi değerlerinizle değiştirdiğinizden emin olun.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      test.server: | # You can select any name here, but it must end with the .server file extension
        <domain to be rewritten>.com:53 {
            forward foo.com 1.1.1.1
        }
    
  2. ConfigMap'i kubectl apply configmap komutunu kullanarak oluşturun.

    kubectl apply -f corednsms.yaml
    
  3. ConfigMap'i yeniden yüklemek ve Kubernetes Scheduler'ın, kubectl rollout restart komutunu kullanarak CoreDNS'yi kapalı kalma süresi olmadan yeniden başlatmasını sağlamak için yuvarlanarak bir yeniden başlatma gerçekleştirin.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Özel alan adlarını kullanma

Yalnızca dahili olarak çözümlenebilen özel etki alanlarını yapılandırmak isteyebilirsiniz. Örneğin, geçerli bir üst düzey etki alanı olmayan özel puglife.local etki alanını çözümlemek isteyebilirsiniz. Özel etki alanı ConfigMap olmadan AKS kümesi adresi çözümleyemez.

  1. adlı corednsms.yaml yeni bir dosya oluşturun ve aşağıdaki örnek yapılandırmaya yapıştırın. Özel alan adını ve IP adresini kendi değerlerinizle güncellediğinizden emin olun.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      puglife.server: | # You can select any name here, but it must end with the .server file extension
        puglife.local:53 {
            errors
            cache 30
            forward . 192.11.0.1  # This is my test/dev DNS server
        }
    
  2. ConfigMap'i kubectl apply configmap komutunu kullanarak oluşturun.

    kubectl apply -f corednsms.yaml
    
  3. ConfigMap'i yeniden yüklemek ve Kubernetes Scheduler'ın, kubectl rollout restart komutunu kullanarak CoreDNS'yi kapalı kalma süresi olmadan yeniden başlatmasını sağlamak için yuvarlanarak bir yeniden başlatma gerçekleştirin.

    kubectl --namespace kube-system rollout restart deployment coredns 
    

Kuyruk etki alanlarını yapılandırma

  1. adlı corednsms.yaml bir dosya oluşturun ve aşağıdaki örnek yapılandırmayı yapıştırın. Özel etki alanlarını ve IP adreslerini kendi değerlerinizle güncellediğinizden emin olun.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      test.server: | # You can select any name here, but it must end with the .server file extension
        abc.com:53 {
         errors
         cache 30
         forward . 1.2.3.4
        }
        my.cluster.local:53 {
            errors
            cache 30
            forward . 2.3.4.5
        }
    
    
  2. komutunu kullanarak ConfigMap'i kubectl apply configmap oluşturun ve belirtin.

    kubectl apply -f corednsms.yaml
    
  3. ConfigMap'i yeniden yüklemek ve Kubernetes Scheduler'ın, kubectl rollout restart komutunu kullanarak CoreDNS'yi kapalı kalma süresi olmadan yeniden başlatmasını sağlamak için yuvarlanarak bir yeniden başlatma gerçekleştirin.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Özel ana bilgisayar-IP eşlemeleri ekle

  1. adlı corednsms.yaml bir dosya oluşturun ve aşağıdaki örnek yapılandırmayı yapıştırın. IP adreslerini ve ana makine adlarını kendi değerlerinizle güncellediğinizden emin olun.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom # This is the name of the ConfigMap you can overwrite with your changes
      namespace: kube-system
    data:
        test.override: | # You can select any name here, but it must end with the .override file extension
              hosts { 
                  10.0.0.1 example1.org
                  10.0.0.2 example2.org
                  10.0.0.3 example3.org
                  fallthrough
              }
    
  2. ConfigMap'i kubectl apply configmap komutunu kullanarak oluşturun.

    kubectl apply -f corednsms.yaml
    
  3. ConfigMap'i yeniden yüklemek ve Kubernetes Scheduler'ın, kubectl rollout restart komutunu kullanarak CoreDNS'yi kapalı kalma süresi olmadan yeniden başlatmasını sağlamak için yuvarlanarak bir yeniden başlatma gerçekleştirin.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Sonraki adımlar