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

عندما تصل إلى عنقود Azure Kubernetes Service الخاص (AKS)، تحتاج إلى الاتصال بالمجموعة من الشبكة الافتراضية للعنقود (VNet)، أو شبكة مترابطة، أو نقطة نهاية خاصة مهيأة. تتطلب هذه الطرق إعدادات إضافية، مثل إعداد VPN أو Express Route.

باستخدام Azure CLI، يمكنك استخدام command invoke للوصول إلى أنظمة المجموعات الخاصة دون الحاجة إلى تكوين VPN أو Express Route. command invoke يسمح لك باستدعاء الأوامر عن بعد، مثل kubectl و helm، على نظام المجموعة الخاص بك من خلال واجهة برمجة تطبيقات Azure دون الاتصال مباشرة بالمجموعة. يقوم RBAC بالإجراءات Microsoft.ContainerService/managedClusters/runcommand/action والتحكم Microsoft.ContainerService/managedClusters/commandResults/read في الأذونات لاستخدام command invoke.

باستخدام مدخل Microsoft Azure، يمكنك استخدام الميزة Run command لتشغيل الأوامر على نظام المجموعة الخاص بك. تستخدم الميزة Run command نفس command invoke الوظيفة لتشغيل الأوامر على نظام المجموعة. الوحدة التي تم إنشاؤها من قبل Run command توفر kubectl وتعمل helm على عنقودك. jq xargsتتوفر grepو و awk لدعم Bash.

‏‫نصيحة

يمكنك استخدام Azure Copilot لتشغيل kubectl الأوامر في بوابة Azure. لمزيد من المعلومات، راجع العمل مع عناقيد AKS بكفاءة باستخدام Azure Copilot.

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

متطلبات النظام والإذن

نوع المتطلب مواصفات كيفية التحقق
Azure CLI version 2.24.0 أو ما أحدثه يمكنك استخدام أمر az --version للتحقق من الإصدار الخاص بك.
عنقود AKS الخاص لابد أن هناك بالفعل إذا لم يكن لديك مجموعة خاصة موجودة، اتبع الخطوات في إنشاء عنقود AKS خاص.
إجراءات RBAC Microsoft.ContainerService/managedClusters/runcommand/action Microsoft.ContainerService/managedClusters/commandResults/read تحقق باستخدام صفحة التحكم في الوصول (IAM) في بوابة Azure أو az role assignment list أمر Azure CLI.

تشغيل مواصفات موارد وحدة الأوامر

نوع المورد قيمة تأثير
طلبات وحدة المعالجة المركزية 200 متر الحد الأدنى للمعالج المحجوز لوحدة التحكم
طلبات الذاكرة 500 ميل الحد الأدنى للذاكرة المحجوزة لوحدة القيادة
حدود وحدة المعالجة المركزية 500 م أقصى وحدة معالجة مركزية متاحة لوحدة التحكم
حدود الذاكرة 1 غيغيت أقصى ذاكرة متاحة لوحدة القيادة
مهلت انتهاء واجهة برمجة التطبيقات Azure Resource Manager (ARM) 60 ثانية الحد الأقصى للوقت لجدولة الكبسولات
حد حجم الإخراج 512 كيلوبايت أقصى حجم لإخراج أوامر

تحديد الخدمة واعتباراتها

نطاق التصميم

  • ليس للوصول البرمجي: استخدم Bastion أو VPN أو ExpressRoute لاستدعاءات API الآلياء.
  • اعتماد جدولة البود: يتطلب موارد عنقودية كافية (انظر مواصفات الموارد).
  • قيود الإخراج: exitCodeوالنص فقط، بدون تفاصيل على مستوى API.
  • تنطبق قيود الشبكة: مع مراعاة القيود الأمنية على شبكات العنقود.

نقاط الفشل المحتملة

  • فشل جدولة البودات إذا كانت العقد تعاني من قيود الموارد.
  • مهلة API ARM (60 ثانية) إذا لم يكن بالإمكان جدولة الوحدة بسرعة.
  • يتم اقتطاع الناتج إذا تجاوز الرد حد 512 كيلوبايت.

الاستخدام command invoke على عنقود AKS خاص باستخدام Azure CLI

  • حدد متغيرات البيئة لمجموعة الموارد واسم العنقود لاستخدامها في الأوامر التالية.

    export AKS_RESOURCE_GROUP="<resource-group-name>"
    export AKS_CLUSTER_NAME="<cluster-name>"
    

    تسمح لك هذه المتغيرات البيئية بتشغيل أوامر AKS دون الحاجة لإعادة كتابة أسمائها.

استخدام command invoke لتشغيل أمر واحد

  • شغل أمرا واحدا على العنقود باستخدام az aks command invoke الأمر والمعلمة --command لتحديد الأمر الذي سيتم تشغيله. المثال التالي يحصل kube-system على الكبسولات في فضاء الأسماء.

    az aks command invoke \
      --resource-group $AKS_RESOURCE_GROUP \
      --name $AKS_CLUSTER_NAME \
      --command "kubectl get pods -n kube-system"
    

