Dela via


Skapa Kubernetes-kluster med Hjälp av Azure CLI

Gäller för: AKS på Azure Local

Den här artikeln beskriver hur man 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 med hjälp av Azure CLI. Klustret är som standard anslutet till Azure Arc.
  2. När du skapar klustret, anger du en Microsoft Entra-grupp som innehåller listan över Microsoft Entra-användare med administratörsbehörighet för Kubernetes-kluster.
  3. Åtkomst till klustret med hjälp av kubectl och din Microsoft Entra ID.
  4. Kör en exempelapplikation med flera behållare, med ett webbgränssnitt och en Redis-instans i klustret.

Innan du börjar

  • Innan du börjar, se till att du har följande information från din lokala nätverksadministratör:
    • Azure subscription ID - Azure-abonnemangs-ID där Azure Local används för distribution och registrering.
    • Anpassad plats-ID - Azure Resource Manager-ID för den anpassade platsen. Den anpassade platsen konfigureras under distributionen av Azure Local-klustret. Din infrastrukturadministratör bör ge dig resurschefens ID för den anpassade platsen. Denna parameter krävs för att skapa Kubernetes-kluster. Du kan också få Resource Manager-ID med hjälp av az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv, om infrastrukturadministratören tillhandahåller ett anpassat platsnamn och resursgruppsnamn.
    • Network ID - Azure Resource Manager ID för det lokala logiska nätverket i Azure skapat enligt dessa steg. Din administratör bör ge dig ID:t för det logiska nätverket. Denna parameter krävs för att skapa Kubernetes-kluster. Du kan också få Azure Resource Manager-ID med hjälp av az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv om du vet vilken resursgrupp där det logiska nätverket skapades.
  • Du kan köra stegen i denna artikel på en lokal utvecklingsmaskin för att skapa ett Kubernetes-kluster på din fjärranslutna Azure Local-distribution. Se till att du har den senaste versionen av Az CLI på din utvecklingsmaskin. 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örsbehörighet 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 hjälp av kubectl. För mer information om att skapa Microsoft Entra-grupper och lägga till användare, se Hantera Microsoft Entra-grupper och gruppmedlemskap.
  • Ladda ned och installera kubectl på utvecklingsdatorn. Kubernetes kommandoradsverktyg, kubectl, gör det möjligt för dig att köra kommandon mot Kubernetes-kluster. Du kan använda kubectl för att distribuera applikationer, inspektera och hantera klusterresurser samt visa loggar.

Installera Azure CLI-extensionen

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

Varning

Installera inte följande tillägg direkt på en lokal Azure-nod. Vi rekommenderar att du installerar dem på en klientdator som du använder för att ansluta till din lokala Azure-instans.

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

Använd kommandot az aksarc create 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-abonnemang, välj det lämpliga abonnemangs-ID:t med hjälp av kommandot az account set. Med kommandot az aksarc create rekommenderar vi att du använder flaggan --validate, som validerar de inmatningsparametrar du avser att använda. När indataparametrarna har validerats kan du köra kommandot az aksarc create utan flaggan --validate för att skapa Kubernetes-klustret.

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.

Överväganden

Notera följande överväganden när du skapar en kluster:

  • SSH-nycklar är viktiga för felsökning och logginsamling. Se till att spara din privata nyckelfil för framtida användning. För att få åtkomst till noder, se Anslut till Windows- eller Linux-arbetarknoder med SSH.
  • Du kan använda en redan existerande SSH-nyckel eller konfigurera SSH-nycklar för en AKS-kluster under skapandet av klustret. Om det inte finns någon befintlig SSH-nyckel på din lokala maskin är parametern --generate-ssh-keys nödvändig. Du kan också begränsa SSH-åtkomsten genom att följa dokumentationen. Detaljerade anvisningar finns i Skapa och lagra SSH-nycklar med Azure CLI eller i Azure-portalen.
  • Om du inte inkluderar --generate-ssh-keys under klustercreation och ingen SSH-nyckel finns, får du ett felmeddelande. Om du redan har en SSH-nyckel på din lokala dator återanvänder AKS-klustret den. I det här fallet spelar det ingen roll om du anger --generate-ssh-keys eller inte.
  • Som standard lagras SSH-nyckeln på ~/.ssh/id_rsa.pub. Under klusterskapande kan du ange en alternativ plats med hjälp av parametern --ssh-key-value.

Viktigt

För att använda Azure RBAC eller arbetsbelastningsidentitet för ett AKS-kluster måste du skicka de nödvändiga parametrarna under klusteruppbyggnaden med hjälp av Azure CLI. För närvarande är det inte möjligt att uppdatera en befintlig AKS-kluster för att aktivera arbetsbelastningsidentitet och/eller Azure RBAC. För mer information, se Använd Azure RBAC för Kubernetes-autentisering eller Distribuera och konfigurera Workload Identity för din kluster.

Anslut till Kubernetes-klustret

Nu kan du ansluta till din Kubernetes-kluster genom att köra az connectedk8s proxy-kommandot från din utvecklingsdator. Se till att du loggar in på Azure innan du kör det här kommandot. Om du har flera Azure-abonnemang, välj det lämpliga abonnemangs-ID:t med hjälp av kommandot az account set.

Detta kommando laddar ner kubeconfig-filen för ditt Kubernetes-kluster till din maskin för utveckling och öppnar en proxyanslutningskanal till ditt lokala Kubernetes-kluster. Kanalen är öppen så länge kommandot körs. Låt den här kommandot köras så länge som du vill ha tillgång till din kluster. Om det tar slut på tid, stäng CLI-fönstret, öppna ett nytt och kör sedan kommandot igen.

För att kunna köra följande kommando framgångsrikt måste du ha Contributor-behörigheter på resursgruppen som är värd för Kubernetes-klustret.

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

Förväntat resultat:

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 din Kubernetes-kluster från en annan terminal/kommandotolk. Kontrollera att du kan ansluta till din Kubernetes-kluster 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

Följande utdataexempel visar noden som skapades i de tidigare stegen. Se till att nodens status är Ready:

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 och lastbalanseraren

En Kubernetes manifestfil definierar en klusters önskade tillstånd, till exempel vilka containerbilder 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-applikationen. Det här manifestet innehåller två Kubernetes-distributioner:

  • Exempel på Python-applikationer för Azure Vote.
  • En Redis-instans.

Två Kubernetes-tjänster skapas också:

  • En intern tjänst för Redis-instansen.
  • En extern tjänst för att nå Azure Vote-applikationen från internet.

Skapa en fil med namnet azure-vote.yaml, och kopiera in 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 de framgångsrikt skapade distributionerna och tjänsterna:

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

Distribuera en MetalLB-lastbalanserare så att den kan tilldela en extern IP-adress för programmets klientdel. Du kan följa de här anvisningarna distribuera MetalLB-tillägget från Azure-portalen eller använda CLI.

Testa applikationen

När applikationen körs, exponerar en Kubernetes-tjänst applikationens frontend på internet. Denna process kan ta några minuter att slutföra.

Övervaka framsteg med hjälp av kommandot kubectl get service med argumentet --watch.

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

Den EXTERNAL-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 EXTERNAL-IP adress ä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 till 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 --name $aksclustername --resource-group $resource_group

Nästa steg