Quickstart: een bestaand Kubernetes-cluster Verbinding maken naar Azure Arc

Ga aan de slag met Kubernetes met Azure Arc met behulp van Azure CLI of Azure PowerShell om een bestaand Kubernetes-cluster te verbinden met Azure Arc.

Zie het overzicht van kubernetes-agent met Azure Arc voor een conceptueel overzicht van het verbinden van clusters met Azure Arc. Als u dingen wilt uitproberen in een voorbeeld-/oefenervaring, gaat u naar de Azure Arc-jumpstart.

Vereisten

Naast deze vereisten moet u voldoen aan alle netwerkvereisten voor Kubernetes met Azure Arc.

  • Een Azure-account met een actief abonnement. Gratis een account maken

  • Basiskennis van Kubernetes-kernconcepten.

  • Een identiteit (gebruiker of service-principal) die kan worden gebruikt om u aan te melden bij Azure CLI en uw cluster te verbinden met Azure Arc.

  • De nieuwste versie van Azure CLI.

  • De nieuwste versie van de Azure CLI-extensie connectedk8s , geïnstalleerd door de volgende opdracht uit te voeren:

    az extension add --name connectedk8s
    
  • Een up-and-running Kubernetes-cluster. Als u nog geen cluster hebt, kunt u een cluster maken met een van de volgende opties:

    • Kubernetes in Docker (KIND)

    • Een Kubernetes-cluster maken met Docker voor Mac of Windows

    • Zelfbeheerde Kubernetes-cluster met behulp van cluster-API

      Notitie

      Het cluster moet ten minste één knooppunt van het besturingssysteem en het architectuurtype linux/amd64 en/of linux/arm64hebben. Zie Clustervereisten voor meer informatie over ARM64-scenario's.

  • Ten minste 850 MB gratis voor de Arc-agents die op het cluster worden geïmplementeerd en capaciteit om ongeveer 7% van één CPU te gebruiken.

  • Een kubeconfig-bestand en -context die naar uw cluster wijst.

Providers registreren voor Kubernetes met Azure Arc

  1. Voer de volgende opdrachten in:

    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.KubernetesConfiguration
    az provider register --namespace Microsoft.ExtendedLocation
    
  2. Controleer het registratieproces. Registratie kan tot 10 minuten duren.

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

    Zodra de naamruimte is geregistreerd, wordt de RegistrationState status van deze naamruimten gewijzigd in Registered.

Een brongroep maken

Voer de volgende opdracht uit:

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

Uitvoer:

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

Verbinding maken een bestaand Kubernetes-cluster

Voer de volgende opdracht uit om verbinding te maken met uw cluster. Met deze opdracht worden de Azure Arc-agents geïmplementeerd in het cluster en wordt Helm v. 3.6.3 geïnstalleerd in de .azure map van de implementatiemachine. Deze Helm 3-installatie wordt alleen gebruikt voor Azure Arc en verwijdert of wijzigt geen eerder geïnstalleerde versies van Helm op de computer.

In dit voorbeeld is de naam van het cluster AzureArcTest1.

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

Uitvoer:

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

Tip

Met de bovenstaande opdracht zonder de opgegeven locatieparameter wordt de Kubernetes-resource met Azure Arc op dezelfde locatie als de resourcegroep gemaakt. Als u de Kubernetes-resource met Azure Arc op een andere locatie wilt maken, geeft u --location <region> een van beide op of -l <region> bij het uitvoeren van de az connectedk8s connect opdracht.

Belangrijk

Als de implementatie mislukt vanwege een time-outfout, raadpleegt u onze gids voor probleemoplossing voor meer informatie over het oplossen van dit probleem.

Verbinding maken een uitgaande proxyserver gebruiken

Als uw cluster zich achter een uitgaande proxyserver bevindt, moeten aanvragen worden gerouteerd via de uitgaande proxyserver.

  1. Stel op de implementatiecomputer de omgevingsvariabelen in die nodig zijn voor Azure CLI om de uitgaande proxyserver te gebruiken:

    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. Voer in het Kubernetes-cluster de opdracht Verbinding maken uit met de proxy-https opgegeven parameters.proxy-http Als uw proxyserver is ingesteld met zowel HTTP als HTTPS, moet u deze gebruiken --proxy-http voor de HTTP-proxy en --proxy-https voor de HTTPS-proxy. Als uw proxyserver alleen HTTP gebruikt, kunt u die waarde voor beide parameters gebruiken.

    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>
    