استخدام command invoke لتشغيل أوامر متعددة

  • شغل عدة أوامر على العنقود باستخدام az aks command invoke الأمر والمعلمة --command لتحديد الأوامر التي ستعمل. المثال التالي يضيف مستودع مخطط Bitnami Helm، ويحدث المستودع، ويثبت المخطط nginx .

    az aks command invoke \
      --resource-group $AKS_RESOURCE_GROUP \
      --name $AKS_CLUSTER_NAME \
      --command "helm repo add bitnami https://charts.bitnami.com/bitnami && helm repo update && helm install my-release bitnami/nginx"
    

استخدم command invoke لتشغيل الأوامر مع ملف مرفق

إذا أردت تشغيل أمر بملف مرفق، يجب أن يكون الملف موجودا ومتاحا في مجلد العمل الحالي الخاص بك. في المثال التالي، ننشئ ملف نشر بسيط للعرض.

  1. إنشاء ملف بيان Kubernetes باسم deployment.yaml. ملف النشر المثال التالي ينشر بود nginx .

    cat <<EOF > deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-demo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx-demo
      template:
        metadata:
          labels:
            app: nginx-demo
        spec:
          containers:
          - name: nginx
            image: nginx:1.21.6
            ports:
            - containerPort: 80
    EOF
    
  2. قم بتطبيق ملف النشر على العنقود باستخدام az aks command invoke الأمر الذي يحتوي على --file المعلمة لإرفاق الملف. المثال التالي يطبق الملف deployment.yaml على مساحة الاسم default .

    az aks command invoke \
      --resource-group $AKS_RESOURCE_GROUP \
      --name $AKS_CLUSTER_NAME \
      --command "kubectl apply -f deployment.yaml -n default" \
      --file deployment.yaml
    

يستخدم command invoke لتشغيل الأوامر مع جميع الملفات في المجلد الحالي

إشعار

استخدم الملفات الصغيرة والضرورية فقط لتجنب تجاوز حدود حجم النظام.

في المثال التالي، ننشئ ملفي نشر الحد الأدنى للعرض.

  1. أنشئ ملفي بيانات Kubernetes باسم deployment.yaml و configmap.yaml. الملفات النموذجية التالية تقوم بنشر nginx وحدة وإنشاء خريطة إعداد مع رسالة ترحيب.

    cat <<EOF > deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-demo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx-demo
      template:
        metadata:
          labels:
            app: nginx-demo
        spec:
          containers:
          - name: nginx
            image: nginx:1.21.6
            ports:
            - containerPort: 80
    EOF
    
    cat <<EOF > configmap.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: nginx-config
    data:
      welcome-message: "Hello from configmap"
    EOF
    
  2. قم بتطبيق ملفات النشر على العنقود باستخدام az aks command invoke الأمر الذي يحتوي على --file المعلمة لإرفاق الملف. المثال التالي يطبق ملفات deployment.yaml و configmap.yaml على default مساحة الاسم.

    az aks command invoke \
      --resource-group $AKS_RESOURCE_GROUP \
      --name $AKS_CLUSTER_NAME \
      --command "kubectl apply -f deployment.yaml -f configmap.yaml -n default" \
      --file deployment.yaml \
      --file configmap.yaml
    

الاستخدام Run command على مجموعة AKS الخاصة في بوابة Azure

يمكنك استخدام الأوامر التالية kubectl مع هذه Run command الميزة:

  • kubectl get nodes
  • kubectl get deployments
  • kubectl get pods
  • kubectl describe nodes
  • kubectl describe pod <pod-name>
  • kubectl describe deployment <deployment-name>
  • kubectl apply -f <file-name>

استخدام Run command لتشغيل أمر واحد

  1. في مدخل Microsoft Azure، انتقل إلى نظام المجموعة الخاص بك.
  2. من قائمة الخدمة، تحت موارد Kubernetes، اختر أمر Run.
  3. أدخل الأمر الذي تريد تشغيله وحدد تشغيل.

يستخدم Run command لتشغيل الأوامر مع الملفات المرفقة

  1. في مدخل Microsoft Azure، انتقل إلى نظام المجموعة الخاص بك.

  2. من قائمة الخدمة، تحت موارد Kubernetes، اختر أمر Run.

  3. حدد إرفاق الملفات>استعرض بحثا عن الملفات.

    لقطة شاشة لإرفاق الملفات بأمر تشغيل مدخل Microsoft Azure.

  4. اختر الملف أو الملفات التي تريد إرفاقها، ثم اختر Atserve.

  5. أدخل الأمر الذي تريد تشغيله وحدد تشغيل.

تعطيل Run command

يمكنك تعطيل الميزة Run command عن طريق تعيين .properties.apiServerAccessProfile.disableRunCommand إلى true.

مشاكل استكشاف command invoke الأخطاء

للحصول على معلومات حول المشكلات الأكثر شيوعا وكيفية az aks command invoke إصلاحها، راجع حل az aks command invoke حالات الفشل.

في هذه المقالة، تعلمت كيفية الوصول إلى مجموعة خاصة وتشغيل الأوامر على نظام المجموعة هذا. لمزيد من المعلومات حول مجموعات AKS، راجع المقالات التالية: