Hibrid Kubernetes-fürtök konfigurálása Container Insights használatával

A Container Insights gazdag monitorozási élményt nyújt az Azure Kubernetes Service (AKS) számára. Ez a cikk azt ismerteti, hogyan engedélyezheti az Azure-on kívül üzemeltetett Kubernetes-fürtök monitorozását, és hogyan érhet el hasonló monitorozási élményt.

Supported configurations

A Container Insights az alábbi konfigurációkat hivatalosan is támogatja. Ha a Kubernetes és az operációs rendszer más verziójával rendelkezik, nyisson meg egy támogatási jegyet.

  • Környezetben:
    • Kubernetes helyszíni.
    • OpenShift 4-es és újabb verzió, helyszíni vagy más felhőkörnyezetekben.
  • A Kubernetes és a támogatási szabályzat verziói megegyeznek az AKS támogatott verzióival.
  • A következő tároló-futtatókörnyezetek támogatottak: Moby és CRI kompatibilis futtatókörnyezetek, például CRI-O és ContainerD.
  • A linuxos operációs rendszer fő és feldolgozó csomópontokhoz támogatott kiadása az Ubuntu (18.04 LTS és 16.04 LTS) és a Red Hat Enterprise Linux CoreOS 43.81.
  • Az Azure Access Control szolgáltatás támogatott: Kubernetes szerepköralapú hozzáférés-vezérlés (RBAC) és nem RBAC.

Előfeltételek

Mielőtt hozzákezd, győződjön meg arról, hogy megfelel az alábbi előfeltételeknek:

  • Log Analytics-munkaterülete van. A Container Insights egy Log Analytics-munkaterületet támogat az Azure-termékek régiónkénti listájában. Saját munkaterületet az Azure Resource Manager, a PowerShell vagy az Azure Portal használatával hozhat létre.

    Megjegyzés:

    Az azonos fürtnévvel rendelkező fürtök monitorozásának engedélyezése ugyanazon Log Analytics-munkaterületen nem támogatott. A fürtneveknek egyedinek kell lenniük.

  • Ön a Log Analytics közreműködői szerepkörének tagja a tárolófigyelés engedélyezéséhez. A Log Analytics-munkaterülethez való hozzáférés szabályozásáról további információt a munkaterülethez és a naplóadatokhoz való hozzáférés kezelése című témakörben talál.

  • A figyelési adatok megtekintéséhez a Log Analytics-olvasó szerepkörrel kell rendelkeznie a Log Analytics-munkaterületen, amely tárolóelemzésekkel van konfigurálva.

  • A Megadott Kubernetes-fürt Container Insights-diagramjának előkészítéséhez helm-ügyfél szükséges.

  • A linuxos Log Analytics-ügynök tárolóalapú verziójához az alábbi proxy- és tűzfalkonfigurációs információk szükségesek az Azure Monitorral való kommunikációhoz:

    Ügynök erőforrása Ports
    *.ods.opinsights.azure.com 443-as port
    *.oms.opinsights.azure.com 443-as port
    *.dc.services.visualstudio.com 443-as port
  • A tárolóalapú ügynökhöz a Kubeletre cAdvisor secure port: 10250 van szükség, vagy unsecure port :10255 a fürt összes csomópontján meg kell nyitni a teljesítménymetrikák gyűjtéséhez. Javasoljuk, hogy konfigurálja secure port: 10250 a Kubelet cAdvisort, ha még nincs konfigurálva.

  • A tárolóalapú ügynöknek a következő környezeti változókat kell megadnia a tárolón a kubernetes API szolgáltatással való kommunikációhoz a fürtben a leltáradatok gyűjtéséhez: KUBERNETES_SERVICE_HOST és KUBERNETES_PORT_443_TCP_PORT.

Fontos

A hibrid Kubernetes-fürtök monitorozásához támogatott minimális ügynökverzió a ciprod10182019 vagy újabb.

Monitorozás engedélyezése

A Container Insights engedélyezése a hibrid Kubernetes-fürthöz:

  1. A Log Analytics-munkaterület konfigurálása a Container Insights megoldással.

  2. Engedélyezze a Container Insights Helm-diagramot egy Log Analytics-munkaterülettel.

Az Azure Monitorban található monitorozási megoldásokkal kapcsolatos további információkért lásd az Azure Monitor monitorozási megoldásait.

Az Azure Monitor Containers-megoldás hozzáadása

A megoldást az Azure PowerShell-parancsmaggal New-AzResourceGroupDeployment vagy az Azure CLI-vel telepítheti a megadott Azure Resource Manager-sablonnal.

Ha nem ismeri az erőforrások sablonnal történő üzembe helyezésének fogalmát, tekintse meg a következőt:

Ha az Azure CLI használata mellett dönt, először helyileg kell telepítenie és használnia a parancssori felületet. Az Azure CLI 2.0.59-es vagy újabb verzióját kell futtatnia. A verzió azonosításához futtassa a következőt az --version: . Ha telepítenie vagy frissítenie kell az Azure CLI-t, olvassa el az Azure CLI telepítését.

Ez a módszer két JSON-sablont tartalmaz. Egy sablon határozza meg a monitorozás engedélyezésének konfigurációját. A másik sablon az alábbi paraméterek megadására konfigurált paraméterértékeket tartalmazza:

  • workspaceResourceId: A Log Analytics-munkaterület teljes erőforrás-azonosítója.
  • workspaceRegion: Az a régió, amelyben a munkaterület létrejön, amelyet a munkaterület tulajdonságainak helyének is nevezünk, amikor az Azure Portalról tekinti meg őket.

A Log Analytics-munkaterület teljes erőforrás-azonosítójának azonosításához, amely a containerSolutionParams.json fájl paraméterértékéhez workspaceResourceIdszükséges, hajtsa végre az alábbi lépéseket. Ezután futtassa a PowerShell-parancsmagot vagy az Azure CLI-parancsot a megoldás hozzáadásához.

  1. Az alábbi paranccsal listázhatja az összes előfizetést, amelyhez hozzáférése van:

    az account list --all -o table
    

    A kimenet a következő példához fog hasonlítni:

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

    Másolja ki az SubscriptionId értékét.

  2. Váltson a Log Analytics-munkaterületet üzemeltető előfizetésre az alábbi paranccsal:

    az account set -s <subscriptionId of the workspace>
    
  3. Az alábbi példa az előfizetések munkaterületeinek listáját jeleníti meg alapértelmezett JSON formátumban:

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

    A kimenetben keresse meg a munkaterület nevét. Ezután másolja a Log Analytics-munkaterület teljes erőforrás-azonosítóját a mezőazonosító alá.

  4. Másolja és illessze be a következő JSON-szintaxist a létrehozott fájlba:

    {
    "$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. Mentse ezt a fájlt containerSolution.json fájlként egy helyi mappába.

  6. Illessze be a következő JSON-szintaxist a fájlba:

    {
      "$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. Szerkessze a workspaceResourceId értékeit a 3. lépésben másolt értékkel. A WorkspaceRegion esetében másolja ki a Régió értéket az Azure CLI-parancs futtatása után az monitor log-analytics workspace show.

  8. Mentse a fájlt containerSolutionParams.json fájlként egy helyi mappába.

  9. Most már készen áll a sablon üzembe helyezésére.

    • Az Azure PowerShell-lel való üzembe helyezéshez használja a következő parancsokat a sablont tartalmazó mappában:

      # 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
      

      A konfiguráció módosítása eltarthat néhány percig. Ha elkészült, az alábbi példához hasonló üzenet tartalmazza ezt az eredményt:

      provisioningState       : Succeeded
      
    • Az Azure CLI-vel való üzembe helyezéshez futtassa a következő parancsokat:

      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
      

      A konfiguráció módosítása eltarthat néhány percig. Ha elkészült, az alábbi példához hasonló üzenet tartalmazza ezt az eredményt:

      provisioningState       : Succeeded
      

      A figyelés engedélyezése után körülbelül 15 percig tarthat, amíg megtekintheti a fürt állapotmetrikáit.

A Helm-diagram telepítése

Ebben a szakaszban a Container Insights tárolóalapú ügynökét telepíti. A folytatás előtt azonosítsa a paraméterhez amalogsagent.secret.wsid szükséges munkaterület-azonosítót és a paraméterhez amalogsagent.secret.key szükséges elsődleges kulcsot. Az információk azonosításához kövesse az alábbi lépéseket, majd futtassa a parancsokat az ügynök Helm-diagram használatával történő telepítéséhez.

  1. Futtassa a következő parancsot a munkaterület azonosítójának azonosításához:

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

    A kimenetben keresse meg a munkaterület nevét a mezőnév alatt. Ezután másolja az adott Log Analytics-munkaterület munkaterület-azonosítóját a customerID mező alá.

  2. Futtassa a következő parancsot a munkaterület elsődleges kulcsának azonosításához:

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

    A kimenetben keresse meg az elsődleges kulcsot a primarySharedKey mező alatt, majd másolja ki az értéket.

    Megjegyzés:

    Az alábbi parancsok csak a Helm 2-es verziójára vonatkoznak. A paraméter használata nem alkalmazható a --name Helm 3-ra.

    Ha a Kubernetes-fürt proxykiszolgálón keresztül kommunikál, konfigurálja a paramétert amalogsagent.proxy a proxykiszolgáló URL-címével. Ha a fürt nem proxykiszolgálón keresztül kommunikál, nem kell megadnia ezt a paramétert. További információ: A proxyvégpont konfigurálása a cikk későbbi részében.

  3. Adja hozzá az Azure-diagramok adattárát a helyi listához az alábbi parancs futtatásával:

    helm repo add microsoft https://microsoft.github.io/charts/repo
    
  4. Telepítse a diagramot a következő parancs futtatásával:

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

    Ha a Log Analytics-munkaterület az Azure China 21Vianetben található, futtassa a következő parancsot:

    $ 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
    

    Ha a Log Analytics-munkaterület az Azure US Governmentben található, futtassa a következő parancsot:

    $ 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
    

A Helm-diagram engedélyezése az API-modell használatával

Az AKS Engine-fürt specifikációjához tartozó JSON-fájlban megadhat egy bővítményt, amelyet API-modellnek is neveznek. Ebben a bővítményben adja meg annak a Log Analytics-munkaterületnek WorkspaceGUID a base64 kódolású verzióját, WorkspaceKey ahol az összegyűjtött monitorozási adatok tárolása történik. Az előző szakaszban található 1. és 2. lépéssel.WorkspaceGUIDWorkspaceKey

Az Azure Stack Hub-fürt támogatott API-definíciói a kubernetes-container-monitoring_existing_workspace_id_and_key.json példában találhatók. Pontosabban keresse meg az addons tulajdonságot a KubernetesConfigban:

"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>"
             }
           }
         ]
       }

