قم بتكوين نظم مجموعات Kubernetes المختلطة باستخدام نتائج تحليلات الحاوية

توفر نتائج تحليلات الحاوية تجربة مراقبة غنية لخدمة Azure Kubernetes (AKS). توضح هذه المقالة كيفية تمكين مراقبة نظم مجموعات Kubernetes المستضافة خارج Azure وتحقيق تجربة مراقبة مماثلة.

التكوينات المدعومة

التكوينات التالية مدعومة رسميًا مع نتائج تحليلات الحاوية. إذا كان لديك إصدار مختلف من Kubernetes وإصدارات نظام التشغيل، فيرجى فتح تذكرة دعم.

  • البيئات:
    • Kubernetes المحلي.
    • OpenShift الإصدار 4 والإصدارات الأحدث، محليا أو في بيئات سحابية أخرى.
  • إصدارات Kubernetes ونُهج الدعم هي نفسها بالنسبة لإصدارات AKS المدعومة.
  • يتم دعم أوقات تشغيل الحاوية التالية: أوقات التشغيل المتوافقة مع Moby و CRI مثل CRI-O و ContainerD.
  • إصدار نظام التشغيل Linux للعقد الرئيسية والعاملة المدعومة هي Ubuntu (18.04 LTS و16.04 LTS) وRed Hat Enterprise Linux CoreOS 43.81.
  • خدمة Azure Access Control مدعومة: التحكم في الوصول المستند إلى الدور (RBAC) وغير RBAC في Kubernetes.

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

قبل البدء، تأكد من تلبية المتطلبات الأساسية التالية:

  • لديك مساحة عمل Log Analytics. تدعم نتائج الحاوية مساحة عمل Log Analytics في المناطق المدرجة في منتجات Azure حسب المنطقة. يمكنك إنشاء مساحة العمل الخاصة بك من خلال Azure Resource Manager أو PowerShell أو مدخل Microsoft Azure.

    إشعار

    تمكين مراقبة مجموعات متعددة بنفس اسم نظام المجموعة إلى نفس مساحة عمل Log Analytics غير مدعوم. يجب أن تكون أسماء نظم المجموعات فريدة.

  • أنت عضو في دور المساهم في Log Analytics لتمكين مراقبة الحاوية. لمزيدٍ من المعلومات حول كيفية التحكم في الوصول إلى مساحة عمل Log Analytics، راجع إدارة الوصول إلى مساحة العمل وبيانات السجل.

  • لعرض بيانات المراقبة، يجب أن يكون لديك دور قارئ Log Analytics في مساحة عمل Log Analytics، التي تم تكوينها باستخدام نتائج تحليلات الحاوية.

  • لديك عميل Helm لإعداد مخطط نتائج تحليلات الحاوية لمجموعة Kubernetes المحددة.

  • معلومات تكوين الخادم الوكيل وجدار الحماية التالية مطلوبة لإصدار الحاوية من وكيل Log Analytics لنظام Linux للتواصل مع Azure Monitor:

    مورد العامل منافذ
    *.ods.opinsights.azure.com منفذ 443
    *.oms.opinsights.azure.com منفذ 443
    *.dc.services.visualstudio.com منفذ 443
  • يتطلب العامل الحاوية Kubelet cAdvisor secure port: 10250 أو unsecure port :10255 أن يتم فتحه على جميع العقد في نظام المجموعة لجمع مقاييس الأداء. نوصي بتكوين secure port: 10250 على Kubelet cAdvisor إذا لم يتم تكوينه بالفعل.

  • يتطلب العامل الحاوي تحديد المتغيرات البيئية التالية على الحاوية للاتصال بخدمة Kubernetes API داخل نظام المجموعة لجمع بيانات المخزون: KUBERNETES_SERVICE_HOST و KUBERNETES_PORT_443_TCP_PORT.

هام

الحد الأدنى لإصدار العامل المدعوم لمراقبة مجموعات Kubernetes المختلطة هو ciprod10182019 أو أحدث.

تمكين المراقبة

