Delen via


Kubernetes-clusters maken met behulp van Azure CLI

Van toepassing op: Azure Local, versie 23H2

In dit artikel wordt beschreven hoe u Kubernetes-clusters maakt in Azure Local met behulp van Azure CLI. De werkstroom is als volgt:

  1. Maak een Kubernetes-cluster in Azure Local, versie 23H2 met behulp van Azure CLI. Het cluster is standaard verbonden met Azure Arc.
  2. Tijdens het maken van het cluster geeft u een Microsoft Entra-groep op die de lijst met Microsoft Entra-gebruikers bevat met toegang tot Kubernetes-clusterbeheerders.
  3. Open het cluster met kubectl en uw Microsoft Entra-id.
  4. Voer een voorbeeldtoepassing met meerdere containers uit met een webfront-end en een Redis-exemplaar in het cluster.

Voordat u begint

  • Voordat u begint, moet u de volgende gegevens van uw on-premises infrastructuurbeheerder hebben:
    • Azure-abonnements-id : de Azure-abonnements-id waar Azure Local wordt gebruikt voor implementatie en registratie.
    • Aangepaste locatie-id : Azure Resource Manager-id van de aangepaste locatie. De aangepaste locatie wordt geconfigureerd tijdens de implementatie van het lokale Azure-cluster. De infrastructuurbeheerder moet u de Resource Manager-id van de aangepaste locatie geven. Deze parameter is vereist om Kubernetes-clusters te maken. U kunt ook de Resource Manager-id ophalen met behulp van az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv, als de infrastructuurbeheerder een aangepaste locatienaam en resourcegroepnaam biedt.
    • Netwerk-id : Azure Resource Manager-id van het logische Azure-netwerk dat is gemaakt volgens deze stappen. Uw beheerder moet u de id van het logische netwerk geven. Deze parameter is vereist om Kubernetes-clusters te maken. U kunt ook de Azure Resource Manager-id ophalen met behulp van az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv de resourcegroep waarin het logische netwerk is gemaakt.
  • U kunt de stappen in dit artikel uitvoeren op een lokale ontwikkelcomputer om een Kubernetes-cluster te maken op uw externe lokale Azure-implementatie. Zorg ervoor dat u de nieuwste versie van Az CLI op uw ontwikkelcomputer hebt. U kunt er ook voor kiezen om uw Az CLI-versie bij te werken met behulp van az upgrade.
  • Als u vanaf elke locatie verbinding wilt maken met het Kubernetes-cluster, maakt u een Microsoft Entra-groep en voegt u er leden aan toe. Alle leden in de Microsoft Entra-groep hebben toegang tot de clusterbeheerder. Zorg ervoor dat u uzelf als lid toevoegt aan de Microsoft Entra-groep. Als u uzelf niet toevoegt, hebt u geen toegang tot het Kubernetes-cluster met behulp van kubectl. Zie Microsoft Entra-groepen en groepslidmaatschap beheren voor meer informatie over het maken van Microsoft Entra-groepen en het toevoegen van gebruikers.
  • Download en installeer kubectl op uw ontwikkelcomputer. Met het opdrachtregelprogramma Kubernetes, kubectl, kunt u opdrachten uitvoeren op Kubernetes-clusters. U kunt kubectl gebruiken om toepassingen te implementeren, clusterbronnen te inspecteren en te beheren en logboeken weer te geven.

De Azure CLI-extensie installeren

Voer de volgende opdracht uit om de benodigde Azure CLI-extensies te installeren:

az extension add -n aksarc --upgrade
az extension add -n customlocation --upgrade
az extension add -n stack-hci-vm --upgrade
az extension add -n connectedk8s --upgrade

Een Kubernetes-cluster maken

Gebruik de az aksarc create opdracht om een Kubernetes-cluster te maken in AKS Arc. Zorg ervoor dat u zich aanmeldt bij Azure voordat u deze opdracht uitvoert. Als u meerdere Azure-abonnementen hebt, selecteert u de juiste abonnements-id met behulp van de opdracht az account set .

