استكشاف مشكلات النظام الأساسي لمجموعات Kubernetes الممكنة في Azure Arc وإصلاحها

يوفر هذا المستند أدلة استكشاف الأخطاء وإصلاحها للمشكلات المتعلقة باتصال Kubernetes الذي يدعم Azure Arc والأذونات والوكلاء. كما يوفر أدلة استكشاف الأخطاء وإصلاحها ل Azure GitOps، والتي يمكن استخدامها إما في مجموعات Kubernetes الممكنة في Azure Arc أو مجموعات خدمة Azure Kubernetes (AKS).

للمساعدة في استكشاف المشكلات المتعلقة بالملحقات وإصلاحها، مثل GitOps (Flux v2)، وAzure Monitor Container Insights، وOpen Service Mesh، راجع استكشاف مشكلات الملحقات لمجموعات Kubernetes التي تدعم Azure Arc وإصلاحها.

Azure CLI

قبل استخدام az connectedk8s أو az k8s-configuration أوامر CLI، تأكد من تعيين Azure CLI للعمل مقابل اشتراك Azure الصحيح.

az account set --subscription 'subscriptionId'
az account show

عوامل Azure Arc

يتم نشر جميع عوامل Kubernetes التي تدعم Azure Arc كوحدات في azure-arc مساحة الاسم. يجب تشغيل جميع الحجيرات واجتياز فحوصات السلامة الخاصة بها.

أولا، تحقق من إصدار Azure Arc Helm Chart:

$ helm --namespace default status azure-arc
NAME: azure-arc
LAST DEPLOYED: Fri Apr  3 11:13:10 2020
NAMESPACE: default
STATUS: deployed
REVISION: 5
TEST SUITE: None

إذا لم يتم العثور على إصدار Helm Chart أو فقدانه، فحاول توصيل نظام المجموعة ب Azure Arc مرة أخرى.

إذا كان إصدار Helm Chart موجودا مع STATUS: deployed، فتحقق من حالة العوامل باستخدام kubectl:

$ kubectl -n azure-arc get deployments,pods
NAME                                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/cluster-metadata-operator    1/1     1            1           3d19h
deployment.apps/clusterconnect-agent         1/1     1            1           3d19h
deployment.apps/clusteridentityoperator      1/1     1            1           3d19h
deployment.apps/config-agent                 1/1     1            1           3d19h
deployment.apps/controller-manager           1/1     1            1           3d19h
deployment.apps/extension-events-collector   1/1     1            1           3d19h
deployment.apps/extension-manager            1/1     1            1           3d19h
deployment.apps/flux-logs-agent              1/1     1            1           3d19h
deployment.apps/kube-aad-proxy               1/1     1            1           3d19h
deployment.apps/metrics-agent                1/1     1            1           3d19h
deployment.apps/resource-sync-agent          1/1     1            1           3d19h

NAME                                              READY   STATUS    RESTARTS        AGE
pod/cluster-metadata-operator-74747b975-9phtz     2/2     Running   0               3d19h
pod/clusterconnect-agent-cf4c7849c-88fmf          3/3     Running   0               3d19h
pod/clusteridentityoperator-79bdfd945f-pt2rv      2/2     Running   0               3d19h
pod/config-agent-67bcb94b7c-d67t8                 1/2     Running   0               3d19h
pod/controller-manager-559dd48b64-v6rmk           2/2     Running   0               3d19h
pod/extension-events-collector-85f4fbff69-55zmt   2/2     Running   0               3d19h
pod/extension-manager-7c7668446b-69gps            3/3     Running   0               3d19h
pod/flux-logs-agent-fc7c6c959-vgqvm               1/1     Running   0               3d19h
pod/kube-aad-proxy-84d668c44b-j457m               2/2     Running   0               3d19h
pod/metrics-agent-58fb8554df-5ll67                2/2     Running   0               3d19h
pod/resource-sync-agent-dbf5db848-c9lg8           2/2     Running   0               3d19h

