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

يوفر هذا المستند تلميحات استكشاف الأخطاء وإصلاحها للمشكلات الشائعة المتعلقة بملحقات نظام المجموعة، مثل GitOps (Flux v2) وOpen Service Mesh.

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

GitOps (Flux v2)

إشعار

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

للمساعدة العامة في استكشاف المشكلات المتعلقة بالموارد fluxConfigurations وإصلاحها، قم بتشغيل أوامر Azure CLI هذه باستخدام المعلمة --debug المحددة:

az provider show -n Microsoft.KubernetesConfiguration --debug
az k8s-configuration flux create <parameters> --debug

أخطاء Webhook/dry run

إذا رأيت فشل Flux في التوفيق مع خطأ مثل dry-run failed, error: admission webhook "<webhook>" does not support dry run، يمكنك حل المشكلة عن طريق العثور على ValidatingWebhookConfiguration أو MutatingWebhookConfiguration وتعيين sideEffects إلى None أو NoneOnDryRun:

لمزيد من المعلومات، راجع كيف أعمل حل webhook does not support dry run الأخطاء؟

أخطاء في تثبيت الملحق microsoft.flux

يقوم microsoft.flux الملحق بتثبيت وحدات تحكم Flux وعوامل Azure GitOps في مجموعات Kubernetes أو Azure Kubernetes Service (AKS) الممكنة في Azure Arc. إذا لم يكن الملحق مثبتا بالفعل في نظام مجموعة وقمت بإنشاء مورد تكوين GitOps لهذه المجموعة، يتم تثبيت الملحق تلقائيا.

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

بالنسبة إلى نظام مجموعة AKS، تأكد من تمكين علامة الميزة Microsoft.ContainerService/AKS-ExtensionManager للاشتراك.

az feature register --namespace Microsoft.ContainerService --name AKS-ExtensionManager

بعد ذلك، قم بتشغيل هذا الأمر لتحديد ما إذا كانت هناك مشاكل أخرى. قم بتعيين معلمة نوع نظام المجموعة (-t) إلى connectedClusters لنظام مجموعة ممكن بواسطة Arc أو managedClusters لمجموعة AKS. اسم microsoft.flux الملحق هو "flux" إذا تم تثبيت الملحق تلقائيا أثناء إنشاء تكوين GitOps. ابحث في statuses العنصر عن معلومات.

az k8s-extension show -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -n flux -t <connectedClusters or managedClusters>

يمكن أن تساعدك النتائج المعروضة في تحديد الخطأ الذي حدث وكيفية إصلاحه. تتضمن إجراءات المعالجة المحتملة ما يلي:

  • فرض حذف الملحق عن طريق تشغيل az k8s-extension delete --force -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -n flux -t <managedClusters OR connectedClusters>
  • إلغاء تثبيت إصدار Helm عن طريق تشغيل helm uninstall flux -n flux-system
  • flux-system حذف مساحة الاسم من نظام المجموعة عن طريق تشغيلkubectl delete namespaces flux-system

بعد ذلك، يمكنك إما إعادة إنشاء تكوين flux، والذي يقوم microsoft.flux بتثبيت الملحق تلقائيا، أو يمكنك إعادة تثبيت ملحق flux يدويا.

أخطاء في تثبيت الملحق microsoft.flux في نظام مجموعة مع تمكين هوية Microsoft Entra Pod

إذا حاولت تثبيت ملحق Flux في نظام مجموعة تم تمكين Microsoft Entra Pod Identity عليه، فقد يحدث خطأ في جراب عامل الملحق:

{"Message":"2021/12/02 10:24:56 Error: in getting auth header : error {adal: Refresh request failed. Status Code = '404'. Response body: no azure identity found for request clientID <REDACTED>\n}","LogType":"ConfigAgentTrace","LogLevel":"Information","Environment":"prod","Role":"ClusterConfigAgent","Location":"westeurope","ArmId":"/subscriptions/<REDACTED>/resourceGroups/<REDACTED>/providers/Microsoft.Kubernetes/managedclusters/<REDACTED>","CorrelationId":"","AgentName":"FluxConfigAgent","AgentVersion":"0.4.2","AgentTimestamp":"2021/12/02 10:24:56"}

ترجع حالة الملحق أيضا ك Failed.

