Kubernetes-clusters maken met behulp van Azure CLI

Van toepassing op: Azure Stack HCI, versie 23H2

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

  1. Maak een Kubernetes-cluster in Azure Stack HCI 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 met beheerderstoegang voor kubernetes-clusters bevat.
  3. Toegang tot het cluster met behulp van 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 ervoor zorgen dat u de volgende gegevens van uw on-premises infrastructuurbeheerder hebt:
    • Azure-abonnements-id : de Azure-abonnements-id waarin Azure Stack HCI 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 Azure Stack HCI-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 de Resource Manager-id ook 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 opgeeft.
    • Netwerk-id: Azure Resource Manager id van het logische Azure Stack HCI-netwerk dat u hebt gemaakt met behulp van 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 als az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv u de resourcegroep kent 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 Azure Stack HCI-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 clusterbeheerderstoegang tot het cluster. 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 kubernetes-opdrachtregelprogramma kubectl kunt u opdrachten uitvoeren op Kubernetes-clusters. U kunt kubectl gebruiken om toepassingen te implementeren, clusterresources 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 --load-balancer-count 0  --control-plane-ip $controlplaneIP

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

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 uitvoeren zolang u toegang wilt krijgen 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 met succes 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 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: mcr.microsoft.com/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: mcr.microsoft.com/azuredocs/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 implementaties en services die zijn gemaakt:

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.

Bewaak 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 EXTERNAL-IP-uitvoer voor de service azure-vote-front 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 in een daadwerkelijk openbaar IP-adres, gebruikt u Ctrl+C om het kubectl-watch-proces 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