إنشاء بوابة NAT مدارة أو معينة من قبل المستخدم لنظام مجموعة Azure Kubernetes Service (AKS)

بينما يمكنك توجيه حركة الخروج من خلال موازن تحميل Azure، هناك قيود على عدد التدفقات الصادرة لنسبة استخدام الشبكة التي يمكنك الحصول عليها. تسمح بوابة Azure NAT بتدفق ما يصل إلى 64,512 حركة مرور UDP و TCP الصادرة لكل عنوان IP بحد أقصى 16 عنوان IP.

توضح هذه المقالة كيفية إنشاء نظام مجموعة Azure Kubernetes Service (AKS) باستخدام بوابة NAT المدارة وبوابة NAT المعينة من قبل المستخدم لحركة مرور الخروج. كما يوضح لك كيفية تعطيل OutboundNAT على Windows.

قبل البدء

  • تأكد من استخدام أحدث إصدار من Azure CLI.
  • تأكد من أنك تستخدم الإصدار 1.20.x من Kubernetes أو أعلى.
  • بوابة NAT المدارة غير متوافقة مع الشبكات الظاهرية المخصصة.

إنشاء نظام مجموعة AKS باستخدام بوابة NAT مدارة

  • إنشاء نظام مجموعة AKS مع بوابة NAT مدارة جديدة باستخدام az aks create الأمر مع --outbound-type managedNATGateway--nat-gateway-managed-outbound-ip-countالمعلمات و و--nat-gateway-idle-timeout. إذا كنت تريد أن تعمل بوابة NAT خارج منطقة توفر معينة، فحدد المنطقة باستخدام --zones.

  • إذا لم يتم تحديد أي منطقة عند إنشاء بوابة NAT مدارة، فسيتم نشر بوابة NAT إلى "لا توجد منطقة" بشكل افتراضي. عند وضع بوابة NAT في أي منطقة، يضع Azure المورد في منطقة لك. لمزيد من المعلومات حول نموذج التوزيع غير النطاقي، راجع بوابة NAT غير النطاقية.

  • لا يمكن استخدام مورد بوابة NAT المدارة عبر مناطق توفر متعددة.

      az aks create \
          --resource-group myResourceGroup \
          --name myNatCluster \
          --node-count 3 \
          --outbound-type managedNATGateway \
          --nat-gateway-managed-outbound-ip-count 2 \
          --nat-gateway-idle-timeout 4
    
  • قم بتحديث عنوان IP الصادر أو مهلة الخمول باستخدام az aks update الأمر مع المعلمة --nat-gateway-managed-outbound-ip-count أو --nat-gateway-idle-timeout .

    az aks update \ 
        --resource-group myResourceGroup \
        --name myNatCluster\
        --nat-gateway-managed-outbound-ip-count 5
    

إنشاء نظام مجموعة AKS باستخدام بوابة NAT المعينة من قبل المستخدم

يتطلب هذا التكوين إنشاء شبكة خاصة بك (عبر Kubenet أو Azure CNI) وأن يتم تكوين بوابة NAT مسبقا على الشبكة الفرعية. تنشئ الأوامر التالية الموارد المطلوبة لهذا السيناريو.

  1. إنشاء مجموعة موارد باستخدام az group create الأمر .

    az group create --name myResourceGroup \
        --location southcentralus
    
  2. إنشاء هوية مدارة لأذونات الشبكة وتخزين المعرف لاستخدامها $IDENTITY_ID لاحقا.

    IDENTITY_ID=$(az identity create \
        --resource-group myResourceGroup \
        --name myNatClusterId \
        --location southcentralus \
        --query id \
        --output tsv)
    
  3. إنشاء IP عام لبوابة NAT باستخدام az network public-ip create الأمر .

    az network public-ip create \
        --resource-group myResourceGroup \
        --name myNatGatewayPip \
        --location southcentralus \
        --sku standard
    
  4. إنشاء بوابة NAT باستخدام az network nat gateway create الأمر .

    az network nat gateway create \
        --resource-group myResourceGroup \
        --name myNatGateway \
        --location southcentralus \
        --public-ip-addresses myNatGatewayPip
    

    هام

    لا يمكن استخدام مورد بوابة NAT واحد عبر مناطق توفر متعددة. لضمان مرونة المنطقة، يوصى بنشر مورد بوابة NAT لكل منطقة توفر وتعيين إلى شبكات فرعية تحتوي على مجموعات AKS في كل منطقة. لمزيد من المعلومات حول نموذج النشر هذا، راجع بوابة NAT لكل منطقة. إذا لم يتم تكوين أي منطقة لبوابة NAT، فإن موضع المنطقة الافتراضي هو "لا توجد منطقة"، حيث يضع Azure بوابة NAT في منطقة لك.

  5. إنشاء شبكة ظاهرية az network vnet create باستخدام الأمر .

    az network vnet create \
        --resource-group myResourceGroup \
        --name myVnet \
        --location southcentralus \
        --address-prefixes 172.16.0.0/20 
    
  6. إنشاء شبكة فرعية في الشبكة الظاهرية باستخدام بوابة NAT وتخزين المعرف لاستخدامه $SUBNET_ID لاحقا.

    SUBNET_ID=$(az network vnet subnet create \
        --resource-group myResourceGroup \
        --vnet-name myVnet \
        --name myNatCluster \
        --address-prefixes 172.16.0.0/22 \
        --nat-gateway myNatGateway \
        --query id \
        --output tsv)
    
  7. إنشاء نظام مجموعة AKS باستخدام الشبكة الفرعية مع بوابة NAT والهوية المدارة az aks create باستخدام الأمر .

    az aks create \
        --resource-group myResourceGroup \
        --name myNatCluster \
        --location southcentralus \
        --network-plugin azure \
        --vnet-subnet-id $SUBNET_ID \
        --outbound-type userAssignedNATGateway \
        --enable-managed-identity \
        --assign-identity $IDENTITY_ID
    