يجب أن تظهر STATUS جميع القرون كما هو الحال Running مع العمود 3/3 أو 2/2 أسفله READY . إحضار السجلات ووصف الحجيرات التي ترجع Error أو CrashLoopBackOff. إذا كانت أي pods عالقة في Pending الحالة، فقد تكون هناك موارد غير كافية على عقد نظام المجموعة. يمكن أن يؤدي توسيع نطاق نظام المجموعة إلى نقل هذه القرون إلى Running الحالة.

فشل توفير الموارد/خطأ انتهاء مهلة الخدمة

إذا رأيت هذه الأخطاء، فتحقق من حالة Azure لمعرفة ما إذا كانت هناك أي أحداث نشطة تؤثر على حالة خدمة Kubernetes التي تدعم Azure Arc. إذا كان الأمر كذلك، فانتظر حتى يتم حل حدث الخدمة، ثم حاول الإلحاق مرة أخرى بعد حذف مورد نظام المجموعة المتصل الموجود. إذا لم تكن هناك أحداث خدمة، واستمرت في مواجهة المشكلات أثناء الإعداد، فافتح تذكرة دعم حتى نتمكن من التحقيق في المشكلة.

خطأ في المطالبات الزائدة

إذا تلقيت مطالبة زائدة، فتأكد من أن كيان الخدمة الخاص بك ليس جزءا من أكثر من 200 مجموعة من مجموعات Microsoft Entra. إذا كان الأمر كذلك، يجب إنشاء كيان خدمة آخر لا ينتمي إلى أكثر من 200 مجموعة واستخدامه، أو إزالة كيان الخدمة الأصلي من بعض مجموعاته والمحاولة مرة أخرى.

قد تحدث مطالبة زائدة أيضا إذا قمت بتكوين بيئة وكيل صادر دون السماح بنقطة https://<region>.obo.arc.azure.com:8084/ النهاية لنسبة استخدام الشبكة الصادرة.

إذا لم ينطبق أي منهما، فافتح طلب دعم حتى نتمكن من النظر في المشكلة.

مشكلات عند توصيل مجموعات Kubernetes ب Azure Arc

يتطلب الاتصال المجموعات إلى Azure Arc الوصول إلى اشتراك Azure والوصول cluster-admin إلى مجموعة مستهدفة. إذا لم تتمكن من الوصول إلى نظام المجموعة، أو إذا كانت لديك أذونات غير كافية، فسيفشل توصيل نظام المجموعة ب Azure Arc. تأكد من استيفاء جميع المتطلبات الأساسية لتوصيل نظام مجموعة.

تلميح

للحصول على دليل مرئي لاستكشاف مشكلات الاتصال وإصلاحها، راجع تشخيص مشكلات الاتصال لمجموعات Kubernetes الممكنة بواسطة Arc.

مشكلات حل DNS

تفضل بزيارة تصحيح أخطاء حل DNS للمساعدة في حل المشكلات المتعلقة بحل DNS على نظام المجموعة.

مشكلات اتصال الشبكة الصادرة

قد تنشأ مشكلات في اتصال الشبكة الصادرة من نظام المجموعة لأسباب مختلفة. تأكد أولا من استيفاء جميع متطلبات الشبكة.

إذا واجهت مشكلات في الاتصال، وكانت مجموعتك خلف خادم وكيل صادر، فتأكد من تمرير معلمات الوكيل أثناء إعداد نظام المجموعة الخاص بك ومن تكوين الوكيل بشكل صحيح. لمزيد من المعلومات، راجع الاتصال باستخدام خادم وكيل صادر.

قد ترى خطأ مشابها للآتي:

An exception has occurred while trying to execute the cluster diagnostic checks in the cluster. Exception: Unable to pull cluster-diagnostic-checks helm chart from the registry 'mcr.microsoft.com/azurearck8s/helmchart/stable/clusterdiagnosticchecks:0.1.2': Error: failed to do request: Head "https://mcr.microsoft.com/v2/azurearck8s/helmchart/stable/clusterdiagnosticchecks/manifests/0.1.2": dial tcp xx.xx.xx.219:443: i/o timeout

يحدث هذا الخطأ عند https://k8connecthelm.azureedge.net حظر نقطة النهاية. تأكد من أن شبكتك تسمح بالاتصال بنقطة النهاية هذه وتلبي جميع متطلبات الشبكات الأخرى.

تعذر استرداد شهادة MSI

عادة ما تكون مشكلات استرداد شهادة MSI بسبب مشكلات في الشبكة. تحقق للتأكد من استيفاء جميع متطلبات الشبكة، ثم حاول مرة أخرى.

أذونات نظام المجموعة غير كافية

إذا لم يكن لملف kubeconfig المتوفر أذونات كافية لتثبيت عوامل Azure Arc، فإن الأمر Azure CLI يرجع خطأ: Error: list: failed to list: secrets is forbidden: User "myuser" cannot list resource "secrets" in API group "" at the cluster scope

لحل هذه المشكلة، تأكد من أن المستخدم الذي يربط نظام المجموعة ب Azure Arc لديه cluster-admin الدور المعين.

تعذر توصيل مجموعة OpenShift ب Azure Arc

إذا كان az connectedk8s connect التوقيت خارج وفشل عند توصيل مجموعة OpenShift ب Azure Arc:

  1. تأكد من أن مجموعة OpenShift تفي بمتطلبات الإصدار: 4.5.41+ أو 4.6.35+ أو 4.7.18+.

  2. قبل تشغيل az connectedk8s connnect، قم بتشغيل هذا الأمر على نظام المجموعة:

    oc adm policy add-scc-to-user privileged system:serviceaccount:azure-arc:azure-arc-kube-aad-proxy-sa
    

مهلات التثبيت

يتطلب الاتصال مجموعة Kubernetes إلى Kubernetes التي تدعم Azure Arc تثبيت عوامل Azure Arc على نظام المجموعة. إذا كان نظام المجموعة يعمل عبر اتصال إنترنت بطيء، فقد يستغرق سحب صورة الحاوية للوكلاء وقتا أطول من مهلات Azure CLI.

خطأ مهلة Helm

قد ترى الخطأ Unable to install helm release: Error: UPGRADE Failed: time out waiting for the condition. ولحل هذه المشكلة، جرّب الخطوات التالية:

  1. شغّل الأمر التالي:

    kubectl get pods -n azure-arc
    
  2. تحقق مما إذا كانت clusterconnect-agent القرون أو config-agent تظهر crashloopbackoff، أو إذا لم تكن جميع الحاويات قيد التشغيل:

    NAME                                        READY   STATUS             RESTARTS   AGE
    cluster-metadata-operator-664bc5f4d-chgkl   2/2     Running            0          4m14s
    clusterconnect-agent-7cb8b565c7-wklsh       2/3     CrashLoopBackOff   0          1m15s
    clusteridentityoperator-76d645d8bf-5qx5c    2/2     Running            0          4m15s
    config-agent-65d5df564f-lffqm               1/2     CrashLoopBackOff   0          1m14s
    
  3. azure-identity-certificate إذا لم يكن موجودا، لم يتم تثبيت الهوية المدارة المعينة من قبل النظام.

    kubectl get secret -n azure-arc -o yaml | grep name:
    
    name: azure-identity-certificate
    

    لحل هذه المشكلة، حاول حذف نشر Arc عن طريق تشغيل az connectedk8s delete الأمر وإعادة تثبيته. إذا استمرت المشكلة في الحدوث، فقد تكون مشكلة في إعدادات الوكيل. في هذه الحالة، حاول توصيل نظام المجموعة الخاص بك ب Azure Arc عبر وكيل لتوصيل مجموعتك ب Arc عبر وكيل. تحقق أيضا من استيفاء جميع المتطلبات الأساسية للشبكة .

  4. clusterconnect-agent إذا كانت و config-agent pods قيد التشغيل، ولكن الكبسولة kube-aad-proxy مفقودة، فتحقق من نهج أمان pod. يستخدم azure-arc-kube-aad-proxy-sa هذا الجراب حساب الخدمة، الذي لا يملك أذونات المسؤول ولكنه يتطلب الإذن لتحميل مسار المضيف.

  5. إذا كانت الحاوية kube-aad-proxy عالقة في ContainerCreating الحالة، فتحقق مما إذا كان قد تم تنزيل شهادة kube-aad-proxy على نظام المجموعة.

    kubectl get secret -n azure-arc -o yaml | grep name:
    
    name: kube-aad-proxy-certificate
    

    إذا كانت الشهادة مفقودة، فاحذف النشر وحاول الإلحاق مرة أخرى، باستخدام اسم مختلف للمجموعة. إذا استمرت المشكلة، افتح طلب دعم.