لتمكين نتائج تحليلات الحاوية لمجموعة Kubernetes المختلطة:

  1. قم بتكوين مساحة عمل Log Analytics باستخدام حل نتائج تحليلات الحاوية.

  2. قم بتمكين مخطط Helm ورؤى الحاوية باستخدام مساحة عمل Log Analytics.

لمزيد من المعلومات حول حلول المراقبة في Azure Monitor، راجع حلول المراقبة في Azure Monitor.

إضافة حل حاويات Azure Monitor

يمكنك نشر الحل باستخدام قالب Azure Resource Manager المتوفر باستخدام Azure PowerShell cmdlet New-AzResourceGroupDeployment أو مع Azure CLI.

إذا لم تكن غير معتاد على مفهوم توزيع الموارد باستخدام قالب، راجع:

إذا اخترت استخدام Azure CLI، فستحتاج أولاً إلى تثبيت CLI واستخدامه محليًا. يجب تشغيل الإصدار 2.0.59 من Azure CLI أو إصدار أحدث. لتحديد الإصدار، قم بتشغيل az --version. إذا كنت بحاجة إلى تثبيت Azure CLI أو ترقيته، فراجع تثبيت Azure CLI.

يتضمن هذا الأسلوب قالبي JSON. يحدد قالب واحد التكوين لتمكين المراقبة. يحتوي القالب الآخر على قيم المعلمات التي تقوم بتكوينها لتحديد:

  • workspaceResourceId: معرف المورد الكامل لمساحة عمل Log Analytics.
  • workspaceRegion: المنطقة التي يتم إنشاء مساحة العمل فيها، والتي يشار إليها أيضا باسم الموقع في خصائص مساحة العمل عند عرضها من مدخل Microsoft Azure.

