Udostępnij za pośrednictwem


Konfigurowanie hybrydowych klastrów Kubernetes za pomocą usługi Container Insights

Usługa Container Insights zapewnia zaawansowane środowisko monitorowania dla usługi Azure Kubernetes Service (AKS). W tym artykule opisano sposób włączania monitorowania klastrów Kubernetes hostowanych poza platformą Azure i osiągnięcia podobnego środowiska monitorowania.

Obsługiwane konfiguracje

Poniższe konfiguracje są oficjalnie obsługiwane w usłudze Container Insights. Jeśli masz inną wersję platformy Kubernetes i wersji systemu operacyjnego, otwórz bilet pomocy technicznej.

  • Środowiskach:
    • Lokalna platforma Kubernetes.
    • OpenShift w wersji 4 lub nowszej, lokalnej lub w innych środowiskach w chmurze.
  • Wersje platformy Kubernetes i zasad pomocy technicznej są takie same jak obsługiwane wersje usługi AKS.
  • Obsługiwane są następujące środowiska uruchomieniowe kontenerów: środowiska uruchomieniowe Moby i CRI, takie jak CRI-O i ContainerD.
  • Obsługiwane wersje systemu operacyjnego Linux dla węzłów głównych i roboczych to Ubuntu (18.04 LTS i 16.04 LTS) oraz Red Hat Enterprise Linux CoreOS 43.81.
  • Obsługiwana usługa kontroli dostępu platformy Azure: kontrola dostępu oparta na rolach (RBAC) i kontrola dostępu oparta na rolach (RBAC) platformy Kubernetes.

Wymagania wstępne

Przed rozpoczęciem upewnij się, że spełnione są następujące wymagania wstępne:

  • Masz obszar roboczy usługi Log Analytics. Usługa Container Insights obsługuje obszar roboczy usługi Log Analytics w regionach wymienionych w obszarze Produkty platformy Azure według regionów. Możesz utworzyć własny obszar roboczy za pomocą usługi Azure Resource Manager, programu PowerShell lub witryny Azure Portal.

    Uwaga

    Włączenie monitorowania wielu klastrów o tej samej nazwie klastra do tego samego obszaru roboczego usługi Log Analytics nie jest obsługiwane. Nazwy klastrów muszą być unikatowe.

  • Jesteś członkiem roli współautora usługi Log Analytics, aby włączyć monitorowanie kontenerów. Aby uzyskać więcej informacji na temat kontrolowania dostępu do obszaru roboczego usługi Log Analytics, zobacz Zarządzanie dostępem do obszaru roboczego i danych dzienników.

  • Aby wyświetlić dane monitorowania, musisz mieć rolę czytelnika usługi Log Analytics w obszarze roboczym usługi Log Analytics skonfigurowanym przy użyciu usługi Container Insights.

  • Masz klienta helm do dołączenia wykresu Container Insights dla określonego klastra Kubernetes.

  • Następujące informacje o konfiguracji serwera proxy i zapory są wymagane, aby konteneryzowana wersja agenta usługi Log Analytics dla systemu Linux komunikowała się z usługą Azure Monitor:

    Zasób agenta Porty
    *.ods.opinsights.azure.com Port 443
    *.oms.opinsights.azure.com Port 443
    *.dc.services.visualstudio.com Port 443
  • Konteneryzowany agent wymaga, aby platforma Kubelet cAdvisor secure port: 10250 lub unsecure port :10255 została otwarta we wszystkich węzłach w klastrze w celu zbierania metryk wydajności. Zalecamy skonfigurowanie secure port: 10250 na platformie Kubelet cAdvisor, jeśli nie została jeszcze skonfigurowana.

  • Konteneryzowany agent wymaga określenia następujących zmiennych środowiskowych w kontenerze w celu komunikowania się z usługą interfejsu API Kubernetes w klastrze w celu zbierania danych spisu: KUBERNETES_SERVICE_HOST i KUBERNETES_PORT_443_TCP_PORT.

Ważne

Minimalna wersja agenta obsługiwana do monitorowania hybrydowych klastrów Kubernetes to ciprod10182019 lub nowszy.

Włączanie monitorowania

Aby włączyć szczegółowe informacje o kontenerze dla hybrydowego klastra Kubernetes:

  1. Skonfiguruj obszar roboczy usługi Log Analytics przy użyciu rozwiązania Container Insights.

  2. Włącz wykres Helm usługi Container Insights z obszarem roboczym usługi Log Analytics.

Aby uzyskać więcej informacji na temat rozwiązań do monitorowania w usłudze Azure Monitor, zobacz Monitorowanie rozwiązań w usłudze Azure Monitor.

Dodawanie rozwiązania Kontenery usługi Azure Monitor

Rozwiązanie można wdrożyć przy użyciu dostarczonego szablonu usługi Azure Resource Manager przy użyciu polecenia cmdlet New-AzResourceGroupDeployment programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure.

Jeśli nie znasz pojęcia wdrażania zasobów przy użyciu szablonu, zobacz:

Jeśli zdecydujesz się korzystać z interfejsu wiersza polecenia platformy Azure, najpierw musisz zainstalować interfejs wiersza polecenia i używać go lokalnie. Musisz uruchomić interfejs wiersza polecenia platformy Azure w wersji 2.0.59 lub nowszej. Aby zidentyfikować wersję, uruchom polecenie az --version. Jeśli musisz zainstalować lub uaktualnić interfejs wiersza polecenia platformy Azure, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Ta metoda zawiera dwa szablony JSON. Jeden szablon określa konfigurację umożliwiającą monitorowanie. Drugi szablon zawiera wartości parametrów, które można skonfigurować do określenia:

  • workspaceResourceId: pełny identyfikator zasobu obszaru roboczego usługi Log Analytics.
  • workspaceRegion: Region, w którym jest tworzony obszar roboczy, nazywany również lokalizacją we właściwościach obszaru roboczego podczas wyświetlania ich w witrynie Azure Portal.

Aby najpierw zidentyfikować pełny identyfikator zasobu obszaru roboczego usługi Log Analytics, który jest wymagany dla wartości parametru workspaceResourceId w pliku containerSolutionParams.json , wykonaj następujące kroki. Następnie uruchom polecenie cmdlet programu PowerShell lub interfejsu wiersza polecenia platformy Azure, aby dodać rozwiązanie.

  1. Wyświetl listę wszystkich subskrypcji, do których masz dostęp, przy użyciu następującego polecenia:

    az account list --all -o table
    

    Dane wyjściowe będą przypominać następujący przykład:

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

    Skopiuj wartość SubscriptionId.

  2. Przejdź do subskrypcji hostowania obszaru roboczego usługi Log Analytics przy użyciu następującego polecenia:

    az account set -s <subscriptionId of the workspace>
    
  3. Poniższy przykład przedstawia listę obszarów roboczych w subskrypcjach w domyślnym formacie JSON:

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

    W danych wyjściowych znajdź nazwę obszaru roboczego. Następnie skopiuj pełny identyfikator zasobu tego obszaru roboczego usługi Log Analytics pod identyfikatorem pola.

  4. Skopiuj i wklej następującą składnię JSON do pliku:

    {
    "$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. Zapisz ten plik jako containerSolution.json w folderze lokalnym.

  6. Wklej następującą składnię JSON do pliku:

    {
      "$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. Edytuj wartości obszaru roboczegoResourceId , używając wartości skopiowanych w kroku 3. W obszarze workspaceRegion skopiuj wartość Region po uruchomieniu polecenia interfejsu wiersza polecenia platformy Azure az monitor log-analytics workspace show.

  8. Zapisz ten plik jako containerSolutionParams.json w folderze lokalnym.

  9. Wszystko jest teraz gotowe do wdrożenia tego szablonu.

    • Aby wdrożyć za pomocą programu Azure PowerShell, użyj następujących poleceń w folderze zawierającym szablon:

      # 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
      

      Zmiana konfiguracji może potrwać kilka minut. Po zakończeniu komunikat podobny do poniższego przykładu zawiera następujący wynik:

      provisioningState       : Succeeded
      
    • Aby wdrożyć za pomocą interfejsu wiersza polecenia platformy Azure, uruchom następujące polecenia:

      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
      

      Zmiana konfiguracji może potrwać kilka minut. Po zakończeniu komunikat podobny do poniższego przykładu zawiera następujący wynik:

      provisioningState       : Succeeded
      

      Po włączeniu monitorowania może upłynąć około 15 minut, zanim będzie można wyświetlić metryki kondycji klastra.

Instalowanie pakietu Helm

W tej sekcji zainstalujesz konteneryzowanego agenta na potrzeby usługi Container Insights. Przed kontynuowaniem zidentyfikuj identyfikator obszaru roboczego wymagany dla parametru amalogsagent.secret.wsid i klucz podstawowy wymagany dla parametru amalogsagent.secret.key . Aby zidentyfikować te informacje, wykonaj następujące kroki, a następnie uruchom polecenia, aby zainstalować agenta przy użyciu pakietu Helm.

  1. Uruchom następujące polecenie, aby zidentyfikować identyfikator obszaru roboczego:

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

    W danych wyjściowych znajdź nazwę obszaru roboczego pod nazwą pola. Następnie skopiuj identyfikator obszaru roboczego tego obszaru roboczego usługi Log Analytics w polu customerID.

  2. Uruchom następujące polecenie, aby zidentyfikować klucz podstawowy dla obszaru roboczego:

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

    W danych wyjściowych znajdź klucz podstawowy w polu primarySharedKey , a następnie skopiuj wartość.

    Uwaga

    Następujące polecenia mają zastosowanie tylko w przypadku programu Helm w wersji 2. Użycie parametru --name nie ma zastosowania z programem Helm w wersji 3.

    Jeśli klaster Kubernetes komunikuje się za pośrednictwem serwera proxy, skonfiguruj parametr amalogsagent.proxy przy użyciu adresu URL serwera proxy. Jeśli klaster nie komunikuje się za pośrednictwem serwera proxy, nie musisz określać tego parametru. Aby uzyskać więcej informacji, zobacz sekcję Konfigurowanie punktu końcowego serwera proxy w dalszej części tego artykułu.

  3. Dodaj repozytorium wykresów platformy Azure do listy lokalnej, uruchamiając następujące polecenie:

    helm repo add microsoft https://microsoft.github.io/charts/repo
    
  4. Zainstaluj wykres, uruchamiając następujące polecenie:

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

    Jeśli obszar roboczy usługi Log Analytics znajduje się w witrynie Azure China 21Vianet, uruchom następujące polecenie:

    $ 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
    

    Jeśli obszar roboczy usługi Log Analytics znajduje się w usłudze Azure US Government, uruchom następujące polecenie:

    $ 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
    

Włączanie wykresu Helm przy użyciu modelu interfejsu API

Możesz określić dodatek w pliku JSON specyfikacji klastra AKS Engine, który jest również określany jako model interfejsu API. W tym dodatku podaj zakodowaną w formacie base64 wersję WorkspaceGUID i WorkspaceKey obszar roboczy usługi Log Analytics, w którym są przechowywane zebrane dane monitorowania. Instrukcje 1 i 2 można znaleźć WorkspaceGUID WorkspaceKey w poprzedniej sekcji.

Obsługiwane definicje interfejsu API dla klastra usługi Azure Stack Hub można znaleźć w przykładzie kubernetes-container-monitoring_existing_workspace_id_and_key.json. W szczególności znajdź właściwość addons w narzędziu 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>"
             }
           }
         ]
       }

Konfigurowanie zbierania danych agenta

Począwszy od wersji wykresu 1.0.0, ustawienia zbierania danych agenta są kontrolowane z poziomu obiektu ConfigMap. Aby uzyskać więcej informacji na temat ustawień zbierania danych agenta, zobacz Konfigurowanie zbierania danych agenta na potrzeby szczegółowych informacji o kontenerze.

Po pomyślnym wdrożeniu wykresu możesz przejrzeć dane dla hybrydowego klastra Kubernetes w obszarze Szczegółowe informacje o kontenerze w witrynie Azure Portal.

Uwaga

Opóźnienie pozyskiwania wynosi od około 5 do 10 minut od agenta do zatwierdzenia w obszarze roboczym usługi Log Analytics. Stan klastra pokazuje wartość Brak danych lub Nieznany, dopóki wszystkie wymagane dane monitorowania nie będą dostępne w usłudze Azure Monitor.

Konfigurowanie punktu końcowego serwera proxy

Począwszy od wersji wykresu 2.7.1, wykres będzie obsługiwał określanie punktu końcowego serwera proxy z parametrem wykresu amalogsagent.proxy . W ten sposób może komunikować się za pośrednictwem serwera proxy. Komunikacja między agentem usługi Container Insights i usługą Azure Monitor może być serwerem proxy HTTP lub HTTPS. Obsługiwane są zarówno uwierzytelnianie anonimowe, jak i podstawowe z nazwą użytkownika i hasłem.

Wartość konfiguracji serwera proxy ma składnię [protocol://][user:password@]proxyhost[:port].

Uwaga

Jeśli serwer proxy nie wymaga uwierzytelniania, nadal musisz określić pseudonauszową nazwę użytkownika i hasło. Może to być dowolna nazwa użytkownika lub hasło.

Właściwości opis
protokół HTTP lub HTTPS
Użytkownik Opcjonalna nazwa użytkownika na potrzeby uwierzytelniania serwera proxy
hasło Opcjonalne hasło do uwierzytelniania serwera proxy
proxyhost Adres lub nazwa FQDN serwera proxy
port Opcjonalny numer portu serwera proxy

Może to być na przykład amalogsagent.proxy=http://user01:password@proxy01.contoso.com:8080.

Jeśli określisz protokół jako http, żądania HTTP są tworzone przy użyciu bezpiecznego połączenia SSL/TLS. Serwer proxy musi obsługiwać protokoły SSL/TLS.

Rozwiązywanie problemów

Jeśli podczas próby włączenia monitorowania dla hybrydowego klastra Kubernetes wystąpi błąd, użyj skryptu programu PowerShell TroubleshootError_nonAzureK8s.ps1 , aby ułatwić wykrywanie i rozwiązywanie napotkanych problemów. Jest ona przeznaczona do wykrywania i próby naprawienia następujących problemów:

  • Określony obszar roboczy usługi Log Analytics jest prawidłowy.
  • Obszar roboczy usługi Log Analytics jest skonfigurowany przy użyciu rozwiązania Container Insights. Jeśli nie, skonfiguruj obszar roboczy.
  • Zasobniki zestawu replik agenta usługi Azure Monitor są uruchomione.
  • Zasobniki demononset agenta usługi Azure Monitor są uruchomione.
  • Usługa Azure Monitor Agent Health jest uruchomiona.
  • Identyfikator i klucz obszaru roboczego usługi Log Analytics skonfigurowany na konteneryzowanym agencie są zgodne z obszarem roboczym skonfigurowanym przez szczegółowe informacje.
  • Sprawdź, czy wszystkie węzły procesu roboczego systemu Linux mają etykietę kubernetes.io/role=agent zasobnika harmonogramów. Jeśli nie istnieje, dodaj go.
  • Zidentyfikuj warunki, które mogą wskazywać cAdvisor secure port:10250 lub unsecure port: 10255 nie są otwarte we wszystkich węzłach w klastrze.

Aby wykonać polecenie za pomocą programu Azure PowerShell, użyj następujących poleceń w folderze zawierającym skrypt:

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

Następne kroki

Teraz, gdy monitorowanie jest włączone w celu zbierania informacji o kondycji i wykorzystaniu zasobów hybrydowych klastrów i obciążeń Kubernetes, dowiedz się , jak używać szczegółowych informacji o kontenerach.