Konfigurace hybridních clusterů Kubernetes pomocí Přehledů kontejnerů

Container Insights poskytuje bohaté prostředí pro monitorování služby Azure Kubernetes Service (AKS). Tento článek popisuje, jak povolit monitorování clusterů Kubernetes hostovaných mimo Azure a dosáhnout podobného prostředí monitorování.

Podporované konfigurace

Služba Container Insights oficiálně podporuje následující konfigurace. Pokud máte jinou verzi Kubernetes a verze operačního systému, otevřete lístek podpory.

  • Prostředí:
    • Místní Kubernetes
    • OpenShift verze 4 a vyšší, místní nebo v jiných cloudových prostředích.
  • Verze Kubernetes a zásady podpory jsou stejné jako podporované verze AKS.
  • Podporují se následující moduly runtime kontejnerů: Moby a CRI kompatibilní moduly runtime, jako jsou CRI-O a ContainerD.
  • Verze operačního systému Linux pro hlavní a pracovní uzly podporovaná jsou Ubuntu (18.04 LTS a 16.04 LTS) a Red Hat Enterprise Linux CoreOS 43.81.
  • Podporovaná služba Řízení přístupu Azure: Řízení přístupu na základě role (RBAC) Kubernetes a jiné než RBAC.

Požadavky

Než začnete, ujistěte se, že splňujete následující požadavky:

  • Máte pracovní prostor služby Log Analytics. Container Insights podporuje pracovní prostor služby Log Analytics v oblastech uvedených v produktech Azure v jednotlivých oblastech. Vlastní pracovní prostor můžete vytvořit prostřednictvím Azure Resource Manageru, PowerShellu nebo webu Azure Portal.

    Poznámka:

    Povolení monitorování více clusterů se stejným názvem clusteru do stejného pracovního prostoru služby Log Analytics se nepodporuje. Názvy clusterů musí být jedinečné.

  • Jste členem role přispěvatele Log Analytics, abyste povolili monitorování kontejnerů. Další informace o tom, jak řídit přístup k pracovnímu prostoru služby Log Analytics, najdete v tématu Správa přístupu k pracovnímu prostoru a datům protokolu.

  • Pokud chcete zobrazit data monitorování, musíte mít v pracovním prostoru služby Log Analytics nakonfigurovanou roli čtenáře Log Analytics s nakonfigurovanou službou Container Insights.

  • Máte klienta Helm pro onboarding chartu Container Insights pro zadaný cluster Kubernetes.

  • Pro kontejnerizovanou verzi agenta Log Analytics pro Linux ke komunikaci se službou Azure Monitor se vyžadují následující informace o konfiguraci proxy serveru a brány firewall:

    Prostředek agenta Porty
    *.ods.opinsights.azure.com Port 443
    *.oms.opinsights.azure.com Port 443
    *.dc.services.visualstudio.com Port 443
  • Kontejnerizovaný agent vyžaduje, aby kubelet cAdvisor secure port: 10250 nebo unsecure port :10255 byl otevřen na všech uzlech v clusteru, aby se shromáždily metriky výkonu. Doporučujeme, abyste na webu Kubelet cAdvisor nakonfigurovali secure port: 10250 , pokud ještě není nakonfigurovaný.

  • Kontejnerizovaný agent vyžaduje, aby v kontejneru byly zadány následující proměnné prostředí, aby komunikovali se službou Rozhraní API Kubernetes v clusteru za účelem shromažďování dat inventáře: KUBERNETES_SERVICE_HOST a KUBERNETES_PORT_443_TCP_PORT.

Důležité

Minimální verze agenta podporovaná pro monitorování hybridních clusterů Kubernetes je ciprod10182019 nebo novější.

Povolení monitorování

Povolení služby Container Insights pro hybridní cluster Kubernetes:

  1. Nakonfigurujte pracovní prostor služby Log Analytics pomocí řešení Container Insights.

  2. Povolte chart Helm služby Container Insights s pracovním prostorem služby Log Analytics.

Další informace o řešeních monitorování ve službě Azure Monitor najdete v tématu Monitorování řešení ve službě Azure Monitor.

Přidání řešení Azure Monitor Containers

Řešení můžete nasadit pomocí poskytnuté šablony Azure Resource Manageru pomocí rutiny New-AzResourceGroupDeployment Azure PowerShellu nebo pomocí Azure CLI.

Pokud neznáte koncept nasazení prostředků pomocí šablony, přečtěte si téma:

Pokud se rozhodnete použít Azure CLI, musíte nejdřív nainstalovat a používat rozhraní příkazového řádku místně. Musíte používat Azure CLI verze 2.0.59 nebo novější. Pokud chcete zjistit svou verzi, spusťte az --versionpříkaz . Pokud potřebujete nainstalovat nebo upgradovat Azure CLI, přečtěte si téma Instalace Azure CLI.

Tato metoda obsahuje dvě šablony JSON. Jedna šablona určuje konfiguraci pro povolení monitorování. Druhá šablona obsahuje hodnoty parametrů, které konfigurujete pro zadání:

  • workspaceResourceId: Úplné ID prostředku pracovního prostoru služby Log Analytics.
  • workspaceRegion: Oblast, ve které se pracovní prostor vytvoří, se při zobrazení z webu Azure Portal označuje také jako umístění ve vlastnostech pracovního prostoru.

Pokud chcete nejprve identifikovat úplné ID prostředku pracovního prostoru služby Log Analytics, které je vyžadováno pro workspaceResourceId hodnotu parametru v souboru containerSolutionParams.json , proveďte následující kroky. Pak spuštěním rutiny PowerShellu nebo příkazu Azure CLI přidejte řešení.

  1. Pomocí následujícího příkazu vypíšete všechna předplatná, ke kterým máte přístup:

    az account list --all -o table
    

    Výstup bude vypadat podobně jako v následujícím příkladu:

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

    Zkopírujte hodnotu SubscriptionId.

  2. Pomocí následujícího příkazu přepněte do předplatného hostujícího pracovní prostor služby Log Analytics:

    az account set -s <subscriptionId of the workspace>
    
  3. Následující příklad zobrazí seznam pracovních prostorů ve vašich předplatných ve výchozím formátu JSON:

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

    Ve výstupu vyhledejte název pracovního prostoru. Pak zkopírujte celé ID prostředku tohoto pracovního prostoru služby Log Analytics pod ID pole.

  4. Zkopírujte a vložte do souboru následující syntaxi 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. Uložte tento soubor jako containerSolution.json do místní složky.

  6. Do souboru vložte následující syntaxi 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. Upravte hodnoty pro workspaceResourceId pomocí hodnoty, kterou jste zkopírovali v kroku 3. V případě oblasti pracovního prostoru zkopírujte hodnotu Oblast po spuštění příkazu Azure CLI az monitor log-analytics workspace show.

  8. Uložte tento soubor jako containerSolutionParams.json do místní složky.

  9. Jste připraveni k nasazení této šablony.

    • K nasazení pomocí Azure PowerShellu použijte následující příkazy ve složce, která obsahuje šablonu:

      # 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
      

      Dokončení změny konfigurace může trvat několik minut. Po dokončení zpráva podobná následujícímu příkladu obsahuje tento výsledek:

      provisioningState       : Succeeded
      
    • Pokud chcete provést nasazení pomocí Azure CLI, spusťte následující příkazy:

      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
      

      Dokončení změny konfigurace může trvat několik minut. Po dokončení zpráva podobná následujícímu příkladu obsahuje tento výsledek:

      provisioningState       : Succeeded
      

      Po povolení monitorování může trvat přibližně 15 minut, než budete moct zobrazit metriky stavu clusteru.

Instalace chartu Helm

V této části nainstalujete kontejnerizovaného agenta pro Container Insights. Než budete pokračovat, identifikujte ID pracovního prostoru požadované pro amalogsagent.secret.wsid parametr a primární klíč požadovaný pro amalogsagent.secret.key parametr. Pokud chcete tyto informace identifikovat, postupujte podle těchto kroků a potom spusťte příkazy pro instalaci agenta pomocí chartu Helm.

  1. Spuštěním následujícího příkazu identifikujte ID pracovního prostoru:

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

    Ve výstupu vyhledejte název pracovního prostoru pod názvem pole. Potom zkopírujte ID pracovního prostoru tohoto pracovního prostoru služby Log Analytics pod polem customerID.

  2. Spuštěním následujícího příkazu identifikujte primární klíč pracovního prostoru:

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

    Ve výstupu vyhledejte primární klíč v poli primarySharedKey a zkopírujte hodnotu.

    Poznámka:

    Následující příkazy platí jenom pro Helm verze 2. Použití parametru --name se nevztahuje na Helm verze 3.

    Pokud váš cluster Kubernetes komunikuje prostřednictvím proxy serveru, nakonfigurujte parametr amalogsagent.proxy s adresou URL proxy serveru. Pokud cluster nekomunikuje přes proxy server, nemusíte tento parametr zadávat. Další informace najdete v části Konfigurace koncového bodu proxy serveru dále v tomto článku.

  3. Spuštěním následujícího příkazu přidejte úložiště Azure Charts do místního seznamu:

    helm repo add microsoft https://microsoft.github.io/charts/repo
    
  4. Nainstalujte graf spuštěním následujícího příkazu:

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

    Pokud je pracovní prostor služby Log Analytics v Azure China 21Vianet, spusťte následující příkaz:

    $ 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
    

    Pokud je pracovní prostor služby Log Analytics ve službě Azure US Government, spusťte následující příkaz:

    $ 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
    

