تكوين شبكة Azure CNI للتخصيص الديناميكي لعناوين IP ودعم الشبكة الفرعية المحسن في خدمة Azure Kubernetes (AKS)

العيب مع CNI التقليدي هو استنفاد عناوين IP الخاصة بالجراب مع نمو نظام مجموعة AKS، ما يؤدي إلى الحاجة إلى إعادة إنشاء نظام المجموعة بأكمله في شبكة فرعية أكبر. تحل إمكانية تخصيص IP الديناميكية الجديدة في Azure CNI هذه المشكلة عن طريق تخصيص عناوين IP الخاصة بالجراب من شبكة فرعية منفصلة عن الشبكة الفرعية التي تستضيف مجموعة AKS.

وهو يقدم الفوائد التالية:

  • استخدام أفضل لـ IP:يتم تخصيص IP بشكل حيوي إلى مجموعة وحدات الجراب من الشبكة الفرعية لوحدات الجراب. وهذا يؤدي إلى استخدام أفضل لـ IPs في نظام المجموعة مقارنةً مع حل CNI التقليدي، الذي لا يمتلك تخصيص ثابت من عناوين الإنترنت لكل عقدة.
  • القابلية للتحجيم والمرونة: يمكن تحجيم الشبكات الفرعية للعقدة ووحدة الجراب بشكلٍ مستقل. يمكن مشاركة شبكة فرعية واحدة لوحدة جراب عبر تجمعات عقد متعددة لنظام مجموعة أو عبر أنظمة مجموعات AKS المتعددة المنشورة في نفس الشبكة الظاهرية. يمكنك أيضاً تكوين شبكة فرعية منفصلة لوحدة الجراب وتجمع العقدة.
  • أداء عال: نظرا لتعيين وحدات الجراب ل IPs للشبكة الظاهرية، فإن لديها اتصالا مباشرا بوحدات نظام المجموعة والموارد الأخرى في الشبكة الظاهرية. يدعم الحل أنظمة مجموعات كبيرة جداً دون أي تدهور في الأداء.
  • نُهج الشبكة الظاهرية المنفصلة لوحدات الجراب: نظرًا لأن وحدات الجراب لها شبكة فرعية منفصلة، يمكنك تكوين نُهج شبكة ظاهرية منفصلة لهم تختلف عن نُهج العقدة. يتيح هذا العديد من السيناريوهات المفيدة مثل السماح بالاتصال بالإنترنت فقط للقرون وليس للعقد، وإصلاح IP المصدر للحجيرة في تجمع عقدة باستخدام بوابة Azure NAT، واستخدام NSGs لتصفية نسبة استخدام الشبكة بين تجمعات العقد.
  • نُهج شبكة Kubernetes: يعمل كل من نُهج شبكة Azure وCalco مع هذا الحل الجديد.

توضح هذه المقالة كيفية استخدام شبكة Azure CNI للتخصيص الديناميكي لعناوين IP ودعم الشبكة الفرعية المحسن في AKS.

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

  • راجع المتطلبات الأساسية لتكوين شبكات Azure CNI الأساسية في AKS، حيث تنطبق نفس المتطلبات الأساسية على هذه المقالة.

  • راجع معلمات التوزيع لتكوين شبكات Azure CNI الأساسية في AKS، كما تنطبق نفس المعلمات.

  • مجموعات AKS Engine و DIY غير مدعومة.

  • إصدار Azure CLI 2.7.0 2.37.0أو إصدار أحدث

  • إذا كان لديك نظام مجموعة موجود، فأنت بحاجة إلى تمكين Container Insights لمراقبة استخدام الشبكة الفرعية IP. يمكنك تمكين Container Insights باستخدام az aks enable-addons الأمر ، كما هو موضح في المثال التالي:

    az aks enable-addons --addons monitoring --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME
    

تخطيط عناوين IP