Ügynökadatok gyűjtésének konfigurálása

A diagram 1.0.0-s verziójától kezdve az ügynök adatgyűjtési beállításait a ConfigMap szabályozza. Az ügynökadat-gyűjtési beállításokról további információt a Container Insights ügynökadat-gyűjtésének konfigurálása című témakörben talál.

A diagram sikeres üzembe helyezése után áttekintheti a hibrid Kubernetes-fürt adatait a Container Insightsban az Azure Portalról.

Megjegyzés:

A betöltési késés körülbelül 5–10 perc az ügynöktől a Log Analytics-munkaterületen való véglegesítéshez. A fürt állapota a Nincs vagyismeretlen értéket jeleníti meg, amíg az összes szükséges monitorozási adat el nem érhető az Azure Monitorban.

A proxyvégpont konfigurálása

A diagram 2.7.1-es verziójától kezdve a diagram támogatja a proxyvégpont megadását a amalogsagent.proxy diagramparaméterrel. Ily módon a proxykiszolgálón keresztül kommunikálhat. A Container Insights-ügynök és az Azure Monitor közötti kommunikáció lehet HTTP- vagy HTTPS-proxykiszolgáló. A felhasználónévvel és jelszóval rendelkező névtelen és alapszintű hitelesítés egyaránt támogatott.

A proxykonfigurációs érték szintaxisa [protocol://][user:password@]proxyhost[:port].

Megjegyzés:

Ha a proxykiszolgáló nem igényel hitelesítést, akkor is meg kell adnia egy álnevet és jelszót. Ez lehet bármilyen felhasználónév vagy jelszó.

Property Leírás
Protokoll HTTP vagy HTTPS
user Nem kötelező felhasználónév proxyhitelesítéshez
jelszó Nem kötelező jelszó proxyhitelesítéshez
proxyhost A proxykiszolgáló címe vagy teljes tartományneve
kikötő A proxykiszolgáló opcionális portszáma

Például: amalogsagent.proxy=http://user01:password@proxy01.contoso.com:8080.

Ha http-ként adja meg a protokollt, a HTTP-kérések SSL/TLS biztonságos kapcsolat használatával jönnek létre. A proxykiszolgálónak támogatnia kell az SSL/TLS protokollokat.

Hibaelhárítás

Ha hibát tapasztal a hibrid Kubernetes-fürt figyelésének engedélyezése közben, a PowerShell-szkripttel TroubleshootError_nonAzureK8s.ps1 segítségével észlelheti és kijavíthatja a felmerülő problémákat. A következő problémák észlelésére és elhárítására szolgál:

  • A megadott Log Analytics-munkaterület érvényes.
  • A Log Analytics-munkaterület a Container Insights-megoldással van konfigurálva. Ha nem, konfigurálja a munkaterületet.
  • Az Azure Monitor-ügynök replikakészlet-podjai futnak.
  • Az Azure Monitor Agent démonkészlet-podjai futnak.
  • Az Azure Monitor Agent Health szolgáltatás fut.
  • A Tárolóalapú ügynökön konfigurált Log Analytics-munkaterület azonosítója és kulcsa megegyezik azzal a munkaterülettel, amellyel az elemzés konfigurálva van.
  • Ellenőrizze, hogy az összes Linux-feldolgozó csomópont rendelkezik-e az kubernetes.io/role=agent ütemezők podjának címkével. Ha nem létezik, adja hozzá.
  • Azonosítsa azokat a feltételeket, amelyek jelezhetik cAdvisor secure port:10250 vagy unsecure port: 10255 nem nyithatóak meg a fürt összes csomópontján.

Az Azure PowerShell-lel való végrehajtáshoz használja a következő parancsokat a szkriptet tartalmazó mappában:

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

További lépések

Most, hogy a figyelés lehetővé teszi a hibrid Kubernetes-fürtök és számítási feladatok állapotának és erőforrás-kihasználtságának gyűjtését, megtudhatja , hogyan használhatja a Container Insightst.