"{\"status\":\"Failed\",\"error\":{\"code\":\"ResourceOperationFailure\",\"message\":\"The resource operation completed with terminal provisioning state 'Failed'.\",\"details\":[{\"code\":\"ExtensionCreationFailed\",\"message\":\" error: Unable to get the status from the local CRD with the error : {Error : Retry for given duration didn't get any results with err {status not populated}}\"}]}}",

في هذه الحالة، يحاول جراب عامل الملحق الحصول على الرمز المميز الخاص به من IMDS على نظام المجموعة. ولكن يتم اعتراض طلب الرمز المميز بواسطة هوية الجراب). لإصلاح هذه المشكلة، قم بالترقية إلى أحدث إصدار من الملحق microsoft.flux .

مشكلات في هوية kubelet عند تثبيت الملحق microsoft.flux في نظام مجموعة AKS

باستخدام مجموعات AKs، أحد خيارات المصادقة هو هوية kubelet باستخدام هوية مدارة يعينها المستخدم. يمكن أن يقلل استخدام هوية kubelet من النفقات التشغيلية ويزيد من الأمان عند الاتصال بموارد Azure مثل Azure Container Registry.

للسماح ل Flux باستخدام هوية kubelet، أضف المعلمة --config useKubeletIdentity=true عند تثبيت ملحق Flux.

az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config useKubeletIdentity=true

ضمان استيفاء متطلبات الذاكرة والمعالج لتثبيت microsoft.flux الملحق

تتطلب وحدات التحكم المثبتة في مجموعة Kubernetes مع microsoft.flux الملحق موارد وحدة المعالجة المركزية والذاكرة لجدولتها بشكل صحيح على عقد نظام مجموعة Kubernetes. تأكد من أن مجموعتك قادرة على تلبية الحد الأدنى من الذاكرة وموارد وحدة المعالجة المركزية التي قد تكون مطلوبة. لاحظ أيضا الحدود القصوى لمتطلبات موارد وحدة المعالجة المركزية والذاكرة المحتملة الموضحة هنا.

اسم الحاوية الحد الأدنى لوحدة المعالجة المركزية الحد الأدنى للذاكرة الحد الأقصى لوحدة المعالجة المركزية الحد الأقصى للذاكرة
عامل fluxconfig 5 م 30 ميبي بايت 50 م 150 ميبي بايت
fluxconfig-controller 5 م 30 ميبي بايت 100 متر 150 ميبي بايت
fluent-bit 5 م 30 ميبي بايت 20 متر 150 ميبي بايت
وحدة تحكم helm 100 متر 64 ميبي بايت 1000 متر 1 جيجابت
وحدة تحكم المصدر 50 م 64 ميبي بايت 1000 متر 1 جيجابت
kustomize-controller 100 متر 64 ميبي بايت 1000 متر 1 جيجابت
وحدة تحكم الإعلام 100 متر 64 ميبي بايت 1000 متر 1 جيجابت
وحدة تحكم أتمتة الصور 100 متر 64 ميبي بايت 1000 متر 1 جيجابت
وحدة تحكم عاكس الصورة 100 متر 64 ميبي بايت 1000 متر 1 جيجابت

إذا قمت بتمكين نهج Azure Gatekeeper مخصص أو مضمن يحد من موارد الحاويات على مجموعات Kubernetes، مثل Kubernetes cluster containers CPU and memory resource limits should not exceed the specified limits، فتأكد من أن حدود الموارد على النهج أكبر من الحدود الموضحة هنا، أو أن flux-system مساحة الاسم هي جزء من excludedNamespaces المعلمة في تعيين النهج.

Flux v1

إشعار

نوصي بالترحيل إلى Flux v2 في أقرب وقت ممكن. سينتهي دعم موارد تكوين نظام المجموعة المستندة إلى Flux v1 التي تم إنشاؤها قبل 1 يناير 2024 في 24 مايو 2025. بدءا من 1 يناير 2024، لن تتمكن من إنشاء موارد تكوين نظام المجموعة الجديدة المستندة إلى Flux v1.

للمساعدة في استكشاف المشكلات المتعلقة بالمورد sourceControlConfigurations وإصلاحها في Flux v1، قم بتشغيل أوامر Azure CLI هذه مع --debug تحديد المعلمة:

az provider show -n Microsoft.KubernetesConfiguration --debug
az k8s-configuration create <parameters> --debug

Azure Monitor Container Insights

