تخصيص CoreDNS لخدمة Azure Kubernetes Service (AKS)

تستخدم خدمة Azure Kubernetes (AKS) CoreDNS لإدارة نظام أسماء النطاقات لنظام المجموعة وحلها مع جميع المجموعات 1.12.x والإصدارات الأحدث. AKS هي خدمة مدارة، لذلك لا يمكنك تعديل التكوين الرئيسي ل CoreDNS ( CoreFile). بدلا من ذلك، يمكنك استخدام Kubernetes ConfigMap لتجاوز الإعدادات الافتراضية. لمشاهدة الإعدادات الافتراضية الخاصة ب AKS CoreDNS ConfigMaps، استخدم kubectl get configmaps --namespace=kube-system coredns --output yaml الأمر.

توضح لك هذه المقالة كيفية استخدام ConfigMaps لخيارات تخصيص CoreDNS الأساسية في Azure Kubernetes Service (AKS).

إشعار

في السابق، كان AKS يستخدم kube-dns لإدارة نظام أسماء النطاقات لنظام المجموعة وحله، ولكن تم إهماله الآن. kube-dns تم عرض خيارات التخصيص المختلفة عبر خريطة التكوين الخاصة ب Kubernetes. CoreDNS غير متوافق مع الإصدارات السابقة مع kube-dns. يجب تحديث أي تخصيصات سابقة للعمل مع CoreDNS.

المتطلبات الأساسية

  • تفترض هذه المقالة أن لديك تجمع AKS قائمًا. إذا كنت بحاجة إلى نظام مجموعة AKS، يمكنك إنشاء مجموعة باستخدام Azure CLI أو Azure PowerShell أو مدخل Azure.
  • تحقق من إصدار CoreDNS الذي تقوم بتشغيله. قد تتغير قيم التكوين بين الإصدارات.

دعم المكون الإضافي

يتم دعم جميع المكونات الإضافية الخاصة ب CoreDNS المدمجة. لا يتم دعم أي إضافات أو مكونات إضافية تابعة للغير.

هام

عند إنشاء تكوينات مثل تلك الموجودة في هذه المقالة، يجب أن تنتهي الأسماء التي تحددها في data القسم ب .server أو .override. يتم تعريف اصطلاح التسمية هذا في AKS CoreDNS ConfigMap الافتراضي، والذي يمكنك عرضه باستخدام kubectl get configmaps --namespace=kube-system coredns --output yaml الأمر .

تكوين عمليات إعادة كتابة اسم DNS

  1. قم بإنشاء ملف باسم corednsms.yaml والصقه في مثال التكوين التالي. تأكد من استبداله <domain to be rewritten> باسم النطاق المؤهل بالكامل (FQDN).

    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
        }
    

    هام

    إذا قمت بإعادة التوجيه إلى خادم DNS، مثل CoreDNS service IP، التي يجب أن يكون الخادم الخاص ب DNS يمكنه حل اسم المجال المعاد كتابته.

  2. قم بإنشاء ConfigMap باستخدام kubectl apply configmap الأمر وحدد اسم بيان YAML الخاص بك.

    kubectl apply -f corednsms.yaml
    
  3. تحقق من تطبيق التخصيصات باستخدام الأمر kubectl get configmaps .

    kubectl get configmaps --namespace=kube-system coredns-custom -o yaml
    
  4. قم بإجراء إعادة تشغيل متجددة لإعادة تحميل ConfigMap وتمكين Kubernetes Scheduler من إعادة تشغيل CoreDNS دون توقف عن العمل باستخدام الأمر kubectl rollout restart .

    kubectl --namespace kube-system rollout restart deployment coredns
    

تحديد خادم إعادة توجيه لحركة مرور الشبكة

  1. قم بإنشاء ملف باسم corednsms.yaml والصقه في مثال التكوين التالي. تأكد من استبدال الاسم forward والقيم <domain to be rewritten> الخاصة بك.

    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 باستخدام الأمر kubectl apply configmap .

    kubectl apply -f corednsms.yaml
    
  3. قم بإجراء إعادة تشغيل متجددة لإعادة تحميل ConfigMap وتمكين Kubernetes Scheduler من إعادة تشغيل CoreDNS دون توقف عن العمل باستخدام الأمر kubectl rollout restart .

    kubectl --namespace kube-system rollout restart deployment coredns
    

استخدم المجالات المخصصة

قد ترغب في تكوين المجالات المخصصة التي لا يمكن حلها داخليا إلا على سبيل المثال، قد ترغب في حل المجال المخصص puglife.local، وهو ليس نطاق مستوى أعلى صالحا. بدون تكوين مجال مخصص، لا يمكن لنظام المجموعات الخاص ب AKS إعادة حل العنوان.

  1. قم بإنشاء ملف جديد باسم corednsms.yaml والصقه في مثال التكوين التالي. تأكد من تحديث النطاق المخصص وعنوان IP بقيمك الخاصة.

    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 باستخدام الأمر kubectl apply configmap .

    kubectl apply -f corednsms.yaml
    
  3. قم بإجراء إعادة تشغيل متجددة لإعادة تحميل ConfigMap وتمكين Kubernetes Scheduler من إعادة تشغيل CoreDNS دون توقف عن العمل باستخدام الأمر kubectl rollout restart .

    kubectl --namespace kube-system rollout restart deployment coredns 
    

تكوين مجالات كعب الروتين

  1. إنشاء ملف باسم corednsms.yaml ولصق تكوين المثال التالي. تأكد من تحديث النطاقات المخصصة وعناوين IP بالقيم الخاصة بك.

    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. قم بإنشاء ConfigMap باستخدام kubectl apply configmap الأمر وتحديد.

    kubectl apply -f corednsms.yaml
    
  3. قم بإجراء إعادة تشغيل متجددة لإعادة تحميل ConfigMap وتمكين Kubernetes Scheduler من إعادة تشغيل CoreDNS دون توقف عن العمل باستخدام الأمر kubectl rollout restart .

    kubectl --namespace kube-system rollout restart deployment coredns
    

إضافة تعييناتto-IP المضيف المخصص

  1. إنشاء ملف باسم corednsms.yaml ولصق تكوين المثال التالي. تأكد من تحديث عناوين IP وأسماء المضيفين بقيمك الخاصة.

    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 باستخدام الأمر kubectl apply configmap .

    kubectl apply -f corednsms.yaml
    
  3. قم بإجراء إعادة تشغيل متجددة لإعادة تحميل ConfigMap وتمكين Kubernetes Scheduler من إعادة تشغيل CoreDNS دون توقف عن العمل باستخدام الأمر kubectl rollout restart .

    kubectl --namespace kube-system rollout restart deployment coredns
    

الخطوات التالية