Notitie

  • Sommige netwerkaanvragen, zoals de aanvragen die betrekking hebben op service-naar-servicecommunicatie in het cluster, moeten worden gescheiden van het verkeer dat via de proxyserver wordt gerouteerd voor uitgaande communicatie. De --proxy-skip-range parameter kan worden gebruikt om het CIDR-bereik en de eindpunten op een door komma's gescheiden manier op te geven, zodat communicatie van de agents naar deze eindpunten niet via de uitgaande proxy verloopt. Minimaal moet het CIDR-bereik van de services in het cluster worden opgegeven als waarde voor deze parameter. Stel kubectl get svc -A dat er een lijst met services wordt geretourneerd waarin alle services ClusterIP-waarden in het bereik 10.0.0.0/16hebben. Vervolgens is 10.0.0.0/16,kubernetes.default.svc,.svc.cluster.local,.svcde waarde die moet worden opgegeven--proxy-skip-range.
  • --proxy-http, --proxy-httpsen --proxy-skip-range worden verwacht voor de meeste uitgaande proxyomgevingen. --proxy-cert is alleen vereist als u vertrouwde certificaten moet injecteren die door de proxy worden verwacht in het vertrouwde certificaatarchief van agentpods.
  • De uitgaande proxy moet worden geconfigureerd om websocket-verbindingen toe te staan.

Voor uitgaande proxyservers waarbij alleen een vertrouwd certificaat moet worden opgegeven zonder de invoer van het eindpunt van de proxyserver, az connectedk8s connect kan worden uitgevoerd met alleen de --proxy-cert opgegeven invoer. Als er meerdere vertrouwde certificaten worden verwacht, kan de gecombineerde certificaatketen worden opgegeven in één bestand met behulp van de --proxy-cert parameter.

Notitie

  • --custom-ca-cert is een alias voor --proxy-cert. Beide parameters kunnen door elkaar worden gebruikt. Als u beide parameters in dezelfde opdracht doorgeeft, wordt de laatste doorgegeven.

Voer de opdracht Verbinding maken uit met de --proxy-cert opgegeven parameter:

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

Clusterverbinding controleren

Voer de volgende opdracht uit:

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

Uitvoer:

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

Notitie

Na onboarding van het cluster duurt het ongeveer 5 tot 10 minuten voordat de clustermetagegevens (clusterversie, agentversie, aantal knooppunten, enzovoort) worden weergegeven op de overzichtspagina van de Kubernetes-resource met Azure Arc in Azure Portal.

Tip

Zie Verbindingsproblemen vaststellen voor Kubernetes-clusters met Azure Arc voor hulp bij het oplossen van problemen bij het verbinden van uw cluster.

Azure Arc-agents voor Kubernetes weergeven

Kubernetes met Azure Arc implementeert verschillende agents in de azure-arc naamruimte.

  1. Bekijk deze implementaties en pods met behulp van:

    kubectl get deployments,pods -n azure-arc
    
  2. Controleer of alle pods een Running status hebben.

    Uitvoer:

     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
    

Zie het overzicht van de Kubernetes-agent met Azure Arc voor meer informatie over deze agents.

Resources opschonen

U kunt de Kubernetes-resource met Azure Arc, alle bijbehorende configuratieresources en agents die op het cluster worden uitgevoerd, verwijderen met behulp van Azure CLI met behulp van de volgende opdracht:

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

Als het verwijderingsproces mislukt, gebruikt u de volgende opdracht om verwijdering af te dwingen (toevoegen -y als u de bevestigingsprompt wilt omzeilen):

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

Deze opdracht kan ook worden gebruikt als u problemen ondervindt bij het maken van een nieuwe clusterimplementatie (omdat eerder gemaakte resources niet volledig worden verwijderd).

Notitie

Als u de Kubernetes-resource met Azure Arc verwijdert met behulp van Azure Portal, worden alle gekoppelde configuratieresources verwijderd, maar worden geen agents verwijderd die op het cluster worden uitgevoerd. Best practice is om de Kubernetes-resource met Azure Arc te verwijderen in az connectedk8s delete plaats van de resource te verwijderen in Azure Portal.

Volgende stappen