تكوين Azure CNI المشغل بواسطة Cilium في خدمة Azure Kubernetes (AKS)
يجمع Azure CNI المشغل بواسطة Cilium بين مستوى التحكم القوي في Azure CNI ولوحة بيانات Cilium لتوفير شبكات وأمان عاليي الأداء.
من خلال الاستفادة من برامج eBPF المحملة في نواة Linux وبنية كائن API أكثر كفاءة، يوفر Azure CNI المشغل بواسطة Cilium المزايا التالية:
وظائف مكافئة لوظائف Azure CNI الحالية والمكونات الإضافية لتراكب Azure CNI
توجيه الخدمة المحسن
فرض نهج الشبكة الأكثر كفاءة
إمكانية مراقبة حركة مرور نظام المجموعة بشكل أفضل
دعم المجموعات الأكبر (المزيد من العقد والقرون والخدمات)
إدارة عناوين IP (IPAM) مع Azure CNI المشغل بواسطة Cilium
يمكن نشر Azure CNI المشغل بواسطة Cilium باستخدام طريقتين مختلفتين لتعيين عناوين IP للجراب:
تعيين عناوين IP من شبكة تراكب (على غرار وضع تراكب Azure CNI)
تعيين عناوين IP من شبكة ظاهرية (مشابهة ل Azure CNI الحالي مع Dynamic Pod IP Assignment)
إذا لم تكن متأكدا من الخيار الذي يجب تحديده، فاقرأ "اختيار نموذج شبكة لاستخدامه".
إنفاذ نهج الشبكة
يفرض Cilium نهج الشبكة للسماح بنسبة استخدام الشبكة بين القرون أو رفضها. باستخدام Cilium، لا تحتاج إلى تثبيت محرك نهج شبكة منفصل مثل Azure Network Policy Manager أو Calico.
القيود
يحتوي Azure CNI المشغل بواسطة Cilium حاليا على القيود التالية:
متوفر فقط لنظام التشغيل Linux وليس لنظام التشغيل Windows.
تم تعطيل تنفيذ نهج Cilium L7.
لا يمكن استخدام
ipBlock
نهج الشبكة للسماح بالوصول إلى عناوين IP للعقدة أو الجراب. راجع الأسئلة المتداولة للحصول على التفاصيل والحلول البديلة الموصى بها.لا يمكن لخدمات Kubernetes المتعددة استخدام نفس منفذ المضيف ببروتوكولات مختلفة (على سبيل المثال، TCP أو UDP) (مشكلة Cilium #14287).
قد يتم فرض نهج الشبكة على حزم الرد عندما يتصل جراب بنفسه عبر عنوان IP لنظام مجموعة الخدمة (مشكلة Cilium #19406).
لا يتم تطبيق نهج الشبكة على pods باستخدام شبكة المضيف (
spec.hostNetwork: true
) لأن هذه الحجيرات تستخدم هوية المضيف بدلا من وجود هويات فردية.
المتطلبات الأساسية
الإصدار 2.48.1 من Azure CLI أو أحدث. قم بتشغيل
az --version
لمشاهدة الإصدار المثبت حاليا. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.إذا كنت تستخدم قوالب ARM أو REST API، يجب أن يكون إصدار AKS API معاينة 2022-09-02 أو أحدث.
إشعار
استخدمت إصدارات AKS API السابقة (2022-09-02preview إلى 2023-01-02preview) الحقل networkProfile.ebpfDataplane=cilium
. تستخدم إصدارات AKS API منذ 2023-02-02preview الحقل networkProfile.networkDataplane=cilium
لتمكين Azure CNI المشغل بواسطة Cilium.
إنشاء نظام مجموعة AKS جديد باستخدام Azure CNI المشغل بواسطة Cilium
الخيار 1: تعيين عناوين IP من شبكة تراكب
استخدم الأوامر التالية لإنشاء نظام مجموعة مع شبكة تراكب وCilium. استبدل قيم و <clusterName>
<resourceGroupName>
و:<location>
az aks create \
--name <clusterName> \
--resource-group <resourceGroupName> \
--location <location> \
--network-plugin azure \
--network-plugin-mode overlay \
--pod-cidr 192.168.0.0/16 \
--network-dataplane cilium \
--generate-ssh-keys
إشعار
تحل --network-dataplane cilium
العلامة محل العلامة المهملة --enable-ebpf-dataplane
المستخدمة في الإصدارات السابقة من ملحق aks-preview CLI.
الخيار 2: تعيين عناوين IP من شبكة ظاهرية
قم بتشغيل الأوامر التالية لإنشاء مجموعة موارد وشبكة ظاهرية باستخدام شبكة فرعية للعقد وشبكة فرعية للقرون.
# Create the resource group
az group create --name <resourceGroupName> --location <location>
# Create a virtual network with a subnet for nodes and a subnet for pods
az network vnet create --resource-group <resourceGroupName> --location <location> --name <vnetName> --address-prefixes <address prefix, example: 10.0.0.0/8> -o none
az network vnet subnet create --resource-group <resourceGroupName> --vnet-name <vnetName> --name nodesubnet --address-prefixes <address prefix, example: 10.240.0.0/16> -o none
az network vnet subnet create --resource-group <resourceGroupName> --vnet-name <vnetName> --name podsubnet --address-prefixes <address prefix, example: 10.241.0.0/16> -o none
إنشاء نظام المجموعة باستخدام --network-dataplane cilium
:
az aks create \
--name <clusterName> \
--resource-group <resourceGroupName> \
--location <location> \
--max-pods 250 \
--network-plugin azure \
--vnet-subnet-id /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/nodesubnet \
--pod-subnet-id /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/podsubnet \
--network-dataplane cilium \
--generate-ssh-keys
الأسئلة الشائعة
هل يمكنني تخصيص تكوين Cilium؟
لا، تدير AKS تكوين Cilium ولا يمكن تعديله. نوصي العملاء الذين يحتاجون إلى مزيد من التحكم باستخدام AKS BYO CNI وتثبيت Cilium يدويا.
هل يمكنني استخدام
CiliumNetworkPolicy
موارد مخصصة بدلا من موارد KubernetesNetworkPolicy
؟CiliumNetworkPolicy
يتم دعم الموارد المخصصة جزئيا. قد يستخدم العملاء تصفية FQDN كجزء من مجموعة ميزات خدمات شبكات الحاويات المتقدمة.يوضح هذا
CiliumNetworkPolicy
المثال نموذج نمط مطابقة للخدمات التي تطابق التسمية المحددة.apiVersion: "cilium.io/v2" kind: CiliumNetworkPolicy metadata: name: "example-fqdn" spec: endpointSelector: matchLabels: foo: bar egress: - toFQDNs: - matchPattern: "*.example.com"
لماذا يتم حظر حركة المرور عندما
NetworkPolicy
يكون لديهipBlock
الذي يسمح بعنوان IP؟يتمثل أحد قيود Azure CNI المشغل بواسطة Cilium في أنه
NetworkPolicy
لا يمكن ل 'sipBlock
تحديد pod أو node IPs.على سبيل المثال، يحتوي هذا
NetworkPolicy
علىipBlock
الذي يسمح لجميع الخروج إلى0.0.0.0/0
:apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: example-ipblock spec: podSelector: {} policyTypes: - Egress egress: - to: - ipBlock: cidr: 0.0.0.0/0 # This will still block pod and node IPs.
ومع ذلك، عند تطبيق هذا
NetworkPolicy
، سيحظر Cilium الخروج إلى pod وIPs العقدة على الرغم من أن عناوين IP داخلipBlock
CIDR.كحل بديل، يمكنك إضافة
namespaceSelector
وتحديدpodSelector
pods. يحدد المثال أدناه جميع pods في جميع مساحات الأسماء:apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: example-ipblock spec: podSelector: {} policyTypes: - Egress egress: - to: - ipBlock: cidr: 0.0.0.0/0 - namespaceSelector: {} - podSelector: {}
إشعار
لا يمكن حاليا تحديد
NetworkPolicy
معipBlock
للسماح بحركة المرور إلى عناوين IP للعقدة.هل تقوم AKS بتكوين وحدة المعالجة المركزية أو حدود الذاكرة على Cilium
daemonset
؟لا، لا تقوم AKS بتكوين وحدة المعالجة المركزية أو حدود الذاكرة على Cilium
daemonset
لأن Cilium هو مكون نظام مهم لشبكة الجراب وإنفاذ نهج الشبكة.هل يستخدم Azure CNI المشغل بواسطة Cilium Kube-Proxy؟
لا، لا تستخدم مجموعات AKS التي تم إنشاؤها باستخدام مخطط بيانات الشبكة مثل Cilium Kube-Proxy. إذا كانت مجموعات AKS على تراكب Azure CNI أو Azure CNI مع تخصيص IP ديناميكي وتتم ترقيتها إلى مجموعات AKS التي تشغل Azure CNI مدعومة من Cilium، يتم إنشاء أحمال عمل العقد الجديدة دون kube-proxy. يتم أيضا ترحيل أحمال العمل القديمة للتشغيل دون kube-proxy كجزء من عملية الترقية هذه.
الخطوات التالية
تعرف على المزيد حول الشبكات في AKS في المقالات التالية:
Azure Kubernetes Service