Dela via


Skapa Kubernetes-kluster med Hjälp av Azure CLI

Gäller för: Azure Local, version 23H2

Den här artikeln beskriver hur du skapar Kubernetes-kluster i Azure Local med hjälp av Azure CLI. Arbetsflödet är följande:

  1. Skapa ett Kubernetes-kluster i Azure Local, version 23H2 med Hjälp av Azure CLI. Klustret är Azure Arc-anslutet som standard.
  2. När du skapar klustret tillhandahåller du en Microsoft Entra-grupp som innehåller listan över Microsoft Entra-användare med Åtkomst till Kubernetes-klusteradministratör.
  3. Få åtkomst till klustret med kubectl och ditt Microsoft Entra-ID.
  4. Kör ett exempelprogram för flera containrar med en webbklientdel och en Redis-instans i klustret.

Innan du börjar

  • Innan du börjar kontrollerar du att du har följande information från din lokala infrastrukturadministratör:
    • Azure-prenumerations-ID – Azure-prenumerations-ID där Azure Local används för distribution och registrering.
    • Anpassat plats-ID – Azure Resource Manager-ID för den anpassade platsen. Den anpassade platsen konfigureras under distributionen av det lokala Azure-klustret. Infrastrukturadministratören bör ge dig Resource Manager-ID:t för den anpassade platsen. Den här parametern krävs för att skapa Kubernetes-kluster. Du kan också hämta Resource Manager-ID:t med , az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsvom infrastrukturadministratören tillhandahåller ett anpassat platsnamn och resursgruppsnamn.
    • Nätverks-ID – Azure Resource Manager-ID för det lokala logiska Azure-nätverket som skapats enligt dessa steg. Administratören bör ge dig ID:t för det logiska nätverket. Den här parametern krävs för att skapa Kubernetes-kluster. Du kan också hämta Azure Resource Manager-ID:t med om az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv du känner till resursgruppen där det logiska nätverket skapades.
  • Du kan köra stegen i den här artikeln på en lokal utvecklingsdator för att skapa ett Kubernetes-kluster i din lokala fjärrdistribution av Azure. Kontrollera att du har den senaste versionen av Az CLI på utvecklingsdatorn. Du kan också välja att uppgradera din Az CLI-version med hjälp av az upgrade.
  • Om du vill ansluta till Kubernetes-klustret var du än befinner dig skapar du en Microsoft Entra-grupp och lägger till medlemmar i den. Alla medlemmar i Microsoft Entra-gruppen har klusteradministratörsåtkomst till klustret. Se till att lägga till dig själv som medlem i Microsoft Entra-gruppen. Om du inte lägger till dig själv kan du inte komma åt Kubernetes-klustret med kubectl. Mer information om hur du skapar Microsoft Entra-grupper och lägger till användare finns i Hantera Microsoft Entra-grupper och gruppmedlemskap.
  • Ladda ned och installera kubectl på utvecklingsdatorn. Med kubernetes-kommandoradsverktyget kubectl kan du köra kommandon mot Kubernetes-kluster. Du kan använda kubectl för att distribuera program, inspektera och hantera klusterresurser och visa loggar.

Installera Azure CLI-tillägget

Kör följande kommando för att installera nödvändiga Azure CLI-tillägg:

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

Skapa ett Kubernetes-kluster

az aksarc create Använd kommandot för att skapa ett Kubernetes-kluster i AKS Arc. Kontrollera att du loggar in på Azure innan du kör det här kommandot. Om du har flera Azure-prenumerationer väljer du lämpligt prenumerations-ID med kommandot 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 

Efter några minuter slutförs kommandot och returnerar JSON-formaterad information om klustret.