تعطيل OutboundNAT ل Windows

يمكن أن يتسبب Windows OutboundNAT في مشكلات اتصال واتصال معينة مع pods AKS. مثال على المشكلة هو إعادة استخدام منفذ العقدة. في هذا المثال، يستخدم Windows OutboundNAT المنافذ لترجمة عنوان IP الخاص بالجراب إلى عنوان IP لمضيف عقدة Windows، مما قد يتسبب في اتصال غير مستقر بالخدمة الخارجية بسبب مشكلة استنفاد المنفذ.

يقوم Windows بتمكين OutboundNAT بشكل افتراضي. يمكنك الآن تعطيل OutboundNAT يدويا عند إنشاء تجمعات وكلاء Windows جديدة.

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

  • نظام مجموعة AKS الحالي مع الإصدار 1.26 أو أعلى. إذا كنت تستخدم الإصدار 1.25 من Kubernetes أو أقدم، فستحتاج إلى تحديث تكوين النشر الخاص بك.

القيود

  • لا يمكنك تعيين نوع نظام المجموعة الصادر إلى LoadBalancer. يمكنك تعيينه إلى بوابة Nat أو UDR:
    • بوابة NAT: يمكن لبوابة NAT معالجة اتصال NAT تلقائيا وهي أكثر قوة من موازن التحميل القياسي. قد تتحمل رسوما إضافية باستخدام هذا الخيار.
    • UDR (UserDefinedRouting): يجب أن تضع قيود المنفذ في الاعتبار عند تكوين قواعد التوجيه.
    • إذا كنت بحاجة إلى التبديل من موازن تحميل إلى بوابة NAT، يمكنك إما إضافة بوابة NAT إلى VNet أو تشغيل az aks upgrade لتحديث النوع الصادر.

إشعار

يحتوي UserDefinedRouting على القيود التالية:

  • يحتوي SNAT بواسطة Load Balancer (يجب استخدام OutboundNAT الافتراضي) على "64 منفذا على عنوان IP المضيف".
  • يحتوي SNAT بواسطة Azure Firewall (تعطيل OutboundNAT) على 2496 منفذا لكل عنوان IP عام.
  • يحتوي SNAT بواسطة بوابة NAT (تعطيل OutboundNAT) على 64512 منفذا لكل عنوان IP عام.
  • إذا لم يكن نطاق منفذ Azure Firewall كافيا للتطبيق الخاص بك، فستحتاج إلى استخدام بوابة NAT.
  • لا يستخدم Azure Firewall SNAT مع قواعد الشبكة عندما يكون عنوان IP الوجهة في نطاق عنوان IP خاص لكل IANA RFC 1918 أو مساحة عنوان مشتركة لكل IANA RFC 6598.

تعطيل OutboundNAT ل Windows يدويا

  • تعطيل OutboundNAT ل Windows يدويا عند إنشاء تجمعات وكلاء Windows جديدة باستخدام az aks nodepool add الأمر مع العلامة --disable-windows-outbound-nat .

    إشعار

    يمكنك استخدام مجموعة AKS موجودة، ولكن قد تحتاج إلى تحديث النوع الصادر وإضافة تجمع عقدة لتمكين --disable-windows-outbound-nat.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myNatCluster \
        --name mynp \
        --node-count 3 \
        --os-type Windows \
        --disable-windows-outbound-nat
    

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

لمزيد من المعلومات حول بوابة "Azure NAT"، راجع بوابة Azure NAT