لتحديد معرف المورد الكامل لمساحة عمل Log Analytics المطلوبة لقيمة المعلمة workspaceResourceId في ملف containerSolutionParams.json أولا، قم بتنفيذ الخطوات التالية. ثم قم بتشغيل أمر PowerShell cmdlet أو Azure CLI لإضافة الحل.

  1. سرد جميع الاشتراكات التي لديك حق الوصول إليها باستخدام الأمر التالي:

    az account list --all -o table
    

    سيكون الإخراج مشابهًا للمثال التالي:

    Name                                  CloudName    SubscriptionId                        State    IsDefault
    ------------------------------------  -----------  ------------------------------------  -------  -----------
    Microsoft Azure                       AzureCloud   0fb60ef2-03cc-4290-b595-e71108e8f4ce  Enabled  True
    

    نسخ قيمة لـ SubscriptionId.

  2. قم بالتبديل إلى الاشتراك الذي يستضيف مساحة عمل Log Analytics باستخدام الأمر التالي:

    az account set -s <subscriptionId of the workspace>
    
  3. يعرض المثال التالي قائمة مساحات العمل في اشتراكاتك بتنسيق JSON الافتراضي:

    az resource list --resource-type Microsoft.OperationalInsights/workspaces -o json
    

    في الإخراج، ابحث عن اسم مساحة العمل. ثم انسخ معرف المورد الكامل لمساحة عمل Log Analytics هذه ضمن معرف الحقل.

  4. انسخ والصق بناء الجملة JSON التالية في الملف:

    {
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "workspaceResourceId": {
            "type": "string",
            "metadata": {
                "description": "Azure Monitor Log Analytics Workspace Resource ID"
            }
        },
        "workspaceRegion": {
            "type": "string",
            "metadata": {
                "description": "Azure Monitor Log Analytics Workspace region"
            }
        }
    },
    "resources": [
        {
            "type": "Microsoft.Resources/deployments",
            "name": "[Concat('ContainerInsights', '-',  uniqueString(parameters('workspaceResourceId')))]",
            "apiVersion": "2017-05-10",
            "subscriptionId": "[split(parameters('workspaceResourceId'),'/')[2]]",
            "resourceGroup": "[split(parameters('workspaceResourceId'),'/')[4]]",
            "properties": {
                "mode": "Incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "1.0.0.0",
                    "parameters": {},
                    "variables": {},
                    "resources": [
                        {
                            "apiVersion": "2015-11-01-preview",
                            "type": "Microsoft.OperationsManagement/solutions",
                            "location": "[parameters('workspaceRegion')]",
                            "name": "[Concat('ContainerInsights', '(', split(parameters('workspaceResourceId'),'/')[8], ')')]",
                            "properties": {
                                "workspaceResourceId": "[parameters('workspaceResourceId')]"
                            },
                            "plan": {
                                "name": "[Concat('ContainerInsights', '(', split(parameters('workspaceResourceId'),'/')[8], ')')]",
                                "product": "[Concat('OMSGallery/', 'ContainerInsights')]",
                                "promotionCode": "",
                                "publisher": "Microsoft"
                            }
                        }
                    ]
                },
                "parameters": {}
            }
         }
      ]
    }
    
  5. احفظ هذا الملف ك containerSolution.json إلى مجلد محلي.

  6. الصق بناء الجملة JSON التالي في الملف:

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "workspaceResourceId": {
          "value": "<workspaceResourceId>"
      },
      "workspaceRegion": {
        "value": "<workspaceRegion>"
      }
     }
    }
    
  7. قم بتحرير قيم workspaceResourceId باستخدام القيمة التي نسختها في الخطوة 3. بالنسبة إلى workspaceRegion، انسخ قيمة Region بعد تشغيل الأمر Azure CLI az monitor log-analytics workspace show.

  8. احفظ هذا الملف ك containerSolutionParams.json إلى مجلد محلي.

  9. أنت مستعد لنشر هذا القالب.

    • للنشر باستخدام Azure PowerShell، استخدم الأوامر التالية في المجلد الذي يحتوي على القالب:

      # configure and login to the cloud of Log Analytics workspace.Specify the corresponding cloud environment of your workspace to below command.
      Connect-AzureRmAccount -Environment <AzureCloud | AzureChinaCloud | AzureUSGovernment>
      
      # set the context of the subscription of Log Analytics workspace
      Set-AzureRmContext -SubscriptionId <subscription Id of Log Analytics workspace>
      
      # execute deployment command to add Container Insights solution to the specified Log Analytics workspace
      New-AzureRmResourceGroupDeployment -Name OnboardCluster -ResourceGroupName <resource group of Log Analytics workspace> -TemplateFile .\containerSolution.json -TemplateParameterFile .\containerSolutionParams.json
      

      قد يستغرق تغيير التكوين بضع دقائق للانتهاء. عند الانتهاء، تتضمن رسالة مشابهة للمثال التالي هذه النتيجة:

      provisioningState       : Succeeded
      
    • للنشر باستخدام Azure CLI، قم بتشغيل الأوامر التالية:

      az login
      az account set --name <AzureCloud | AzureChinaCloud | AzureUSGovernment>
      az login
      az account set --subscription "Subscription Name"
      # execute deployment command to add container insights solution to the specified Log Analytics workspace
      az deployment group create --resource-group <resource group of log analytics workspace> --name <deployment name> --template-file  ./containerSolution.json --parameters @./containerSolutionParams.json
      

      قد يستغرق تغيير التكوين بضع دقائق للانتهاء. عند الانتهاء، تتضمن رسالة مشابهة للمثال التالي هذه النتيجة:

      provisioningState       : Succeeded
      

      بعد تمكين المراقبة، قد يستغرق الأمر حوالي 15 دقيقة قبل أن تتمكن من عرض قياسات الأداء للمجموعة.

تثبيت مخطط Helm