Kommentar

  • SSH-nyckelvärdet är den offentliga nyckeln för åtkomst till noder i det etablerade klustret. Som standard finns den här nyckeln på ~/.ssh/id_rsa.pub. Du kan ange en annan plats med hjälp av parametern --ssh-key-value när klustret skapas.
  • Parametern --generate-ssh-keys krävs om det inte finns någon befintlig SSH-nyckel på den lokala datorn. Om du inte tar med den här parametern när klustret skapas och det inte finns någon SSH-nyckel får du ett felmeddelande.
  • Om du redan har en SSH-nyckel på den lokala datorn återanvänder AKS-klustret den nyckeln. I det här fallet har det ingen effekt att --generate-ssh-keysange , eller utelämna den parametern.

Viktigt!

Om du vill använda Azure RBAC eller arbetsbelastningsidentitet för ett AKS-kluster måste du skicka de parametrar som krävs när klustret skapas med Hjälp av Azure CLI. För närvarande stöds inte uppdatering av ett befintligt AKS-kluster för att aktivera arbetsbelastningsidentitet och/eller Azure RBAC. Mer information finns i Använda Azure RBAC för Kubernetes-auktorisering eller Distribuera och konfigurera arbetsbelastningsidentitet för klustret.

Ansluta till Kubernetes-klustret

Nu kan du ansluta till kubernetes-klustret genom att köra az connectedk8s proxy kommandot från utvecklingsdatorn. Kontrollera att du loggar in på Azure innan du kör det här kommandot. Om du har flera Azure-prenumerationer väljer du lämpligt prenumerations-ID med kommandot az account set .

Det här kommandot laddar ned kubeconfig för ditt Kubernetes-kluster till utvecklingsdatorn och öppnar en proxyanslutningskanal till ditt lokala Kubernetes-kluster. Kanalen är öppen så länge kommandot körs. Låt det här kommandot köras så länge du vill komma åt klustret. Om tidsgränsen överskrids stänger du CLI-fönstret, öppnar ett nytt och kör sedan kommandot igen.

Du måste ha deltagarbehörighet för resursgruppen som är värd för Kubernetes-klustret för att kunna köra följande kommando:

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

Förväntad utdata:

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.

Håll den här sessionen igång och anslut till ditt Kubernetes-kluster från en annan terminal/kommandotolk. Kontrollera att du kan ansluta till kubernetes-klustret genom att köra kommandot kubectl get. Det här kommandot returnerar en lista över klusternoderna:

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

I följande utdataexempel visas noden som skapades i föregående steg. Kontrollera att nodstatusen är Klar:

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

Distribuera programmet

En Kubernetes-manifestfil definierar ett klusters önskade tillstånd, till exempel vilka containeravbildningar som ska köras.

Du kan använda ett manifest för att skapa alla objekt som behövs för att köra Azure Vote-programmet. Det här manifestet innehåller två Kubernetes-distributioner:

  • Azure Vote Python-exempelprogram.
  • En Redis-instans.

Två Kubernetes-tjänster skapas också:

  • En intern tjänst för Redis-instansen.
  • En extern tjänst för åtkomst till Azure Vote-programmet från Internet.

Skapa en fil med namnet azure-vote.yaml och kopiera i följande 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

Distribuera programmet med kommandot kubectl apply och ange namnet på din YAML:

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

Följande exempelutdata visar distributioner och tjänster som har skapats:

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

Testa programmet

När programmet körs exponerar en Kubernetes-tjänst programklientdelen på Internet. Den här processen kan ta ett par minuter att slutföra.

Övervaka förloppet med hjälp av kommandot kubectl get service med --watch argumentet .

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

EXTERNA IP-utdata för tjänsten azure-vote-front visas inledningsvis som väntande.

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

När DEN EXTERNA IP-adressen ändras från väntande till en faktisk offentlig IP-adress använder du CTRL-C för att stoppa kubectl watch-processen. Följande exempelutdata visar en giltig offentlig IP-adress som har tilldelats tjänsten:

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

Om du vill se hur Azure Vote-appen fungerar i praktiken så öppnar du en webbläsare till den externa IP-adressen för din tjänst.

Ta bort klustret

az aksarc delete Kör kommandot för att rensa klustret som du skapade:

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

Nästa steg