نشر المكون الإضافي لواجهة شبكة حاوية شبكة Azure الظاهرية
يتم تثبيت المكون الإضافي لواجهة شبكة حاوية شبكة Azure الظاهرية (CNI) في جهاز Azure الظاهري وجلب إمكانات الشبكة الظاهرية إلى حاويات Kubernetes Pods وDocker. لمعرفة المزيد حول المكون الإضافي، راجع تمكين الحاويات لاستخدام إمكانيات شبكة Azure الظاهرية. بالإضافة إلى ذلك، يمكن استخدام المكون الإضافي مع خدمة Azure Kubernetes (AKS) عن طريق تحديد خيار الشبكات المتقدمة، والذي يضع تلقائياً حاويات AKS في شبكة ظاهرية.
نشر المكون الإضافي لمجموعة Azure Container Service-Engine Kubernetes
ينشر Azure Container Service-Engine مجموعة Kubernetes باستخدام قالب Azure Resource Manager. يتم تحديد تكوين المجموعة في ملف JSON الذي يتم تمريره إلى الأداة عند تكوين القالب. لمعرفة المزيد حول القائمة الكاملة لإعدادات نظام المجموعة المعتمدة وأوصافها، راجع Microsoft Azure Container Service Engine - تعريف نظام المجموعة. المكون الإضافي هو المكون الإضافي الافتراضي للشبكات للمجموعات التي تم إنشاؤها باستخدام Azure Container Service-Engine. تعد إعدادات تكوين الشبكة التالية مهمة عند تكوين المكون الإضافي:
الإعدادات | الوصف |
---|---|
firstConsecutiveStaticIP | عنوان IP المخصص للعقدة الرئيسية. هذا الإعداد إلزامي. |
clusterSubnet under kubernetesConfig | CIDR الخاص بالشبكة الفرعية الظاهرية حيث يتم نشر المجموعة، والتي يتم من خلالها تخصيص عناوين IP إلى Pods |
vnetSubnetId under masterProfile | يحدد معرف مورد Azure Resource Manager للشبكة الفرعية حيث سيتم نشر مجموعة النظام |
vnetCidr | CIDR الخاص بالشبكة الافتراضية حيث يتم نشر مجموعة النظام |
max-Pods under kubeletConfig | الحد الأقصى لعدد Pods على كل جهاز ظاهري وكيل. بالنسبة للمكون الإضافي، يكون الإعداد الافتراضي هو 30. يمكنك تحديد ما يصل إلى 250 |
مثال على التكوين
مثال json التالي هو لمجموعة النظام ذات الخصائص التالية:
عقدة رئيسية واحدة وعقدتي عامل
تم نشره في شبكة فرعية تسمى KubeClusterSubnet (10.0.0.0/20)، مع وجود كل من العقد الرئيسية وعقد الوكيل فيها.
{
"apiVersion": "vlabs",
"properties": {
"orchestratorProfile": {
"orchestratorType": "Kubernetes",
"kubernetesConfig": {
"clusterSubnet": "10.0.0.0/20" --> Subnet allocated for the cluster
}
},
"masterProfile": {
"count": 1,
"dnsPrefix": "ACSKubeMaster",
"vmSize": "Standard_A2",
"vnetSubnetId": "/subscriptions/<subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/virtualNetworks/<Vnet Name>/subnets/KubeClusterSubnet",
"firstConsecutiveStaticIP": "10.0.1.50", --> IP address allocated to the Master node
"vnetCidr": "10.0.0.0/16" --> Virtual network address space
},
"agentPoolProfiles": [
{
"name": "k8sagentpoo1",
"count": 2,
"vmSize": "Standard_A2_v2",
"vnetSubnetId": "/subscriptions/<subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/virtualNetworks/<VNet Name>/subnets/KubeClusterSubnet",
"availabilityProfile": "AvailabilitySet"
}
],
"linuxProfile": {
"adminUsername": "KubeServerAdmin",
"ssh": {
"publicKeys": [
{…}
]
}
},
"servicePrincipalProfile": {
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"secret": "azure123"
}
}
}
نشر المكون الإضافي لمجموعة نظام Kubernetes
أكمل الخطوات التالية لتثبيت المكون الإضافي على كل جهاز ظاهري Azure في مجموعة نظام Kubernetes:
قم بتخصيص تجمع عناوين IP للشبكة الظاهرية مسبقا على كل جهاز ظاهري يتم من خلاله تعيين عناوين IP إلى Pods. يأتي كل جهاز ظاهري من Azure مزوداً بعنوان IP خاص بالشبكة الظاهرية الأساسية على كل واجهة شبكة. تمت إضافة مجموعة عناوين IP الخاصة بـ Pods كعناوين ثانوية (ipconfigs) على واجهة شبكة الجهاز الظاهري، باستخدام أحد الخيارات التالية:
PowerShell: تعيين عناوين IP متعددة باستخدام PowerShell
قالب Azure Resource Manager: تعيين عناوين IP متعددة باستخدام القوالب
تأكد من إضافة عناوين IP كافية لجميع Pods التي تتوقع ظهورها على الجهاز الظاهري.
حدد المكون الإضافي لتوفير الشبكات للمجموعة الخاصة بك عن طريق تمرير Kubelet
–network-plugin=cni
خيار سطر الأوامر أثناء إنشاء المجموعة. يبحث Kubernetes افتراضيا عن المكون الإضافي وملف التكوين في الدلائل التي تم تثبيتها فيها بالفعل.إذا كنت تريد وصول أجهزة Pods الخاصة بك إلى الإنترنت، فأضف قاعدة iptables التالية على أجهزة Linux الظاهرية الخاصة بك إلى حركة مرور الإنترنت NAT-source. في المثال التالي، نطاق IP المحدد هو 10.0.0.0/8.
iptables -t nat -A POSTROUTING -m iprange ! --dst-range 168.63.129.16 -m addrtype ! --dst-type local ! -d 10.0.0.0/8 -j MASQUERADE
قواعد حركة مرور NAT غير الموجهة إلى نطاقات IP المحددة. الافتراض هو أن كل حركة مرور خارج النطاقات السابقة هي حركة مرور على الإنترنت. يمكنك اختيار تحديد نطاقات IP للشبكة الظاهرية الخاصة بالجهاز الظاهري، والشبكات الظاهرية المقترنة، والشبكات المحلية.
تقوم أجهزة Windows الظاهرية تلقائياً بتوفير مصدر حركة مرور NAT التي لها وجهة خارج الشبكة الفرعية التي ينتمي إليها الجهاز الظاهري. لا يمكن تحديد نطاقات IP مخصصة.
بعد الانتهاء من الخطوات السابقة، يتم تعيين عناوين IP الخاصة تلقائيا من الشبكة الظاهرية لوحدات الجراب التي تم إحضارها على الأجهزة الظاهرية لعامل Kubernetes.
انشر المكون الإضافي لحاويات Docker
إنشاء حاويات Docker باستخدام الأمر التالي:
./docker-run.sh \<container-name\> \<container-namespace\> \<image\>
تبدأ الحاويات تلقائياً في تلقي عناوين IP من التجمع المخصص. إذا كنت ترغب في تحميل حركة مرور موازنة التحميل إلى حاويات Docker، يجب وضعها خلف موازن تحميل البرنامج مع مسبار موازن التحميل.
ملف تكوين شبكة CNI
يتم وصف ملف تكوين شبكة CNI بتنسيق JSON. وهو موجود بشكلٍ افتراضي في /etc/cni/net.d
لنظام التشغيل Linux وc:\cni\netconf
لنظام التشغيل Windows. يحدد الملف تكوين المكون الإضافي ويختلف عن نظامي التشغيل Windows وLinux. ملف json التالي هو نموذج لملف تكوين Linux، متبوع بشرح لبعض إعدادات المفاتيح. لست بحاجة إلى إجراء أي تغييرات على الملف:
{
"cniVersion":"0.3.0",
"name":"azure",
"plugins":[
{
"type":"azure-vnet",
"mode":"bridge",
"bridge":"azure0",
"ipam":{
"type":"azure-vnet-ipam"
}
},
{
"type":"portmap",
"capabilities":{
"portMappings":true
},
"snat":true
}
]
}
شرح الإعدادات
"cniVersion": تدعم المكونات الإضافية لشبكة Azure الظاهرية CNI الإصدارين 0.3.0 و0.3.1 من مواصفات CNI.
"name": اسم الشبكة. يمكن تعيين هذه الخاصية إلى أي قيمة فريدة.
"type": اسم المكون الإضافي للشبكة. تعيين إلى azure-vnet.
"الوضع": الوضع التشغيلي. هذا الحقل اختياري. الوضع الوحيد المدعوم هو "الجسر". لمزيدٍ من المعلومات، راجع أوضاع التشغيل.
"bridge": اسم الجسر المستخدم لتوصيل الحاويات بشبكة ظاهرية. هذا الحقل اختياري. إذا تم حذفه، يختار المكون الإضافي تلقائيا اسما فريدا، استنادا إلى فهرس الواجهة الرئيسية.
"ipam" - "type": اسم المكون الإضافي IPAM. تعيين دائماً على azure-vnet-ipam.
تنزيل المكون الإضافي وتثبيته
تنزيل المكون الإضافي من GitHub. تنزيل أحدث إصدار للنظام الأساسي الذي تستخدمه:
انسخ البرنامج النصي لتثبيت Linux أو Windows إلى جهاز الكمبيوتر الخاص بك. احفظ البرنامج النصي في دليل scripts
على جهاز الكمبيوتر الخاص بك وقم بتسمية الملف install-cni-plugin.sh
لنظام التشغيل Linux أو install-cni-plugin.ps1
Windows.
لتثبيت المكون الإضافي، قم بتشغيل البرنامج النصي المناسب للنظام الأساسي الخاص بك، مع تحديد إصدار المكون الإضافي الذي تستخدمه. على سبيل المثال، يمكنك تحديد v1.4.20. لتثبيت Linux، قم بتوفير إصدار مكون إضافي CNI مناسب، مثل v1.0.1:
scripts/install-cni-plugin.sh [azure-cni-plugin-version] [cni-plugin-version]
scripts\\ install-cni-plugin.ps1 [azure-cni-plugin-version]
يقوم البرنامج النصي بتثبيت المكون الإضافي ضمن /opt/cni/bin
لنظام التشغيل Linux وc:\cni\bin
لنظام التشغيل Windows. يأتي المكون الإضافي المثبت مزوداً بملف تكوين شبكة بسيط يعمل بعد التثبيت. لا يحتاج إلى التحديث. لمعرفة المزيد حول الإعدادات في الملف، راجع ملف تكوين شبكة CNI.