إنشاء بوابة 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 المدارة غير متوافقة مع الشبكات الظاهرية المخصصة.
هام
في المجموعات غير الخاصة، يتم توجيه نسبة استخدام شبكة نظام مجموعة خادم API ومعالجتها من خلال نوع نظام المجموعة الصادر. لمنع معالجة حركة مرور خادم API كحركة مرور عامة، ضع في اعتبارك استخدام مجموعة خاصة، أو تحقق من ميزة تكامل API Server VNet.
إنشاء نظام مجموعة 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 \ --generate-ssh-keys
قم بتحديث عنوان 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 مسبقا على الشبكة الفرعية. تنشئ الأوامر التالية الموارد المطلوبة لهذا السيناريو.
إنشاء مجموعة موارد باستخدام
az group create
الأمر .az group create --name myResourceGroup \ --location southcentralus
إنشاء هوية مدارة لأذونات الشبكة وتخزين المعرف لاستخدامها
$IDENTITY_ID
لاحقا.IDENTITY_ID=$(az identity create \ --resource-group myResourceGroup \ --name myNatClusterId \ --location southcentralus \ --query id \ --output tsv)
إنشاء IP عام لبوابة NAT باستخدام
az network public-ip create
الأمر .az network public-ip create \ --resource-group myResourceGroup \ --name myNatGatewayPip \ --location southcentralus \ --sku standard
إنشاء بوابة 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 في منطقة لك.
إنشاء شبكة ظاهرية
az network vnet create
باستخدام الأمر .az network vnet create \ --resource-group myResourceGroup \ --name myVnet \ --location southcentralus \ --address-prefixes 172.16.0.0/20
إنشاء شبكة فرعية في الشبكة الظاهرية باستخدام بوابة 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)
إنشاء نظام مجموعة 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 \ --assign-identity $IDENTITY_ID \ --generate-ssh-keys
تعطيل 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
Azure Kubernetes Service