إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
خلال دورة حياة مجموعة خدمة Azure Kubernetes (AKS) الخاصة بك، ستحتاج في النهاية إلى الوصول المباشر إلى عقدة AKS. قد يكون هذا الوصول لعمليات الصيانة أو جمع السجل أو استكشاف الأخطاء وإصلاحها.
تصف هذه المقالة خيارين للاتصال الآمن ضد عقد AKS Linux وWindows. يتطلب أحدهما أن يكون لديك وصول Kubernetes API، والآخر من خلال AKS ARM API، والذي يوفر معلومات IP خاصة مباشرة. لأسباب أمنية، لا تتعرض عقد AKS للإنترنت. بدلا من ذلك، للاتصال مباشرة بأي عقد AKS، تحتاج إلى استخدام عنوان IP الخاص بالمضيف أو .
عقد الوصول باستخدام واجهة برمجة تطبيقات Kubernetes
تتطلب هذه الطريقة الأمر .
قبل البدء
يوضح لك هذا الدليل كيفية إنشاء اتصال بعقدة AKS وتحديث مفتاح SSH لنظام مجموعة AKS. لاتباع هذه الخطوات، تحتاج إلى Azure CLI الإصدار 2.0.64 أو أحدث. قم بتشغيل للتحقق من الإصدار. إذا كنت بحاجة إلى تثبيت أو ترقية، راجع تثبيت Azure CLI.
أكمل هذه الخطوات إذا لم يكن لديك مفتاح SSH. أنشئ مفتاح SSH حسب صورة نظام تشغيل العقدة، مثل macOS و Linux، أو Windows. احفظ زوج المفاتيح بصيغة OpenSSH وتجنب الصيغ غير المدعومة مثل . بعد ذلك، راجع إدارة تكوين SSH لإضافة المفتاح إلى نظام المجموعة.
Linux وmacOS
يمكن لمستخدمي لينكس وماك أو إس الوصول إلى عقدتهم باستخدام أو عنوان IP الخاص بهم. يجب على مستخدمي Windows الانتقال إلى قسم البروكسي في Windows Server للحصول على حل مؤقت لحل SSH عبر الوكيل.
Connect with kubectl debug
لإنشاء اتصال shell تفاعلي، استخدم الأمر لتشغيل حاوية مميزة على العقدة الخاصة بك.
لسرد العقد الخاصة بك، استخدم الأمر :
kubectl get nodes -o wideعينة الإخراج:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE aks-nodepool1-37663765-vmss000000 Ready agent 166m v1.25.6 10.224.0.33 <none> Ubuntu 22.04.2 LTS aks-nodepool1-37663765-vmss000001 Ready agent 166m v1.25.6 10.224.0.4 <none> Ubuntu 22.04.2 LTS aksnpwin000000 Ready agent 160m v1.25.6 10.224.0.62 <none> Windows Server 2022 Datacenterاستخدم الأمر لبدء حاوية مميزة على العقدة والاتصال بها.
kubectl debug node/aks-nodepool1-37663765-vmss000000 -it --image=mcr.microsoft.com/azurelinux/busybox:1.36عينة الإخراج:
Creating debugging pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx with container debugger on node aks-nodepool1-37663765-vmss000000. If you don't see a command prompt, try pressing enter. root@aks-nodepool1-37663765-vmss000000:/#لديك الآن حق الوصول إلى العقدة من خلال حاوية مميزة كحجيرة تصحيح الأخطاء.
إشعار
يمكنك التفاعل مع جلسة عمل العقدة عن طريق تشغيل من الحاوية المميزة.
إنهاء وضع تصحيح أخطاء kubectl
عند الانتهاء من العقدة الخاصة بك، أدخل الأمر لإنهاء جلسة shell التفاعلية. بعد إغلاق جلسة الحاوية التفاعلية، احذف جراب تصحيح الأخطاء المستخدم مع .
kubectl delete pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx
اتصال بروكسي Windows Server لنظام SSH
اتبع هذه الخطوات كحل بديل للاتصال ب SSH على عقدة Windows Server.
إنشاء خادم وكيل
في الوقت الحالي، لا يمكنك الاتصال مباشرة بعقدة Windows Server باستخدام kubectl debug. بدلا من ذلك، تحتاج أولا للاتصال بعقدة أخرى في العنقود باستخدام kubectl، ثم الاتصال بعقدة Windows Server من تلك العقدة باستخدام SSH.
للاتصال بعقدة أخرى في نظام المجموعة، استخدم الأمر . لمزيد من المعلومات، اتبع الخطوات السابقة في قسم الكوبيكتل. أنشئ اتصال SSH بعقدة Windows Server من عقدة أخرى باستخدام مفاتيح SSH المقدمة عند إنشاء عنقود AKS وعنوان IP الداخلي لعقدة Windows Server.
هام
الخطوات التالية لإنشاء اتصال SSH بالعقدة Windows Server من عقدة أخرى لا يمكن استخدامها إلا إذا أنشأت عنقود AKS الخاص بك باستخدام Azure CLI مع معامل --generate-ssh-keys. إذا كنت ترغب في استخدام مفاتيح SSH الخاصة بك بدلا من ذلك، يمكنك استخدام لإدارة مفاتيح SSH على مجموعة AKS موجودة. لمزيد من المعلومات، راجع إدارة الوصول إلى عقدة SSH.
إشعار
إذا كانت عقدة بروكسي لينكس متوقفة أو غير مستجيبة، استخدم طريقة Azure Bastion للاتصال بدلا من ذلك.
استخدم الأمر لبدء حاوية مميزة على عقدة الوكيل (Linux) والاتصال بها.
kubectl debug node/aks-nodepool1-37663765-vmss000000 -it --image=mcr.microsoft.com/azurelinux/busybox:1.36عينة الإخراج:
Creating debugging pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx with container debugger on node aks-nodepool1-37663765-vmss000000. If you don't see a command prompt, try pressing enter. root@aks-nodepool1-37663765-vmss000000:/#افتح نافذة طرفية جديدة واستخدم الأمر للحصول على اسم الجراب الذي بدأه .
kubectl get podsعينة الإخراج:
NAME READY STATUS RESTARTS AGE node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx 1/1 Running 0 21sفي مخرج العينة، هو اسم الكبسولة التي تبدأ ب .
استخدم الأمر لفتح اتصال بالجراب المنشور:
kubectl port-forward node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx 2022:22عينة الإخراج:
Forwarding from 127.0.0.1:2022 -> 22 Forwarding from [::1]:2022 -> 22يبدأ المثال السابق في إعادة توجيه حركة مرور الشبكة من المنفذ على كمبيوتر التطوير إلى المنفذ على الجراب المنشور. عند استخدام لفتح اتصال وإعادة توجيه نسبة استخدام الشبكة، يبقى الاتصال مفتوحًا حتى تقوم بإيقاف الأمر .
افتح طرفية جديدة وشغل الأمر
kubectl get nodesلعرض عنوان IP الداخلي للعقدة Windows Server:kubectl get nodes -o custom-columns='NAME:metadata.name,INTERNAL_IP:status.addresses[?(@.type == "InternalIP")].address'عينة الإخراج:
NAME INTERNAL_IP aks-nodepool1-19409214-vmss000003 10.224.0.8 aksnpwin000000 10.224.0.62في المثال السابق،
10.224.0.62هو عنوان IP الداخلي للعقدة Windows Server.أنشئ اتصال SSH مع العقدة Windows Server باستخدام عنوان IP الداخلي، واتصل بالمنفذ
22عبر المنفذ2022على جهاز التطوير الخاص بك. اسم المستخدم الافتراضي لعقد AKS هو azureuser. اقبل المطالبة لمتابعة الاتصال. بعد ذلك يتم تزويدك بموجه bash لعقدة Windows Server الخاصة بك:ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.224.0.62عينة الإخراج:
The authenticity of host '10.224.0.62 (10.224.0.62)' can't be established. ECDSA key fingerprint is SHA256:1234567890abcdefghijklmnopqrstuvwxyzABCDEFG. Are you sure you want to continue connecting (yes/no)? yesإشعار
إذا كنت تفضل استخدام مصادقة كلمة المرور، فضمن المعلمة . على سبيل المثال:
ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' -o PreferredAuthentications=password azureuser@10.224.0.62
استخدم حاوية معالجة مضيفة للوصول إلى عقدة Windows
قم بتشغيل البرنامج النصي التالي لإنشاء . في السكريبت، استبدل
AKSWINDOWSNODENAMEباسم العقدة Windows AKS.تستخدم هذه المواصفات الصورة الأساسية لخادم النانو. لا تحتوي الصورة الأساسية على PowerShell، ولكن نظرا لأنها تعمل كحاوية عملية مضيفة (HPC)، يتوفر PowerShell في الجهاز الظاهري الأساسي.
apiVersion: v1 kind: Pod metadata: labels: pod: hpc name: hpc spec: securityContext: windowsOptions: hostProcess: true runAsUserName: "NT AUTHORITY\\SYSTEM" hostNetwork: true containers: - name: hpc image: mcr.microsoft.com/windows/nanoserver:ltsc2022 # Use nanoserver:1809 for WS2019 command: - powershell.exe - -Command - "Start-Sleep 2147483" imagePullPolicy: IfNotPresent nodeSelector: kubernetes.io/os: windows kubernetes.io/hostname: AKSWINDOWSNODENAME tolerations: - effect: NoSchedule key: node.kubernetes.io/unschedulable operator: Exists - effect: NoSchedule key: node.kubernetes.io/network-unavailable operator: Exists - effect: NoExecute key: node.kubernetes.io/unreachable operator: Existsشغل
kubectl apply -f hostprocess.yamlلنشر Windows HPC في العقدة Windows المحددة.استخدم .
يمكنك تشغيل أي أوامر PowerShell داخل حاوية HPC للوصول إلى عقدة Windows.
إشعار
تحتاج إلى تبديل المجلد الجذري إلى C:\ داخل حاوية HPC للوصول إلى الملفات في عقدة Windows.
SSH with Azure Bastion
إذا لم يكن عقدة البروكسي الخاصة بك في لينكس متاحا، فإن استخدام Azure Bastion كبروكسي هو بديل. تتطلب هذه الطريقة إعداد مضيف Azure Bastion للشبكة الافتراضية التي يقع فيها العنقود. راجع Connect with Azure Bastion لمزيد من التفاصيل.
SSH مع عناوين IP الخاصة من الشبكة الافتراضية للعنقود
للراحة، يتم عرض عقد AKS على الشبكة الظاهرية لنظام المجموعة من خلال عناوين IP الخاصة. ومع ذلك، تحتاج إلى أن تكون في الشبكة الظاهرية لنظام المجموعة إلى SSH في العقدة.
إذا لم يكن لديك حق الوصول إلى واجهة برمجة تطبيقات Kubernetes، يمكنك الوصول إلى خصائص مثل من خلال AKS agent pool API ، (متوفر على إصدارات مستقرة أو أعلى) للاتصال بعقد AKS. احصل على عناوين IP خاصة باستخدام الأمر ، مع استهداف جميع الأجهزة الظاهرية في تجمع عقدة معين مع العلامة .
az aks machine list --resource-group myResourceGroup --cluster-name myAKSCluster --nodepool-name nodepool1 -o tableيظهر إخراج المثال التالي عناوين IP الداخلية لجميع العقد في تجمع العقدة:
Name Ip Family --------------------------------- ----------- ----------- aks-nodepool1-33555069-vmss000000 10.224.0.5 IPv4 aks-nodepool1-33555069-vmss000001 10.224.0.6 IPv4 aks-nodepool1-33555069-vmss000002 10.224.0.4 IPv4لاستهداف عقدة معينة داخل تجمع العقدة، استخدم العلامة :
az aks machine show --cluster-name myAKScluster --nodepool-name nodepool1 -g myResourceGroup --machine-name aks-nodepool1-33555069-vmss000000 -o tableيظهر المثال التالي عنوان IP الداخلي للعقدة المحددة:
Name Ip Family --------------------------------- ----------- ----------- aks-nodepool1-33555069-vmss000000 10.224.0.5 IPv4SSH إلى العقدة باستخدام عنوان IP الخاص الذي حصلت عليه في الخطوة السابقة. تنطبق هذه الخطوة فقط على عقد لينكس.
ssh -i /path/to/private_key.pem azureuser@10.224.0.33
الخطوات التالية
إذا كنت بحاجة إلى المزيد من بيانات استكشاف الأخطاء وإصلاحها، يمكنك عرض سجلات kubelet أو عرض سجلات وحدة التحكم Kubernetes.
للتعرف على إدارة مفاتيح SSH، راجع إدارة تكوين SSH.