تخطيط عنوان IP الخاص بك أبسط بكثير مع هذه الميزة. نظراً لأن العقد ووحدات الجراب تتدرج بشكلٍ مستقل، يمكن أيضاً تخطيط مساحات عناوينها بشكل منفصل. نظرا لأنه يمكن تكوين الشبكات الفرعية للجراب إلى نقاوة تجمع عقدة، يمكنك دائما إضافة شبكة فرعية جديدة عند إضافة تجمع عقدة. تتلقى وحدات جراب النظام في تجمع نظام مجموعة/عقدة أيضاً عناوين IPs من الشبكة الفرعية لوحدة الجراب، لذلك فإن هذا السلوك يحتاج إلى أن يتم اعتباره.

خُصصت عناوين IP للعُقد على دفعات من 16. يجب التخطيط لتخصيص IP للشبكة الفرعية لـ Pod بحد أدنى 16 عنوان IP لكل عقدة في نظام المجموعة، ستطلب العُقد 16 عنوان IP عند بدء التشغيل وستطلب دُفعة أخرى من 16 في أي وقت يكون هناك < من 8 عناوين IP غير مُخصصة في التعيين.

التخطيط لعناوين IPs لخدمات K8S وجسر Docker لم يتغير.

لعرض موارد NodeNetworkConfiguration (NNC) المسؤولة عن تخصيصات IP هذه والتحقق منها، يمكنك تشغيل الأمر التالي:

kubectl get nodenetworkconfigs -n kube-system -o wide

الحد الأقصى لوحدات الجراب لكل عقدة في نظام مجموعة مع التخصيص الديناميكي لـ IPs ودعم الشبكة الفرعية المُحسنة

تختلف وحدات الجراب لكل قيم عقدة عند استخدام Azure CNI مع التخصيص الديناميكي ل IPs قليلا عن سلوك CNI التقليدي:

CNI الإعداد الافتراضي قابل للتكوين عند النشر
Azure CNI التقليدي 30 نعم (حتى 250)
Azure CNI مع التخصيص الديناميكي لـ IPs 250 نعم (حتى 250)

تظل جميع الإرشادات الأخرى المتعلقة بتكوين الحد الأقصى للقرون لكل عقدة كما هي.

معلمات النشر

معلماتالتوزيع لتكوين شبكات Azure CNI الأساسية في AKS كلها صالحة، مع استثناءين:

  • المعلمة الشبكة الفرعية الآن تُشير إلى الشبكة الفرعية المتعلقة بعقد نظام المجموعة.
  • يتم استخدام معلمة شبكة فرعية الإضافية لوحدة الجراب لتحديد الشبكة الفرعية التي سيتم تخصيص عناوين IP بشكل حيوي إلى وحدات الجراب.

تكوين الشبكات مع التخصيص الديناميكي لعناوين IP ودعم الشبكة الفرعية المحسن - Azure CLI

استخدام التخصيص الديناميكي لـ IPs ودعم الشبكة الفرعية المُحسنة في نظام المجموعة يشبه الأسلوب الافتراضي لتكوين نظام مجموعة Azure CNI. المثال التالي من خلال إنشاء شبكة ظاهرية جديدة مع شبكة فرعية للعقد وشبكة فرعية لوحدات الجراب وإنشاء نظام مجموعة يستخدم Azure CNI مع تخصيص ديناميكي لـ IPs ودعم الشبكة الفرعية المُحسنة. تأكد من استبدال المتغيرات مثل $subscription بالقيم الخاصة بك.

إنشاء الشبكة الظاهرية مع شبكتين فرعيتين.

RESOURCE_GROUP_NAME="myResourceGroup"
VNET_NAME="myVirtualNetwork"
LOCATION="westcentralus"
SUBNET_NAME_1="nodesubnet"
SUBNET_NAME_2="podsubnet"

# Create the resource group
az group create --name $RESOURCE_GROUP_NAME --location $LOCATION

# Create our two subnet network 
az network vnet create --resource-group $RESOURCE_GROUP_NAME --location $LOCATION --name $VNET_NAME --address-prefixes 10.0.0.0/8 -o none 
az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_1 --address-prefixes 10.240.0.0/16 -o none 
az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_2 --address-prefixes 10.241.0.0/16 -o none 

إنشاء نظام المجموعة، والإشارة إلى الشبكة الفرعية للعقدة باستخدام --vnet-subnet-id والشبكة الفرعية pod باستخدام --pod-subnet-id وتمكين الوظيفة الإضافية للمراقبة.