يوفر هذا القسم المساعدة في استكشاف المشكلات وإصلاحها باستخدام Azure Monitor Container Insights لمجموعات Kubernetes التي تدعم Azure Arc.

تمكين الوضع المتميز لمجموعة Kubernetes المتعارف عليها

يتطلب Azure Monitor Container Insights تشغيل DaemonSet الخاص به في الوضع المميز. لإعداد مجموعة Kubernetes Canonical Charmed بنجاح للمراقبة، قم بتشغيل الأمر التالي:

juju config kubernetes-worker allow-privileged=true

تعذر تثبيت Azure Monitor Agent (AMA) على Oracle Linux 9.x

عند محاولة تثبيت عامل Azure Monitor (AMA) على نظام مجموعة Oracle Linux (RHEL) 9.x Kubernetes، قد لا تعمل حاويات AMA وAMA-RS بشكل صحيح بسبب الحاوية addon-token-adapter في الحاوية. مع هذا الخطأ، عند التحقق من ama-logs-rs سجلات الجراب، addon-token-adapter containerسترى الإخراج مشابها لما يلي:

Command: kubectl -n kube-system logs ama-logs-rs-xxxxxxxxxx-xxxxx -c addon-token-adapter
 
Error displayed: error modifying iptable rules: error adding rules to custom chain: running [/sbin/iptables -t nat -N aad-metadata --wait]: exit status 3: modprobe: can't change directory to '/lib/modules': No such file or directory

iptables v1.8.9 (legacy): can't initialize iptables table `nat': Table does not exist (do you need to insmod?)

Perhaps iptables or your kernel needs to be upgraded.

يحدث هذا الخطأ لأن تثبيت الملحق يتطلب الوحدة النمطية iptable_nat ، ولكن لا يتم تحميل هذه الوحدة النمطية تلقائيا في توزيعات Oracle Linux (RHEL) 9.x.

لإصلاح هذه المشكلة، يجب تحميل الوحدة النمطية iptables_nat بشكل صريح على كل عقدة في نظام المجموعة، باستخدام modprobe الأمر sudo modprobe iptables_nat. بعد تسجيل الدخول إلى كل عقدة وإضافة الوحدة النمطية iptable_nat يدويا، أعد محاولة تثبيت AMA.

إشعار

لا يؤدي تنفيذ هذه الخطوة إلى استمرار الوحدة النمطية iptables_nat .

شبكة خدمة مفتوحة تم تمكين Azure Arc

يوفر هذا القسم الأوامر التي يمكنك استخدامها للتحقق من صحة واستكشاف أخطاء نشر مكونات ملحق Open Service Mesh (OSM) على نظام المجموعة الخاص بك وإصلاحها.

التحقق من توزيع وحدة تحكم OSM

kubectl get deployment -n arc-osm-system --selector app=osm-controller

إذا كانت وحدة تحكم OSM سليمة، فسترى إخراجا مشابها ل:

NAME             READY   UP-TO-DATE   AVAILABLE   AGE
osm-controller   1/1     1            1           59m

تحقق من وحدات تحكم OSM

kubectl get pods -n arc-osm-system --selector app=osm-controller

إذا كانت وحدة تحكم OSM سليمة، فسترى إخراجا مشابها ل:

NAME                            READY   STATUS    RESTARTS   AGE
osm-controller-b5bd66db-wglzl   0/1     Evicted   0          61m
osm-controller-b5bd66db-wvl9w   1/1     Running   0          31m

على الرغم من أن وحدة تحكم واحدة تم إخلاؤها في مرحلة ما، هناك وحدة تحكم أخرى هي READY 1/1 ومع Running0 عمليات إعادة التشغيل. إذا كان العمود READY أي شيء آخر غير 1/1، فإن شبكة الخدمة في حالة مقطوعة. يشير العمود READY مع 0/1 إلى تعطل حاوية وحدة التحكم.

استخدم الأمر التالي لفحص سجلات وحدة التحكم:

kubectl logs -n arc-osm-system -l app=osm-controller

يشير العمود READY الذي يحتوي على رقم أعلى من 1 بعد / إلى وجود علامات جانبية مثبتة. لن تعمل وحدة تحكم OSM بشكل عام بشكل صحيح مع العلامات الجانبية المرفقة.

التحقق من خدمة وحدة تحكم OSM

kubectl get service -n arc-osm-system osm-controller

إذا كانت وحدة تحكم OSM سليمة، فسترى الإخراج التالي:

NAME             TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)              AGE
osm-controller   ClusterIP   10.0.31.254   <none>        15128/TCP,9092/TCP   67m

إشعار

CLUSTER-IP سيكون مختلفا. يجب أن تتطابق الخدمة NAME مع PORT(S) ما هو موضح هنا.

التحقق من نقاط نهاية وحدة تحكم OSM

kubectl get endpoints -n arc-osm-system osm-controller

إذا كانت وحدة تحكم OSM سليمة، فسترى إخراجا مشابها ل:

NAME             ENDPOINTS                              AGE
osm-controller   10.240.1.115:9092,10.240.1.115:15128   69m

إذا كان نظام المجموعة لا ENDPOINTS ل osm-controller، فإن مستوى التحكم غير صحي. تعني هذه الحالة غير السليمة أن وحدة التحكم تعطل أو أنه لم يتم توزيعها بشكل صحيح.

التحقق من توزيع محاقن OSM

kubectl get deployments -n arc-osm-system osm-injector

إذا كان حاقن OSM سليما، فسترى إخراجا مشابها ل:

NAME           READY   UP-TO-DATE   AVAILABLE   AGE
osm-injector   1/1     1            1           73m

تحقق من جراب حاقن OSM

kubectl get pod -n arc-osm-system --selector app=osm-injector

إذا كان حاقن OSM سليما، فسترى إخراجا مشابها ل:

NAME                            READY   STATUS    RESTARTS   AGE
osm-injector-5986c57765-vlsdk   1/1     Running   0          73m

READY يجب أن يكون 1/1العمود . تشير أي قيمة أخرى إلى جراب محاقن OSM غير سليم.

التحقق من خدمة إدخال OSM

kubectl get service -n arc-osm-system osm-injector

إذا كان حاقن OSM سليما، فسترى إخراجا مشابها ل:

NAME           TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
osm-injector   ClusterIP   10.0.39.54   <none>        9090/TCP   75m

تأكد من أن عنوان IP المدرج للخدمة osm-injector هو 9090. يجب ألا يكون EXTERNAL-IPهناك .

التحقق من نقاط نهاية محاقن OSM

kubectl get endpoints -n arc-osm-system osm-injector

إذا كان حاقن OSM سليما، فسترى إخراجا مشابها ل:

NAME           ENDPOINTS           AGE
osm-injector   10.240.1.172:9090   75m

لكي يعمل OSM، يجب أن تكون هناك نقطة نهاية واحدة على الأقل ل osm-injector. سيختلف عنوان IP لنقاط نهاية حاقن OSM، ولكن يجب أن يكون المنفذ 9090 هو نفسه.

التحقق من صحة الإخطارات على الويب وتحورها

kubectl get ValidatingWebhookConfiguration --selector app=osm-controller

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

NAME                     WEBHOOKS   AGE
osm-validator-mesh-osm   1          81m
kubectl get MutatingWebhookConfiguration --selector app=osm-injector

إذا كان الإخطار على الويب الخاص بالتحول سليما، فسترى إخراجا مشابها ل:

NAME                  WEBHOOKS   AGE
arc-osm-webhook-osm   1          102m

تحقق من الخدمة وحزمة CA من إخطار على الويب للتحقق باستخدام هذا الأمر:

kubectl get ValidatingWebhookConfiguration osm-validator-mesh-osm -o json | jq '.webhooks[0].clientConfig.service'

سيكون لتكوين التحقق من صحة خطاف الويب الذي تم تكوينه بشكل جيد إخراج مشابه ل:

{
  "name": "osm-config-validator",
  "namespace": "arc-osm-system",
  "path": "/validate",
  "port": 9093
}

تحقق من الخدمة وحزمة CA لخطاف الويب المتغير باستخدام الأمر التالي:

kubectl get MutatingWebhookConfiguration arc-osm-webhook-osm -o json | jq '.webhooks[0].clientConfig.service'

سيكون لتكوين إخطار على الويب المتحور الذي تم تكوينه بشكل جيد إخراج مشابه ل:

{
  "name": "osm-injector",
  "namespace": "arc-osm-system",
  "path": "/mutate-pod-creation",
  "port": 9090
}

تحقق مما إذا كانت وحدة تحكم OSM قد أعطت خطاف الويب التحقق من الصحة (أو الطفرة) مجموعة CA باستخدام الأمر التالي:

kubectl get ValidatingWebhookConfiguration osm-validator-mesh-osm -o json | jq -r '.webhooks[0].clientConfig.caBundle' | wc -c
kubectl get MutatingWebhookConfiguration arc-osm-webhook-osm -o json | jq -r '.webhooks[0].clientConfig.caBundle' | wc -c

مثال على الإخراج:

1845

يشير الرقم في الإخراج إلى عدد وحدات البايت أو حجم حزمة CA. إذا كان الإخراج فارغا أو 0 أو رقما أقل من 1000، فلن يتم توفير حزمة CA بشكل صحيح. بدون حزمة CA الصحيحة، ValidatingWebhook يطرح خطأ.

تحقق من osm-mesh-config المورد

تحقق من وجود المورد:

kubectl get meshconfig osm-mesh-config -n arc-osm-system

تحقق من محتوى OSM MeshConfig:

kubectl get meshconfig osm-mesh-config -n arc-osm-system -o yaml

يجب أن تلاحظ مخرجات مشابهة لـ:

apiVersion: config.openservicemesh.io/v1alpha1
kind: MeshConfig
metadata:
  creationTimestamp: "0000-00-00A00:00:00A"
  generation: 1
  name: osm-mesh-config
  namespace: arc-osm-system
  resourceVersion: "2494"
  uid: 6c4d67f3-c241-4aeb-bf4f-b029b08faa31
spec:
  certificate:
    certKeyBitSize: 2048
    serviceCertValidityDuration: 24h
  featureFlags:
    enableAsyncProxyServiceMapping: false
    enableEgressPolicy: true
    enableEnvoyActiveHealthChecks: false
    enableIngressBackendPolicy: true
    enableMulticlusterMode: false
    enableRetryPolicy: false
    enableSnapshotCacheMode: false
    enableWASMStats: true
  observability:
    enableDebugServer: false
    osmLogLevel: info
    tracing:
      enable: false
  sidecar:
    configResyncInterval: 0s
    enablePrivilegedInitContainer: false
    logLevel: error
    resources: {}
  traffic:
    enableEgress: false
    enablePermissiveTrafficPolicyMode: true
    inboundExternalAuthorization:
      enable: false
      failureModeAllow: false
      statPrefix: inboundExtAuthz
      timeout: 1s
    inboundPortExclusionList: []
    outboundIPRangeExclusionList: []
    outboundPortExclusionList: []
kind: List
metadata:
  resourceVersion: ""
  selfLink: ""

osm-mesh-config قيم الموارد:

المفتاح النوع القيمة الافتراضية أمثلة أوامر Kubectl Patch
spec.traffic.enableEgress منطقي false kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"enableEgress":false}}}' --type=merge
spec.traffic.enablePermissiveTrafficPolicyMode منطقي true kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"enablePermissiveTrafficPolicyMode":true}}}' --type=merge
spec.traffic.outboundPortExclusionList صفيف [] kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"outboundPortExclusionList":[6379,8080]}}}' --type=merge
spec.traffic.outboundIPRangeExclusionList صفيف [] kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"outboundIPRangeExclusionList":["10.0.0.0/32","1.1.1.1/24"]}}}' --type=merge
spec.traffic.inboundPortExclusionList صفيف [] kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"inboundPortExclusionList":[6379,8080]}}}' --type=merge
spec.certificate.serviceCertValidityDuration سلسلة "24h" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"certificate":{"serviceCertValidityDuration":"24h"}}}' --type=merge
spec.observability.enableDebugServer منطقي false kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"observability":{"enableDebugServer":false}}}' --type=merge
spec.observability.osmLogLevel سلسلة "info" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"observability":{"tracing":{"osmLogLevel": "info"}}}}' --type=merge
spec.observability.tracing.enable منطقي false kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"observability":{"tracing":{"enable":true}}}}' --type=merge
spec.sidecar.enablePrivilegedInitContainer منطقي false kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"sidecar":{"enablePrivilegedInitContainer":true}}}' --type=merge
spec.sidecar.logLevel سلسلة "error" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"sidecar":{"logLevel":"error"}}}' --type=merge
spec.featureFlags.enableWASMStats منطقي "true" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableWASMStats":"true"}}}' --type=merge
spec.featureFlags.enableEgressPolicy منطقي "true" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableEgressPolicy":"true"}}}' --type=merge
spec.featureFlags.enableMulticlusterMode منطقي "false" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableMulticlusterMode":"false"}}}' --type=merge
spec.featureFlags.enableSnapshotCacheMode منطقي "false" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableSnapshotCacheMode":"false"}}}' --type=merge
spec.featureFlags.enableAsyncProxyServiceMapping منطقي "false" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableAsyncProxyServiceMapping":"false"}}}' --type=merge
spec.featureFlags.enableIngressBackendPolicy منطقي "true" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableIngressBackendPolicy":"true"}}}' --type=merge
spec.featureFlags.enableEnvoyActiveHealthChecks منطقي "false" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableEnvoyActiveHealthChecks":"false"}}}' --type=merge