خطأ في الوحدة النمطية CryptoHash

عند محاولة إلحاق مجموعات Kubernetes بالنظام الأساسي Azure Arc، قد ترجع البيئة المحلية (على سبيل المثال، وحدة تحكم العميل) رسالة الخطأ التالية:

Cannot load native module 'Crypto.Hash._MD5'

في بعض الأحيان، تفشل الوحدات التابعة في التنزيل بنجاح عند إضافة الملحقات connectedk8s ومن k8s-configuration خلال Azure CLI أو Azure PowerShell. لإصلاح هذه المشكلة، قم بإزالة الملحقات في البيئة المحلية ثم إضافتها يدويا.

لإزالة الملحقات، استخدم:

az extension remove --name connectedk8s
az extension remove --name k8s-configuration

لإضافة الملحقات، استخدم:

az extension add --name connectedk8s
az extension add --name k8s-configuration

مشكلات اتصال نظام المجموعة

إذا كان نظام المجموعة خلف وكيل أو جدار حماية صادر، فتحقق من تمكين اتصالات websocket ل *.servicebus.windows.net، وهو أمر مطلوب خصيصا لميزة الاتصال نظام المجموعة. بالإضافة إلى ذلك، تأكد من استخدام أحدث إصدار من connectedk8s ملحق Azure CLI إذا كنت تواجه مشكلات في استخدام اتصال نظام المجموعة.

clusterconnect-agent إذا كانت pods و kube-aad-proxy مفقودتين، فمن المحتمل أن يتم تعطيل ميزة اتصال نظام المجموعة على نظام المجموعة. إذا كان الأمر كذلك، az connectedk8s proxy سيفشل في إنشاء جلسة عمل مع نظام المجموعة، وقد ترى قراءة خطأ Cannot connect to the hybrid connection because no agent is connected in the target arc resource.

لحل هذا الخطأ، قم بتمكين ميزة اتصال نظام المجموعة على نظام المجموعة:

az connectedk8s enable-features --features cluster-connect -n $CLUSTER_NAME -g $RESOURCE_GROUP

لمزيد من المعلومات، راجع استخدام اتصال نظام المجموعة للاتصال بأمان بمجموعة Kubernetes الممكنة في Azure Arc.

تمكين المواقع المخصصة باستخدام كيان الخدمة

عند توصيل نظام المجموعة الخاص بك ب Azure Arc أو تمكين مواقع مخصصة على مجموعة موجودة، قد ترى التحذير التالي:

Unable to fetch oid of 'custom-locations' app. Proceeding without enabling the feature. Insufficient privileges to complete the operation.

يحدث هذا التحذير عند استخدام كيان خدمة لتسجيل الدخول إلى Azure، ولا يملك كيان الخدمة الأذونات اللازمة. لتجنب هذا الخطأ، اتبع الخطوات التالية:

  1. سجل الدخول إلى Azure CLI باستخدام حساب المستخدم الخاص بك. استرداد معرف الكائن لتطبيق Microsoft Entra المستخدم بواسطة خدمة Azure Arc:

    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query objectId -o tsv
    
  2. سجل الدخول إلى Azure CLI باستخدام كيان الخدمة. <objectId> استخدم القيمة من الخطوة السابقة لتمكين المواقع المخصصة على نظام المجموعة:

    • لتمكين المواقع المخصصة عند توصيل نظام المجموعة ب Arc، قم بتشغيل az connectedk8s connect -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId>
    • لتمكين المواقع المخصصة على مجموعة Kubernetes الحالية التي تدعم Azure Arc، قم بتشغيل az connectedk8s enable-features -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId> --features cluster-connect custom-locations

الخطوات التالية