az aksarc create -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $logicnetId --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys 

Na enkele minuten is de opdracht voltooid en retourneert deze informatie over het cluster in JSON-indeling.

Notitie

  • De SSH-sleutelwaarde is de openbare sleutel voor toegang tot knooppunten in het ingerichte cluster. Deze sleutel bevindt zich standaard op ~/.ssh/id_rsa.pub. U kunt een andere locatie opgeven met behulp van de parameter tijdens het --ssh-key-value maken van het cluster.
  • De --generate-ssh-keys parameter is vereist als er geen bestaande SSH-sleutel aanwezig is op uw lokale computer. Als u deze parameter niet opneemt tijdens het maken van het cluster en er geen SSH-sleutel bestaat, wordt er een foutbericht weergegeven.
  • Als u al een SSH-sleutel op uw lokale computer hebt, wordt die sleutel opnieuw gebruikt door het AKS-cluster. In dit geval heeft het opgeven --generate-ssh-keysof weglaten van die parameter geen effect.

Belangrijk

Als u Azure RBAC of workloadidentiteit voor een AKS-cluster wilt gebruiken, moet u de vereiste parameters doorgeven tijdens het maken van het cluster met behulp van Azure CLI. Op dit moment wordt het bijwerken van een bestaand AKS-cluster om workloadidentiteit en/of Azure RBAC in te schakelen niet ondersteund. Zie Azure RBAC gebruiken voor Kubernetes-autorisatie of Workloadidentiteit implementeren en configureren voor uw cluster voor meer informatie.

Verbinding maken met het Kubernetes-cluster

U kunt nu verbinding maken met uw Kubernetes-cluster door de az connectedk8s proxy opdracht uit te voeren vanaf uw ontwikkelcomputer. Zorg ervoor dat u zich aanmeldt bij Azure voordat u deze opdracht uitvoert. Als u meerdere Azure-abonnementen hebt, selecteert u de juiste abonnements-id met behulp van de opdracht az account set .

Met deze opdracht downloadt u de kubeconfig van uw Kubernetes-cluster naar uw ontwikkelcomputer en opent u een proxyverbindingskanaal naar uw on-premises Kubernetes-cluster. Het kanaal is geopend zolang de opdracht wordt uitgevoerd. Laat deze opdracht worden uitgevoerd zolang u toegang wilt tot uw cluster. Als er een time-out optreedt, sluit u het CLI-venster, opent u een nieuw venster en voert u de opdracht opnieuw uit.

U moet inzendermachtigingen hebben voor de resourcegroep die als host fungeert voor het Kubernetes-cluster om de volgende opdracht uit te voeren:

az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config

Verwachte uitvoer:

Proxy is listening on port 47011
Merged "aks-workload" as current context in .\\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using
kubeconfig at .\\aks-arc-kube-config
Press Ctrl+C to close proxy.

Houd deze sessie actief en maak verbinding met uw Kubernetes-cluster vanaf een andere terminal-/opdrachtprompt. Controleer of u verbinding kunt maken met uw Kubernetes-cluster door de opdracht kubectl get uit te voeren. Met deze opdracht wordt een lijst met de clusterknooppunten geretourneerd:

kubectl get node -A --kubeconfig .\aks-arc-kube-config

In het volgende uitvoervoorbeeld ziet u het knooppunt dat in de vorige stappen is gemaakt. Zorg ervoor dat de status van het knooppunt gereed is:

NAME             STATUS ROLES                AGE VERSION
moc-l0ttdmaioew  Ready  control-plane,master 34m v1.24.11
moc-ls38tngowsl  Ready  <none>               32m v1.24.11

De toepassing implementeren

Een Kubernetes-manifestbestand definieert de gewenste status van een cluster, zoals welke containerinstallatiekopieën moeten worden uitgevoerd.