التحقق من مساحات الأسماء

إشعار

لن تشارك مساحة اسم arc-osm-system أبدا في شبكة خدمة ولن يتم تصنيفها أو تعليقها بالمفتاح/القيم الموضحة هنا.

osm namespace add نستخدم الأمر لضم مساحات الأسماء إلى شبكة خدمة معينة. عندما تكون مساحة اسم Kubernetes جزءا من الشبكة، اتبع هذه الخطوات لتأكيد استيفاء المتطلبات.

عرض التعليقات التوضيحية لمساحة bookbuyerالاسم :

kubectl get namespace bookbuyer -o json | jq '.metadata.annotations'

يجب أن يظهر التعليق التوضيحي التالي:

{
  "openservicemesh.io/sidecar-injection": "enabled"
}

عرض تسميات مساحة bookbuyerالاسم :

kubectl get namespace bookbuyer -o json | jq '.metadata.labels'

يجب أن تظهر التسمية التالية:

{
  "openservicemesh.io/monitored-by": "osm"
}

إذا كنت لا تستخدم osm CLI، يمكنك أيضا إضافة هذه التعليقات التوضيحية يدويا إلى مساحات الأسماء الخاصة بك. إذا لم يتم إضافة تعليق توضيحي لمساحة الاسم باستخدام "openservicemesh.io/sidecar-injection": "enabled"، أو لم يتم تسميتها باستخدام "openservicemesh.io/monitored-by": "osm"، فلن يضيف محاقن OSM ميزة Envoy الجانبية.

إشعار

بعد osm namespace add استدعاء ، سيتم حقن القرون الجديدة فقط مع Envoy sidecar. يجب إعادة تشغيل الجرابات الموجودة باستخدام kubectl rollout restart deployment الأمر .

تحقق من SMI CRDs

تحقق مما إذا كان نظام المجموعة يحتوي على تعريفات الموارد المخصصة المطلوبة (CRDs) باستخدام الأمر التالي:

kubectl get crds

تأكد من أن CRDs تتوافق مع الإصدارات المتوفرة في فرع الإصدار. لتأكيد إصدارات CRD المستخدمة، قم بزيارة صفحة الإصدارات المدعومة من SMI وحدد الإصدار الخاص بك من القائمة المنسدلة الإصدارات.

احصل على إصدارات CRDs المثبتة باستخدام الأمر التالي:

for x in $(kubectl get crds --no-headers | awk '{print $1}' | grep 'smi-spec.io'); do
    kubectl get crd $x -o json | jq -r '(.metadata.name, "----" , .spec.versions[].name, "\n")'
done

إذا كانت CRDs مفقودة، فاستخدم الأوامر التالية لتثبيتها على نظام المجموعة. استبدل الإصدار في هذه الأوامر حسب الحاجة (على سبيل المثال، سيكون الإصدار 1.1.0 هو release-v1.1).

kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_http_route_group.yaml

kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_tcp_route.yaml

kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_traffic_access.yaml

kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_traffic_split.yaml

للاطلاع على تغييرات CRD بين الإصدارات، راجع ملاحظات إصدار OSM.

استكشاف أخطاء إدارة الشهادات وإصلاحها

للحصول على معلومات حول كيفية إصدار OSM للشهادات وإدارتها إلى وكلاء Envoy الذين يعملون على pods التطبيق، راجع موقع مستندات OSM.

ترقية Envoy

عند إنشاء جراب جديد في مساحة اسم تراقبها الوظيفة الإضافية، يقوم OSM بإدخال وكيل Envoy sidecar في ذلك الجراب. إذا كان إصدار Envoy بحاجة إلى التحديث، فاتبع الخطوات الواردة في دليل الترقية على موقع مستندات OSM.

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