Snabbstart: Anslut ett befintligt Kubernetes-kluster till Azure Arc

Kom igång med Azure Arc-aktiverade Kubernetes med hjälp av Azure CLI eller Azure PowerShell för att ansluta ett befintligt Kubernetes-kluster till Azure Arc.

En konceptuell titt på hur du ansluter kluster till Azure Arc finns i Översikt över Azure Arc-aktiverade Kubernetes-agenter. Om du vill prova saker i en exempel-/övningsupplevelse går du till Azure Arc Jumpstart.

Förutsättningar

Utöver dessa krav måste du uppfylla alla nätverkskrav för Azure Arc-aktiverade Kubernetes.

Registrera leverantörer för Azure Arc-aktiverade Kubernetes

  1. Ange följande kommandon:

    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.KubernetesConfiguration
    az provider register --namespace Microsoft.ExtendedLocation
    
  2. Övervaka registreringsprocessen. Registreringen kan ta upp till 10 minuter.

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

    När du har registrerat dig bör statusen RegistrationState för dessa namnområden ändras till Registered.

Skapa en resursgrupp

Kör följande kommando:

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

Utdata:

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

Anslut ett befintligt Kubernetes-kluster

Kör följande kommando för att ansluta klustret. Det här kommandot distribuerar Azure Arc-agenterna till klustret och installerar Helm v. 3.6.3 i .azure mappen för distributionsdatorn. Den här Helm 3-installationen används endast för Azure Arc och den tar inte bort eller ändrar tidigare installerade versioner av Helm på datorn.

I det här exemplet är klustrets namn AzureArcTest1.

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

Utdata:

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

Dricks

Kommandot ovan utan den angivna platsparametern skapar Den Azure Arc-aktiverade Kubernetes-resursen på samma plats som resursgruppen. Om du vill skapa den Azure Arc-aktiverade Kubernetes-resursen på en annan plats anger du antingen --location <region> eller -l <region> när du az connectedk8s connect kör kommandot.

Viktigt!

Om distributionen misslyckas på grund av ett timeoutfel kan du läsa felsökningsguiden för mer information om hur du löser problemet.

Anslut med hjälp av en utgående proxyserver

Om klustret ligger bakom en utgående proxyserver måste begäranden dirigeras via den utgående proxyservern.

  1. På distributionsdatorn anger du de miljövariabler som krävs för att Azure CLI ska kunna använda den utgående proxyservern:

    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. I Kubernetes-klustret kör du kommandot connect med de proxy-https parametrar och proxy-http som angetts. Om proxyservern har konfigurerats med både HTTP och HTTPS ska du använda --proxy-http för HTTP-proxyn och --proxy-https för HTTPS-proxyn. Om proxyservern bara använder HTTP kan du använda det värdet för båda parametrarna.

    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>
    

Kommentar

  • Vissa nätverksbegäranden, till exempel de som involverar tjänst-till-tjänst-kommunikation i klustret, måste separeras från den trafik som dirigeras via proxyservern för utgående kommunikation. Parametern --proxy-skip-range kan användas för att ange CIDR-intervallet och slutpunkterna på ett kommaavgränsat sätt så att all kommunikation från agenterna till dessa slutpunkter inte går via den utgående proxyn. CIDR-intervallet för tjänsterna i klustret ska åtminstone anges som värde för den här parametern. Anta till exempel att kubectl get svc -A returnerar en lista över tjänster där alla tjänster har ClusterIP-värden i intervallet 10.0.0.0/16. Sedan är 10.0.0.0/16,kubernetes.default.svc,.svc.cluster.local,.svcvärdet som ska anges för --proxy-skip-range .
  • --proxy-http, --proxy-httpsoch --proxy-skip-range förväntas för de flesta utgående proxymiljöer. --proxy-cert krävs endast om du behöver mata in betrodda certifikat som förväntas av proxyn i det betrodda certifikatarkivet för agentpoddar.
  • Den utgående proxyn måste konfigureras för att tillåta websocket-anslutningar.

För utgående proxyservrar där endast ett betrott certifikat behöver tillhandahållas utan proxyserverns slutpunktsindata, az connectedk8s connect kan köras med bara de --proxy-cert angivna indata. Om flera betrodda certifikat förväntas kan den kombinerade certifikatkedjan anges i en enda fil med hjälp av parametern --proxy-cert .

Kommentar

  • --custom-ca-cert är ett alias för --proxy-cert. Båda parametrarna kan användas omväxlande. Om båda parametrarna skickas i samma kommando respekteras den som skickades sist.

Kör kommandot connect med den angivna parametern --proxy-cert :

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

Verifiera klusteranslutning

Kör följande kommando:

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

Utdata:

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

Kommentar

När klustret har registrerats tar det cirka 5 till 10 minuter innan klustermetadata (klusterversion, agentversion, antal noder och så vidare) visas på översiktssidan för den Azure Arc-aktiverade Kubernetes-resursen i Azure-portalen.

Dricks

Hjälp med att felsöka problem när du ansluter klustret finns i Diagnostisera anslutningsproblem för Azure Arc-aktiverade Kubernetes-kluster.

Visa Azure Arc-agenter för Kubernetes

Azure Arc-aktiverade Kubernetes distribuerar flera agenter till azure-arc namnområdet.

  1. Visa dessa distributioner och poddar med hjälp av:

    kubectl get deployments,pods -n azure-arc
    
  2. Kontrollera att alla poddar är i ett Running tillstånd.

    Utdata:

     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
    

Mer information om dessa agenter finns i Översikt över Azure Arc-aktiverade Kubernetes-agenter.

Rensa resurser

Du kan ta bort Den Azure Arc-aktiverade Kubernetes-resursen, eventuella associerade konfigurationsresurser och alla agenter som körs i klustret med hjälp av Azure CLI med hjälp av följande kommando:

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

Om borttagningsprocessen misslyckas använder du följande kommando för att framtvinga borttagning (lägga -y till om du vill kringgå bekräftelseprompten):

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

Det här kommandot kan också användas om du får problem när du skapar en ny klusterdistribution (på grund av att tidigare skapade resurser inte tas bort helt).

Kommentar

Om du tar bort den Azure Arc-aktiverade Kubernetes-resursen med azure-portalen tas alla associerade konfigurationsresurser bort, men inga agenter som körs i klustret tas bort. Bästa praxis är att ta bort Den Azure Arc-aktiverade Kubernetes-resursen med i az connectedk8s delete stället för att ta bort resursen i Azure-portalen.

Nästa steg