U kunt een manifest gebruiken om alle objecten te maken die nodig zijn om de Azure Vote-toepassing uit te voeren. Dit manifest bevat twee Kubernetes-implementaties:

  • De Azure Vote Python-voorbeeldtoepassingen.
  • Een Redis-exemplaar.

Er worden ook twee Kubernetes-services gemaakt:

  • Een interne service voor het Redis-exemplaar.
  • Een externe service voor toegang tot de Azure Vote-toepassing vanaf internet.

Maak een bestand met de naam azure-vote.yaml en kopieer het in het volgende manifest:

apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: azure-vote-back 
    spec: 
      replicas: 1 
      selector: 
        matchLabels: 
          app: azure-vote-back 
      template: 
        metadata: 
          labels: 
            app: azure-vote-back 
        spec: 
          nodeSelector: 
            "kubernetes.io/os": linux 
          containers: 
          - name: azure-vote-back 
            image: <path to image>/oss/bitnami/redis:6.0.8 
            env: 
            - name: ALLOW_EMPTY_PASSWORD 
              value: "yes" 
            resources: 
              requests: 
                cpu: 100m 
                memory: 128Mi 
              limits: 
                cpu: 250m 
                memory: 256Mi 
            ports: 
            - containerPort: 6379 
              name: redis 
    ---
    apiVersion: v1
    kind: Service 
    metadata: 
      name: azure-vote-back 
    spec: 
      ports: 
      - port: 6379 
      selector: 
        app: azure-vote-back 
    --- 
    apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: azure-vote-front 
    spec: 
      replicas: 1 
      selector: 
        matchLabels: 
          app: azure-vote-front 
      template: 
        metadata: 
          labels: 
            app: azure-vote-front 
        spec: 
          nodeSelector: 
            "kubernetes.io/os": linux 
          containers: 
          - name: azure-vote-front 
            image: <path to image>/azure-vote-front:v1 
            resources: 
              requests: 
                cpu: 100m 
                memory: 128Mi 
              limits: 
                cpu: 250m 
                memory: 256Mi 
            ports: 
            - containerPort: 80 
            env: 
            - name: REDIS 
              value: "azure-vote-back" 
    --- 
    apiVersion: v1 
    kind: Service 
    metadata: 
      name: azure-vote-front 
    spec: 
      type: LoadBalancer 
      ports: 
      - port: 80 
      selector: 
        app: azure-vote-front

Implementeer de toepassing met behulp van de opdracht kubectl apply en geef de naam van uw YAML op:

kubectl apply -f azure-vote.yaml --kubeconfig .\\aks-arc-kube-config

In de volgende voorbeelduitvoer ziet u de gemaakte implementaties en services:

deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created

De toepassing testen

Wanneer de toepassing wordt uitgevoerd, maakt een Kubernetes-service de front-end van de toepassing beschikbaar op internet. Dit proces kan enkele minuten duren.

Controleer de voortgang met behulp van de opdracht kubectl get service met het --watch argument.

kubectl get service azure-vote-front --watch --kubeconfig .\aks-arc-kube-config

De UITVOER VAN HET EXTERNE IP-adres voor de azure-vote-front-service wordt in eerste instantie weergegeven als in behandeling.

NAME             TYPE         CLUSTER-IP EXTERNAL-IP PORT(S)      AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending>   80:30572/TCP 6s

Zodra het EXTERNAL-IP-adres is gewijzigd van in behandeling tot een daadwerkelijk openbaar IP-adres, gebruikt u Ctrl-C om het kubectl-controleproces te stoppen. In de volgende voorbeelduitvoer ziet u een geldig openbaar IP-adres dat aan de service is toegewezen:

azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m

Open een webbrowser naar het externe IP-adres van uw service om de Azure Vote-app te zien.

Het cluster verwijderen

Voer de az aksarc delete opdracht uit om het cluster dat u hebt gemaakt op te schonen:

az aksarc delete --resource-group $aksclustername --name $resource_group

Volgende stappen