CLUSTER_NAME="myAKSCluster"
SUBSCRIPTION="aaaaaaa-aaaaa-aaaaaa-aaaa"

az aks create \
    --name $CLUSTER_NAME \
    --resource-group $RESOURCE_GROUP_NAME \
    --location $LOCATION \
    --max-pods 250 \
    --node-count 2 \
    --network-plugin azure \
    --vnet-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_1 \
    --pod-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_2 \
    --enable-addons monitoring \
    --generate-ssh-keys

إضافة تجمع عقدة

عند إضافة تجمع عقدة، راجع الشبكة الفرعية للعقدة باستخدام --vnet-subnet-id الشبكة الفرعية لوحدة الجراب باستخدام --pod-subnet-id. ينشئ المثال التالي اثنين من الشبكات الفرعية الجديدة التي يتم الرجوع إليها بعد ذلك في إنشاء تجمع عقدة جديدة:

SUBNET_NAME_3="node2subnet"
SUBNET_NAME_4="pod2subnet"
NODE_POOL_NAME="mynodepool"

az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_3 --address-prefixes 10.242.0.0/16 -o none 
az network vnet subnet create --resource-group $RESOURCE_GROUP_NAME --vnet-name $VNET_NAME --name $SUBNET_NAME_4 --address-prefixes 10.243.0.0/16 -o none 

az aks nodepool add --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --name $NODE_POOL_NAME \
    --max-pods 250 \
    --node-count 2 \
    --vnet-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_3 \
    --pod-subnet-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME_4 \
    --no-wait

مراقبة استخدام الشبكة الفرعية ل IP

يوفر Azure CNI القدرة على مراقبة استخدام الشبكة الفرعية IP. لتمكين مراقبة استخدام الشبكة الفرعية IP، اتبع الخطوات التالية:

الحصول على ملف YAML

  1. قم بتنزيل أو تجميع الملف المسمى container-azm-ms-agentconfig.yaml من GitHub.

  2. البحث azure_subnet_ip_usage في عمليات التكامل. عيّن enabled إلى true.

  3. حفظ الملف.

الحصول على بيانات اعتماد AKS

تعيين المتغيرات للاشتراك ومجموعة الموارد والمجموعة. ضع في اعتبارك ما يلي كأمثلة:

az account set --subscription $SUBSCRIPTION
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME

تطبيق التكوين

  1. افتح terminal في المجلد الذي يتم فيه حفظ ملف container-azm-ms-agentconfig.yaml الذي تم تنزيله.
  2. تطبيق التكوين باستخدام kubectl apply -f container-azm-ms-agentconfig.yaml الأمر . سيؤدي ذلك إلى إعادة تشغيل الجراب وبعد 5-10 دقائق، ستكون المقاييس مرئية.
  3. اعرض المقاييس على نظام المجموعة بالانتقال إلى المصنفات على صفحة نظام المجموعة في مدخل Microsoft Azure، وابحث عن المصنف المسمى Subnet IP Usage.

التوزيع الديناميكي لعناوين IP وأسئلة متداولة لدعم الشبكة الفرعية المحسنة

  • هل يمكنني تعيين شبكات فرعية متعددة لوحدة الجراب إلى تجمع نظام مجموعة/عقدة؟

    يمكن تعيين شبكة فرعية واحدة فقط إلى تجمع نظام مجموعة أو عقدة. ومع ذلك، يمكن مشاركة مجموعات متعددة أو تجمعات عقدة شبكة فرعية واحدة.

  • هل يمكنني تعيين شبكات فرعية لوحدة الجراب من الشبكة الظاهرية مختلفة تماماً؟

    لا، يجب أن تكون شبكة pod الفرعية من نفس شبكة VNet مثل نظام المجموعة.

  • يمكن لبعض تجمعات العقد في نظام المجموعة استخدام CNI التقليدي في حين أن البعض الآخر يستخدم CNI جديد؟

    يجب أن يستخدم نظام المجموعة بأكملها نوع واحد فقط من CNI.

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

تعرف على المزيد حول الشبكات في AKS في المقالات التالية: