Szybki start: Połączenie istniejącego klastra Kubernetes do usługi Azure Arc

Rozpocznij pracę z platformą Kubernetes z obsługą usługi Azure Arc przy użyciu interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell, aby połączyć istniejący klaster Kubernetes z usługą Azure Arc.

Aby zapoznać się z koncepcyjnym omówieniem łączenia klastrów z usługą Azure Arc, zobacz Omówienie agenta Kubernetes z obsługą usługi Azure Arc. Aby wypróbować elementy w środowisku przykładowym/praktycznym, odwiedź witrynę Azure Arc Jumpstart.

Wymagania wstępne

Oprócz tych wymagań wstępnych należy spełnić wszystkie wymagania sieciowe dotyczące platformy Kubernetes z obsługą usługi Azure Arc.

  • Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.

  • Podstawowa wiedza na temat podstawowych pojęć dotyczących platformy Kubernetes.

  • Tożsamość (użytkownik lub jednostka usługi), która może służyć do logowania się do interfejsu wiersza polecenia platformy Azure i łączenia klastra z usługą Azure Arc.

  • Najnowsza wersja interfejsu wiersza polecenia platformy Azure.

  • Najnowsza wersja rozszerzenia interfejsu wiersza polecenia platformy Azure connectedk8s zainstalowana przez uruchomienie następującego polecenia:

    az extension add --name connectedk8s
    
  • Uruchomiony klaster Kubernetes. Jeśli go nie masz, możesz utworzyć klaster przy użyciu jednej z następujących opcji:

    • Platforma Kubernetes na platformie Docker (KIND)

    • Tworzenie klastra Kubernetes przy użyciu platformy Docker dla komputerów Mac lub Windows

    • Zarządzany samodzielnie klaster Kubernetes przy użyciu interfejsu API klastra

      Uwaga

      Klaster musi mieć co najmniej jeden węzeł systemu operacyjnego i typu linux/amd64 architektury i/lub linux/arm64. Zobacz Wymagania dotyczące klastra, aby uzyskać więcej informacji na temat scenariuszy usługi ARM64.

  • Co najmniej 850 MB wolnego dla agentów usługi Arc, którzy zostaną wdrożeni w klastrze, oraz pojemność do użycia około 7% pojedynczego procesora CPU.

  • Plik kubeconfig i kontekst wskazujący klaster.

Rejestrowanie dostawców dla platformy Kubernetes z obsługą usługi Azure Arc

  1. Wprowadź następujące polecenia:

    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.KubernetesConfiguration
    az provider register --namespace Microsoft.ExtendedLocation
    
  2. Monitoruj proces rejestracji. Rejestracja może potrwać do 10 minut.

    az provider show -n Microsoft.Kubernetes -o table
    az provider show -n Microsoft.KubernetesConfiguration -o table
    az provider show -n Microsoft.ExtendedLocation -o table
    

    Po zarejestrowaniu RegistrationState stan tych przestrzeni nazw powinien zostać zmieniony na Registered.

Tworzenie grupy zasobów

Uruchom następujące polecenie:

az group create --name AzureArcTest --location EastUS --output table

Dane wyjściowe:

Location    Name
----------  ------------
eastus      AzureArcTest

Połączenie istniejącego klastra Kubernetes

Uruchom następujące polecenie, aby połączyć klaster. To polecenie umożliwia wdrożenie agentów usługi Azure Arc w klastrze i zainstalowanie programu Helm w wersji 3.6.3 w .azure folderze maszyny wdrożeniowej. Ta instalacja programu Helm 3 jest używana tylko dla usługi Azure Arc i nie usuwa ani nie zmienia żadnych wcześniej zainstalowanych wersji programu Helm na maszynie.

W tym przykładzie nazwa klastra to AzureArcTest1.

az connectedk8s connect --name AzureArcTest1 --resource-group AzureArcTest

Dane wyjściowe:

Helm release deployment succeeded

    {
      "aadProfile": {
        "clientAppId": "",
        "serverAppId": "",
        "tenantId": ""
      },
      "agentPublicKeyCertificate": "xxxxxxxxxxxxxxxxxxx",
      "agentVersion": null,
      "connectivityStatus": "Connecting",
      "distribution": "gke",
      "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1",
      "identity": {
        "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "type": "SystemAssigned"
      },
      "infrastructure": "gcp",
      "kubernetesVersion": null,
      "lastConnectivityTime": null,
      "location": "eastus",
      "managedIdentityCertificateExpirationTime": null,
      "name": "AzureArcTest1",
      "offering": null,
      "provisioningState": "Succeeded",
      "resourceGroup": "AzureArcTest",
      "tags": {},
      "totalCoreCount": null,
      "totalNodeCount": null,
      "type": "Microsoft.Kubernetes/connectedClusters"
    }

Napiwek

Powyższe polecenie bez określonego parametru lokalizacji tworzy zasób Kubernetes z obsługą usługi Azure Arc w tej samej lokalizacji co grupa zasobów. Aby utworzyć zasób Kubernetes z obsługą usługi Azure Arc w innej lokalizacji, określ polecenie --location <region> lub -l <region> podczas uruchamiania az connectedk8s connect polecenia.

Ważne

Jeśli wdrożenie nie powiedzie się z powodu błędu przekroczenia limitu czasu, zobacz nasz przewodnik rozwiązywania problemów, aby uzyskać szczegółowe informacje na temat rozwiązywania tego problemu.

Połączenie przy użyciu serwera proxy ruchu wychodzącego

Jeśli klaster znajduje się za serwerem proxy ruchu wychodzącego, żądania muszą być kierowane za pośrednictwem serwera proxy ruchu wychodzącego.

  1. Na maszynie wdrożeniowej ustaw zmienne środowiskowe wymagane dla interfejsu wiersza polecenia platformy Azure do korzystania z serwera proxy ruchu wychodzącego:

    export HTTP_PROXY=<proxy-server-ip-address>:<port>
    export HTTPS_PROXY=<proxy-server-ip-address>:<port>
    export NO_PROXY=<cluster-apiserver-ip-address>:<port>
    
  2. W klastrze Kubernetes uruchom polecenie connect z określonymi proxy-https parametrami i proxy-http . Jeśli serwer proxy jest skonfigurowany zarówno przy użyciu protokołu HTTP, jak i HTTPS, pamiętaj, aby użyć --proxy-http serwera proxy HTTP i --proxy-https serwera proxy HTTPS. Jeśli serwer proxy używa tylko protokołu HTTP, możesz użyć tej wartości dla obu parametrów.

    az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-https https://<proxy-server-ip-address>:<port> --proxy-http http://<proxy-server-ip-address>:<port> --proxy-skip-range <excludedIP>,<excludedCIDR> --proxy-cert <path-to-cert-file>
    

Uwaga

  • Niektóre żądania sieciowe, takie jak żądania związane z komunikacją między usługami klastra, muszą być oddzielone od ruchu kierowanego przez serwer proxy na potrzeby komunikacji wychodzącej. Parametr --proxy-skip-range można użyć do określenia zakresu CIDR i punktów końcowych w sposób rozdzielony przecinkami, aby każda komunikacja z agentów do tych punktów końcowych nie przechodziła przez wychodzący serwer proxy. Co najmniej zakres CIDR usług w klastrze powinien być określony jako wartość tego parametru. Załóżmy na przykład, że kubectl get svc -A zwracamy listę usług, w których wszystkie usługi mają wartości ClusterIP w zakresie 10.0.0.0/16. Następnie wartość do określenia parametru --proxy-skip-range to 10.0.0.0/16,kubernetes.default.svc,.svc.cluster.local,.svc.
  • --proxy-http, --proxy-httpsi --proxy-skip-range są oczekiwane dla większości środowisk serwera proxy ruchu wychodzącego. --proxy-certjest wymagany tylko wtedy, gdy konieczne jest wstrzyknięcie zaufanych certyfikatów oczekiwanych przez serwer proxy do zaufanego magazynu certyfikatów zasobników agenta.
  • Serwer proxy ruchu wychodzącego musi być skonfigurowany tak, aby zezwalał na połączenia protokołu Websocket.

W przypadku serwerów proxy ruchu wychodzącego, na których należy podać tylko zaufany certyfikat bez danych wejściowych punktu końcowego serwera proxy, az connectedk8s connect można uruchomić tylko z --proxy-cert określonymi danymi wejściowymi. Jeśli oczekuje się wielu zaufanych certyfikatów, połączony łańcuch certyfikatów można udostępnić w jednym pliku przy użyciu parametru --proxy-cert .

Uwaga

  • --custom-ca-cert to alias dla elementu --proxy-cert. Jedną z tych parametrów można używać zamiennie. Przekazanie obu parametrów w tym samym poleceniu spowoduje wyróżnienie ostatniego przekazanego parametru.

Uruchom polecenie connect z określonym parametrem --proxy-cert :

az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-cert <path-to-cert-file>

