Snabbstart: Anslut ett befintligt Kubernetes-kluster att Azure Arc

I den här snabbstarten lär du dig fördelarna med Azure Arc-aktiverad Kubernetes och hur du ansluter ett befintligt Kubernetes-kluster till Azure Arc. En konceptuell titt på hur du ansluter kluster till Azure Arc finns i artikeln Azure Arc kubernetes-agentarkitektur.

Om du inte har en Azure-prenumerationkan du skapa ett kostnads fritt konto innan du börjar.

Förutsättningar

  • Installera eller uppgradera Azure CLI till version >= 2.16.0

  • Installera connectedk8s Azure CLI-tillägget för version >= 1.2.0:

    az extension add --name connectedk8s
    
  • Logga in på Azure CLI med den identitet (användare eller tjänstens huvudnamn) som du vill använda för att ansluta klustret till Azure Arc.

    • Den identitet som används måste minst ha läs- och skrivbehörighet för den Azure Arc Kubernetes-resurstypen ( Microsoft.Kubernetes/connectedClusters ).
    • Den inbyggda Kubernetes-Azure Arc Onboarding-rollen är användbar för storskalig registrering eftersom den har de detaljerade behörigheter som krävs för att endast ansluta kluster till Azure Arc. Den här rollen har inte behörighet att uppdatera, ta bort eller ändra andra kluster eller andra Azure-resurser.
  • Ett igång kubernetes-kluster. Om du inte har något kan du skapa ett kluster med något av följande alternativ:

    • Kubernetes i Docker (KIND)

    • Skapa ett Kubernetes-kluster med Docker för Mac eller Windows

    • Självstyrt Kubernetes-kluster med kluster-API

    • Om du vill ansluta ett OpenShift-kluster till Azure Arc måste du köra följande kommando en gång i klustret innan du kör az connectedk8s connect :

      oc adm policy add-scc-to-user privileged system:serviceaccount:azure-arc:azure-arc-kube-aad-proxy-sa
      

    Anteckning

    Klustret måste ha minst en nod av operativsystemet och arkitekturtypen linux/amd64 . Kluster med endast linux/arm64 noder stöds inte ännu.

  • En kubeconfig fil och kontext som pekar på klustret.

Uppfylla nätverkskrav

Viktigt

Azure Arc-agenter kräver att följande utgående URL:er https://:443 fungerar. För *.servicebus.windows.net måste websockets aktiveras för utgående åtkomst i brandväggen och proxyn.

Slutpunkt (DNS) Beskrivning
https://management.azure.com (för Azure Cloud) https://management.usgovcloudapi.net (för Azure US Government) Krävs för att agenten ska kunna ansluta till Azure och registrera klustret.
https://<region>.dp.kubernetesconfiguration.azure.com (för Azure Cloud) https://<region>.dp.kubernetesconfiguration.azure.us (för Azure US Government) Dataplansslutpunkt för agenten för att skicka status och hämta konfigurationsinformation.
https://login.microsoftonline.com, login.windows.net (för Azure Cloud) https://login.microsoftonline.us (för Azure US Government) Krävs för att hämta och Azure Resource Manager token.
https://mcr.microsoft.com, https://*.data.mcr.microsoft.com Krävs för att hämta containeravbildningar för Azure Arc agenter.
https://gbl.his.arc.azure.com (för Azure Cloud) https://gbl.his.arc.azure.us (för Azure US Government) Krävs för att hämta den regionala slutpunkten för att hämta system tilldelade certifikat för hanterad identitet.
https://*.his.arc.azure.com (för Azure Cloud) https://usgv.his.arc.azure.us (för Azure US Government) Krävs för att hämta system tilldelade certifikat för hanterad identitet.
*.servicebus.windows.net, guestnotificationservice.azure.com, *.guestnotificationservice.azure.com, sts.windows.net För kluster Anslut för scenarier baserade på anpassad plats.
https://k8connecthelm.azureedge.net az connectedk8s connect använder Helm 3 för att Azure Arc-agenter i Kubernetes-klustret. Den här slutpunkten behövs för nedladdning av Helm-klienten för att underlätta distributionen av agentens Helm-diagram.

1. Registrera leverantörer för Azure Arc-aktiverad 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 de har registrerats bör du RegistrationState se att tillståndet för dessa namnområden ändras till Registered .

2. Skapa en resursgrupp

Kör följande kommando:

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

Utdata:

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

3. Anslut ett befintligt Kubernetes-kluster

Kör följande kommando:

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

Anteckning

Om du är inloggad i Azure CLI med hjälp av ett huvudnamn för tjänsten måste ytterligare en parameter anges för att aktivera funktionen för anpassad plats i klustret.

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

Tips

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

4a. Anslut använda en utgående proxyserver

Om klustret finns bakom en utgående proxyserver måste Azure CLI och de Azure Arc-aktiverade Kubernetes-agenterna dirigera sina begäranden via den utgående proxyservern.

  1. Ange de miljövariabler som behö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. Kör connect-kommandot med angivna proxyparametrar:

    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>
    

    Anteckning

    • Vissa nätverksbegäranden, till exempel sådana som rör tjänst-till-tjänst-kommunikation i kluster, måste separeras från den trafik som dirigeras via proxyservern för utgående kommunikation. Parametern 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 --proxy-skip-range via den utgående proxyn. Som minst ska CIDR-intervallet för tjänsterna i klustret anges som värde för den här parametern. Anta till exempel att returnerar kubectl get svc -A en lista över tjänster där alla tjänster har ClusterIP-värden i intervallet 10.0.0.0/16 . Värdet som ska anges för --proxy-skip-range är 10.0.0.0/16,kubernetes.default.svc,.svc.cluster.local,.svc sedan .
    • --proxy-http, --proxy-https och förväntas för de flesta --proxy-skip-range 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.

5. Verifiera klusteranslutningen

Kör följande kommando:

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

Utdata:

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

Anteckning

När klustret har integrering tar det cirka 5 till 10 minuter för klustermetadata (klusterversion, agentversion, antal noder osv.) att visas på översiktssidan för den Azure Arc-aktiverade Kubernetes-resursen i Azure Portal.

6. Visa Azure Arc för Kubernetes

Azure Arc-aktiverade Kubernetes distribuerar några operatorer 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 Running ett 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
     

En konceptuell översikt över dessa agenter finns här.

7. Rensa resurser

Du kan ta bort Azure Arc 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

Anteckning

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

Nästa steg

Gå vidare till nästa artikel om du vill lära dig hur du distribuerar konfigurationer till ditt anslutna Kubernetes-kluster med GitOps.