في هذا القسم، يمكنك تثبيت العامل الحاوية ل Container insights. قبل المتابعة، حدد معرف مساحة العمل المطلوب للمعلمة amalogsagent.secret.wsid والمفتاح الأساسي المطلوب للمعلمة amalogsagent.secret.key . لتحديد هذه المعلومات، اتبع هذه الخطوات ثم قم بتشغيل الأوامر لتثبيت العامل باستخدام مخطط Helm.

  1. تشغيل الأمر التالي لتحديد معرف مساحة العمل:

    az monitor log-analytics workspace list --resource-group <resourceGroupName>

    في الإخراج، ابحث عن اسم مساحة العمل تحت اسم الحقل. ثم انسخ معرف مساحة العمل لمساحة عمل Log Analytics هذه ضمن معرف العميل للحقل.

  2. تشغيل الأمر التالي لتحديد المفتاح الأساسي لمساحة العمل:

    az monitor log-analytics workspace get-shared-keys --resource-group <resourceGroupName> --workspace-name <logAnalyticsWorkspaceName>

    في الإخراج، ابحث عن المفتاح الأساسي ضمن الحقل primarySharedKey ثم انسخ القيمة.

    إشعار

    الأوامر التالية قابلة للتطبيق فقط في الإصدار 2 من Helm. لا ينطبق استخدام المعلمة --name مع الإصدار 3 من Helm.

    إذا كانت مجموعة Kubernetes لديك تتواصل من خلال خادم وكيل، فقم بتهيئة المعلمة amalogsagent.proxy باستخدام عنوان URL للخادم الوكيل. إذا لم يتصل نظام المجموعة من خلال خادم وكيل، فلن تحتاج إلى تحديد هذه المعلمة. لمزيد من المعلومات، راجع القسم تكوين نقطة نهاية الوكيل لاحقا في هذه المقالة.

  3. إضافة مستودع مخططات Azure إلى قائمتك المحلية عن طريق تشغيل الأمر التالي:

    helm repo add microsoft https://microsoft.github.io/charts/repo
    
  4. تثبيت المخطط عن طريق تشغيل الأمر التالي:

    $ helm install --name myrelease-1 \
    --set amalogsagent.secret.wsid=<logAnalyticsWorkspaceId>,amalogsagent.secret.key=<logAnalyticsWorkspaceKey>,amalogsagent.env.clusterName=<my_prod_cluster> microsoft/azuremonitor-containers
    

    إذا كانت مساحة عمل Log Analytics موجودة في Azure China 21Vianet، فقم بتشغيل الأمر التالي:

    $ helm install --name myrelease-1 \
     --set amalogsagent.domain=opinsights.azure.cn,amalogsagent.secret.wsid=<logAnalyticsWorkspaceId>,amalogsagent.secret.key=<logAnalyticsWorkspaceKey>,amalogsagent.env.clusterName=<your_cluster_name> incubator/azuremonitor-containers
    

    إذا كانت مساحة عمل Log Analytics موجودة في Azure US Government، فقم بتشغيل الأمر التالي:

    $ helm install --name myrelease-1 \
    --set amalogsagent.domain=opinsights.azure.us,amalogsagent.secret.wsid=<logAnalyticsWorkspaceId>,amalogsagent.secret.key=<logAnalyticsWorkspaceKey>,amalogsagent.env.clusterName=<your_cluster_name> incubator/azuremonitor-containers
    

تمكين مخطط Helm باستخدام نموذج واجهة برمجة التطبيقات

يمكنك تحديد وظيفة إضافية في ملف JSON لمواصفات نظام مجموعة AKS Engine، والذي يشار إليه أيضا باسم نموذج واجهة برمجة التطبيقات. في هذه الوظيفة الإضافية، قم بتوفير الإصدار المشفرة base64 من WorkspaceGUID ومساحة WorkspaceKey عمل Log Analytics حيث يتم تخزين بيانات المراقبة المجمعة. يمكنك العثور على WorkspaceGUID و WorkspaceKey باستخدام الخطوين 1 و2 في القسم السابق.

يمكن العثور على تعريفات واجهة برمجة التطبيقات المدعومة لمجموعة Azure Stack Hub في المثال kubernetes-container-monitoring_existing_workspace_id_and_key.json. على وجه التحديد، ابحث عن خاصية الوظائف الإضافية في kubernetesConfig:

"orchestratorType": "Kubernetes",
       "kubernetesConfig": {
         "addons": [
           {
             "name": "container-monitoring",
             "enabled": true,
             "config": {
               "workspaceGuid": "<Azure Log Analytics Workspace Id in Base-64 encoded>",
               "workspaceKey": "<Azure Log Analytics Workspace Key in Base-64 encoded>"
             }
           }
         ]
       }

تكوين مجموعة بيانات العامل