Weryfikowanie połączenia klastra

Uruchom następujące polecenie:

az connectedk8s list --resource-group AzureArcTest --output table

Dane wyjściowe:

Name           Location    ResourceGroup
-------------  ----------  ---------------
AzureArcTest1  eastus      AzureArcTest

Uwaga

Po dołączeniu klastra metadane klastra (wersja klastra, wersja agenta, liczba węzłów itp.) mogą zostać wyświetlone na stronie przeglądu zasobu Kubernetes z włączoną usługą Azure Arc w witrynie Azure Portal w ciągu od 5 do 10 minut.

Napiwek

Aby uzyskać pomoc dotyczącą rozwiązywania problemów podczas nawiązywania połączenia z klastrem, zobacz Diagnozowanie problemów z połączeniem dla klastrów Kubernetes z obsługą usługi Azure Arc.

Wyświetlanie agentów usługi Azure Arc dla platformy Kubernetes

Platforma Kubernetes z obsługą usługi Azure Arc wdraża kilku agentów w azure-arc przestrzeni nazw.

  1. Wyświetl te wdrożenia i zasobniki przy użyciu:

    kubectl get deployments,pods -n azure-arc
    
  2. Sprawdź, czy wszystkie zasobniki są w Running stanie.

    Dane wyjściowe:

     NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
     deployment.apps/cluster-metadata-operator   1/1     1            1           13d
     deployment.apps/clusterconnect-agent        1/1     1            1           13d
     deployment.apps/clusteridentityoperator     1/1     1            1           13d
     deployment.apps/config-agent                1/1     1            1           13d
     deployment.apps/controller-manager          1/1     1            1           13d
     deployment.apps/extension-manager           1/1     1            1           13d
     deployment.apps/flux-logs-agent             1/1     1            1           13d
     deployment.apps/kube-aad-proxy              1/1     1            1           13d
     deployment.apps/metrics-agent               1/1     1            1           13d
     deployment.apps/resource-sync-agent         1/1     1            1           13d
    
     NAME                                            READY   STATUS    RESTARTS   AGE
     pod/cluster-metadata-operator-9568b899c-2stjn   2/2     Running   0          13d
     pod/clusterconnect-agent-576758886d-vggmv       3/3     Running   0          13d
     pod/clusteridentityoperator-6f59466c87-mm96j    2/2     Running   0          13d
     pod/config-agent-7cbd6cb89f-9fdnt               2/2     Running   0          13d
     pod/controller-manager-df6d56db5-kxmfj          2/2     Running   0          13d
     pod/extension-manager-58c94c5b89-c6q72          2/2     Running   0          13d
     pod/flux-logs-agent-6db9687fcb-rmxww            1/1     Running   0          13d
     pod/kube-aad-proxy-67b87b9f55-bthqv             2/2     Running   0          13d
     pod/metrics-agent-575c565fd9-k5j2t              2/2     Running   0          13d
     pod/resource-sync-agent-6bbd8bcd86-x5bk5        2/2     Running   0          13d
    

Aby uzyskać więcej informacji na temat tych agentów, zobacz Omówienie agenta Kubernetes z obsługą usługi Azure Arc.

Czyszczenie zasobów

Zasób Kubernetes z włączoną obsługą usługi Azure Arc, wszystkie skojarzone zasoby konfiguracji i dowolnych agentów uruchomionych w klastrze przy użyciu interfejsu wiersza polecenia platformy Azure można usunąć przy użyciu następującego polecenia:

az connectedk8s delete --name AzureArcTest1 --resource-group AzureArcTest

Jeśli proces usuwania zakończy się niepowodzeniem, użyj następującego polecenia, aby wymusić usunięcie (dodanie -y , jeśli chcesz pominąć monit o potwierdzenie):

az connectedk8s delete -n AzureArcTest1 -g AzureArcTest --force

To polecenie może być również używane, jeśli wystąpią problemy podczas tworzenia nowego wdrożenia klastra (ze względu na to, że wcześniej utworzone zasoby nie są całkowicie usuwane).

Uwaga

Usunięcie zasobu Kubernetes z włączoną usługą Azure Arc przy użyciu witryny Azure Portal powoduje usunięcie wszelkich skojarzonych zasobów konfiguracji, ale nie powoduje usunięcia żadnych agentów uruchomionych w klastrze. Najlepszym rozwiązaniem jest usunięcie zasobu az connectedk8s delete Kubernetes z włączoną usługą Azure Arc zamiast usuwania zasobu w witrynie Azure Portal.

Następne kroki