Povolení chartu Helm pomocí modelu rozhraní API

Doplněk můžete zadat v souboru JSON specifikace clusteru modulu AKS, který se také označuje jako model rozhraní API. V tomto doplňku zadejte verzi WorkspaceGUID s kódováním Base64 a WorkspaceKey pracovní prostor služby Log Analytics, kde jsou uložena shromážděná data monitorování. Postup 1 a 2 najdete WorkspaceGUIDWorkspaceKey v předchozí části.

Podporované definice rozhraní API pro cluster Azure Stack Hub najdete v příkladu kubernetes-container-monitoring_existing_workspace_id_and_key.json. Konkrétně vyhledejte vlastnost addons v 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>"
             }
           }
         ]
       }

Konfigurace shromažďování dat agenta

Počínaje grafem verze 1.0.0 se nastavení shromažďování dat agenta řídí z objektu ConfigMap. Další informace o nastavení shromažďování dat agenta najdete v tématu Konfigurace shromažďování dat agenta pro Container Insights.

Po úspěšném nasazení grafu můžete zkontrolovat data pro váš hybridní cluster Kubernetes v Přehledech kontejnerů na webu Azure Portal.

Poznámka:

Latence příjmu dat je přibližně 5 až 10 minut od agenta k potvrzení v pracovním prostoru služby Log Analytics. Stav clusteru zobrazuje hodnotu Žádná data nebo Neznámý , dokud nebudou v Azure Monitoru k dispozici všechna požadovaná data monitorování.

Konfigurace koncového bodu proxy serveru

Počínaje grafem verze 2.7.1 bude graf podporovat zadání koncového bodu proxy pomocí parametru amalogsagent.proxy grafu. Tímto způsobem může komunikovat přes proxy server. Komunikace mezi agentem Container Insights a Azure Monitorem může být proxy server HTTP nebo HTTPS. Podporují se anonymní i základní ověřování pomocí uživatelského jména a hesla.

Hodnota konfigurace proxy serveru má syntaxi [protocol://][user:password@]proxyhost[:port].

Poznámka:

Pokud proxy server nevyžaduje ověření, musíte stále zadat pseudo uživatelské jméno a heslo. Může to být jakékoli uživatelské jméno nebo heslo.

Vlastnost Popis
Protokol HTTP nebo HTTPS
user Volitelné uživatelské jméno pro ověřování proxy serveru
Heslo Volitelné heslo pro ověřování proxy serveru
proxyhost Adresa nebo plně kvalifikovaný název domény proxy serveru
port Volitelné číslo portu pro proxy server

Příklad: amalogsagent.proxy=http://user01:password@proxy01.contoso.com:8080.

Pokud zadáte protokol jako http, požadavky HTTP se vytvoří pomocí zabezpečeného připojení SSL/TLS. Váš proxy server musí podporovat protokoly SSL/TLS.

Řešení problému

Pokud při pokusu o povolení monitorování hybridního clusteru Kubernetes dojde k chybě, použijte skript PowerShellu TroubleshootError_nonAzureK8s.ps1 , který vám pomůže rozpoznat a opravit problémy, se kterými se setkáte. Je navržená k detekci a pokusu o opravu následujících problémů:

  • Zadaný pracovní prostor služby Log Analytics je platný.
  • Pracovní prostor Služby Log Analytics je nakonfigurovaný s řešením Container Insights. Pokud ne, nakonfigurujte pracovní prostor.
  • Jsou spuštěné pody repliky agenta služby Azure Monitor.
  • Jsou spuštěné pody démona agenta služby Azure Monitor.
  • Služba Azure Monitor Agent Health je spuštěná.
  • ID a klíč pracovního prostoru služby Log Analytics nakonfigurovaný v kontejnerizovaném agentu odpovídají pracovnímu prostoru, se kterým je přehled nakonfigurovaný.
  • Ověřte, že všechny pracovní uzly Linuxu mají kubernetes.io/role=agent popisek podu plánovačů. Pokud neexistuje, přidejte ho.
  • Identifikujte podmínky, které můžou znamenat cAdvisor secure port:10250 nebo unsecure port: 10255 nejsou otevřeny na všech uzlech v clusteru.

Ke spuštění pomocí Azure PowerShellu použijte následující příkazy ve složce, která obsahuje skript:

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

Další kroky

Teď, když je monitorování povolené ke shromažďování stavu a využití prostředků hybridních clusterů Kubernetes a úloh na nich spuštěných, zjistíte , jak používat Přehledy kontejnerů.