بدءًا من إصدار المخطط 1.0.0، يُتحكم في إعدادات جمع بيانات العامل من ConfigMap. لمزيد من المعلومات حول إعدادات جمع بيانات العامل، راجع تكوين جمع بيانات العامل لرؤى الحاوية.

بعد نشر المخطط بنجاح، يمكنك مراجعة البيانات الخاصة بمجموعة Kubernetes المختلطة في نتائج تحليلات الحاوية من مدخل Microsoft Azure.

إشعار

زمن انتقال الاستيعاب حوالي 5 إلى 10 دقائق من العامل للتثبيت في مساحة عمل Log Analytics. تظهر حالة نظام المجموعة القيمة No data أو Unknown حتى تتوفر جميع بيانات المراقبة المطلوبة في Azure Monitor.

تكوين نقطة نهاية الوكيل

بدءا من إصدار المخطط 2.7.1، سيدعم المخطط تحديد نقطة نهاية الوكيل مع معلمة amalogsagent.proxy المخطط. بهذه الطريقة، يمكنه الاتصال من خلال الخادم الوكيل الخاص بك. يمكن أن يكون الاتصال بين عامل نتائج تحليلات الحاوية وAzure Monitor خادم وكيل HTTP أو HTTPS. يتم دعم كل من المصادقة المجهولة والأساسية مع اسم المستخدم وكلمة المرور.

تحتوي قيمة تكوين الوكيل على بناء الجملة [protocol://][user:password@]proxyhost[:port].

إشعار

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

الخاصية ‏‏الوصف
البروتوكول HTTP أو HTTPS
المستخدم اسم مستخدم اختياري لمصادقة الوكيل
كلمة المرور كلمة مرور اختيارية لمصادقة الوكيل
مضيف وكيل العنوان أو FQDN للخادم الوكيل
المنفذ رقم منفذ اختياري للخادم الوكيل

مثال على ذلك amalogsagent.proxy=http://user01:password@proxy01.contoso.com:8080 .

إذا حددت البروتوكول ك http، يتم إنشاء طلبات HTTP باستخدام اتصال آمن SSL/TLS. يجب أن يدعم الخادم الوكيل بروتوكولات SSL/TLS.

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

إذا واجهت خطأ أثناء محاولة تمكين المراقبة لمجموعة Kubernetes المختلطة، فاستخدم البرنامج النصي PowerShell TroubleshootError_nonAzureK8s.ps1 لمساعدتك في اكتشاف المشكلات التي تواجهها وإصلاحها. تم تصميمه للكشف عن المشكلات التالية ومحاولة تصحيحها:

  • مساحة عمل Log Analytics المحددة صالحة.
  • تم تكوين مساحة عمل Log Analytics باستخدام حل نتائج تحليلات الحاوية. إذا لم يكن الأمر كذلك، فقم بتكوين مساحة العمل.
  • يتم تشغيل جرابات مجموعة النسخ المتماثلة لعامل Azure Monitor.
  • يتم تشغيل Azure Monitor Agent daemonset pods.
  • خدمة Azure Monitor Agent Health قيد التشغيل.
  • يتطابق معرف مساحة عمل Log Analytics والمفتاح المكون على العامل الحاوي مع مساحة العمل التي تم تكوين نتيجة التحليلات بها.
  • تحقق من أن جميع عقد عامل Linux لديها kubernetes.io/role=agent التسمية إلى جراب المجدولات. إذا لم تكن موجودة، فقم بإضافتها.
  • تحديد الشروط التي قد تشير إلى cAdvisor secure port:10250 أو unsecure port: 10255 لم يتم فتحها على جميع العقد في نظام المجموعة.

للتنفيذ باستخدام Azure PowerShell، استخدم الأوامر التالية في المجلد الذي يحتوي على البرنامج النصي:

.\TroubleshootError_nonAzureK8s.ps1 - azureLogAnalyticsWorkspaceResourceId </subscriptions/<subscriptionId>/resourceGroups/<resourcegroupName>/providers/Microsoft.OperationalInsights/workspaces/<workspaceName> -kubeConfig <kubeConfigFile> -clusterContextInKubeconfig <clusterContext>

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

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