استكشاف مشكلات الملحق لمجموعات 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
ومع Running
0
عمليات إعادة التشغيل. إذا كان العمود 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.
الخطوات التالية
- تعرف على المزيد حول ملحقات نظام المجموعة.
- عرض تلميحات استكشاف الأخطاء وإصلاحها العامة لمجموعات Kubernetes الممكنة بواسطة Arc.