Snabbstart: Distribuera ett AKS-kluster (Azure Kubernetes Service) med Hjälp av Azure-portalen
Azure Kubernetes Service (AKS) är en hanterad Kubernetes-tjänst som gör att du snabbt kan distribuera och hantera kluster. I den här snabbstarten kommer du att göra följande:
- Distribuera ett AKS-kluster med hjälp av Azure-portalen.
- Kör ett exempelprogram med flera containrar med en grupp mikrotjänster och webbklientdelar som simulerar ett detaljhandelsscenario.
Kommentar
För att komma igång med att snabbt etablera ett AKS-kluster innehåller den här artikeln steg för att distribuera ett kluster med standardinställningar endast i utvärderingssyfte. Innan du distribuerar ett produktionsklart kluster rekommenderar vi att du bekantar dig med vår referensarkitektur för baslinje för att överväga hur det överensstämmer med dina affärskrav.
Innan du börjar
Den här snabbstarten förutsätter grundläggande kunskaper om Kubernetes-begrepp. Mer information finns i Viktiga koncept för Azure Kubernetes Service (AKS).
- Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
- Om du inte känner till Azure Cloud Shell kan du läsa Översikt över Azure Cloud Shell.
- Kontrollera att den identitet som du använder för att skapa klustret har lämpliga minimibehörigheter. Mer information om åtkomst och identitet för AKS finns i Åtkomst- och identitetsalternativ för Azure Kubernetes Service (AKS).
Kommentar
Azure Linux-nodpoolen är nu allmänt tillgänglig (GA). Mer information om fördelarna och distributionsstegen finns i Introduktion till Azure Linux Container Host for AKS.
Skapa ett AKS-kluster
Logga in på Azure-portalen.
På startsidan för Azure-portalen väljer du Skapa en resurs.
I avsnittet Kategorier väljer du Containrar>Azure Kubernetes Service (AKS).
På fliken Grundläggande konfigurerar du följande inställningar:
- Under Projektinformation:
- Prenumeration: Välj den Azure-prenumeration som du vill använda för det här AKS-klustret.
- Resursgrupp: Välj Skapa ny, ange ett resursgruppnamn, till exempel myResourceGroup, och välj sedan Ok. Även om du kan välja en befintlig resursgrupp rekommenderar vi att du skapar en resursgrupp för att tillfälligt vara värd för dessa resurser och undvika att påverka dina produktions- eller utvecklingsarbetsbelastningar.
- Under Klusterinformation:
Konfiguration av klustrets förinställning: Välj Dev/Test. Mer information om förinställda konfigurationer finns i Förinställningar för klusterkonfiguration i Azure-portalen.
Kubernetes-klusternamn: Ange ett klusternamn, till exempel myAKSCluster.
Region: Välj en region, till exempel USA, östra 2.
Tillgänglighetszoner: Välj Ingen.
AKS-prisnivå: Välj Kostnadsfri.
Lämna standardvärdena för de återstående inställningarna och välj Nästa.
- Under Projektinformation:
På fliken Nodpooler konfigurerar du följande inställningar:
Välj Lägg till nodpool och ange ett nodpoolnamn, till exempel nplinux.
Läge: Välj Användare.
OS SKU: Välj Ubuntu Linux.
Tillgänglighetszoner: Välj Ingen.
Låt kryssrutan Aktivera Azure Spot-instanser vara avmarkerad.
Nodstorlek: Välj Välj en storlek. På sidan Välj en VM-storlek väljer du D2s_v3 och väljer sedan Välj.
Lämna standardvärdena för de återstående inställningarna och välj Lägg till.
Välj Granska + skapa för att köra valideringen i klusterkonfigurationen. När valideringen är klar väljer du Skapa.
Det tar några minuter att skapa AKS-klustret. När distributionen är klar går du till resursen genom att välja Gå till resurs eller genom att bläddra till AKS-klusterresursgruppen och välja AKS-resursen.
Anslut till klustret
Du använder Kubernetes kommandoradsklient kubectl för att hantera Kubernetes-kluster. kubectl
är redan installerat om du använder Azure Cloud Shell. Om du inte känner till Cloud Shell kan du läsa Översikt över Azure Cloud Shell.
Om du använder Cloud Shell öppnar du det med >_
knappen överst i Azure-portalen. Om du använder PowerShell lokalt ansluter du till Azure via Connect-AzAccount
kommandot . Om du använder Azure CLI lokalt ansluter du till Azure via az login
kommandot .
Konfigurera
kubectl
för att ansluta till kubernetes-klustret med hjälp avaz aks get-credentials
kommandot . Det här kommandot laddar ned autentiseringsuppgifter och konfigurerar Kubernetes CLI för att använda dem.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Verifiera anslutningen till klustret med hjälp av
kubectl get
för att returnera en lista över klusternoderna.kubectl get nodes
Följande exempelutdata visar den enskilda nod som skapades i föregående steg. Kontrollera att nodstatusen är Klar.
NAME STATUS ROLES AGE VERSION aks-nodepool1-31718369-0 Ready agent 6m44s v1.15.10
Distribuera programmet
Du använder en manifestfil för att skapa alla objekt som krävs för att köra AKS Store-programmet. En Kubernetes-manifestfil definierar ett klusters önskade tillstånd, till exempel vilka containeravbildningar som ska köras. Manifestet innehåller följande Kubernetes-distributioner och -tjänster:
- Butiksfront: Webbprogram där kunder kan visa produkter och göra beställningar.
- Produkttjänst: Visar produktinformation.
- Ordertjänst: Gör beställningar.
- Rabbit MQ: Meddelandekö för en orderkö.
Kommentar
Vi rekommenderar inte att du kör tillståndskänsliga containrar, till exempel Rabbit MQ, utan beständig lagring för produktion. Dessa används här för enkelhetens skull, men vi rekommenderar att du använder hanterade tjänster, till exempel Azure CosmosDB eller Azure Service Bus.
Öppna en redigerare i Cloud Shell och skapa en fil med namnet
aks-store-quickstart.yaml
.Klistra in följande manifest i redigeraren:
apiVersion: apps/v1 kind: Deployment metadata: name: rabbitmq spec: replicas: 1 selector: matchLabels: app: rabbitmq template: metadata: labels: app: rabbitmq spec: nodeSelector: "kubernetes.io/os": linux containers: - name: rabbitmq image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine ports: - containerPort: 5672 name: rabbitmq-amqp - containerPort: 15672 name: rabbitmq-http env: - name: RABBITMQ_DEFAULT_USER value: "username" - name: RABBITMQ_DEFAULT_PASS value: "password" resources: requests: cpu: 10m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: rabbitmq-enabled-plugins mountPath: /etc/rabbitmq/enabled_plugins subPath: enabled_plugins volumes: - name: rabbitmq-enabled-plugins configMap: name: rabbitmq-enabled-plugins items: - key: rabbitmq_enabled_plugins path: enabled_plugins --- apiVersion: v1 data: rabbitmq_enabled_plugins: | [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0]. kind: ConfigMap metadata: name: rabbitmq-enabled-plugins --- apiVersion: v1 kind: Service metadata: name: rabbitmq spec: selector: app: rabbitmq ports: - name: rabbitmq-amqp port: 5672 targetPort: 5672 - name: rabbitmq-http port: 15672 targetPort: 15672 type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 1 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: order-service image: ghcr.io/azure-samples/aks-store-demo/order-service:latest ports: - containerPort: 3000 env: - name: ORDER_QUEUE_HOSTNAME value: "rabbitmq" - name: ORDER_QUEUE_PORT value: "5672" - name: ORDER_QUEUE_USERNAME value: "username" - name: ORDER_QUEUE_PASSWORD value: "password" - name: ORDER_QUEUE_NAME value: "orders" - name: FASTIFY_ADDRESS value: "0.0.0.0" resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi initContainers: - name: wait-for-rabbitmq image: busybox command: ['sh', '-c', 'until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;'] resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi --- apiVersion: v1 kind: Service metadata: name: order-service spec: type: ClusterIP ports: - name: http port: 3000 targetPort: 3000 selector: app: order-service --- apiVersion: apps/v1 kind: Deployment metadata: name: product-service spec: replicas: 1 selector: matchLabels: app: product-service template: metadata: labels: app: product-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: product-service image: ghcr.io/azure-samples/aks-store-demo/product-service:latest ports: - containerPort: 3002 resources: requests: cpu: 1m memory: 1Mi limits: cpu: 1m memory: 7Mi --- apiVersion: v1 kind: Service metadata: name: product-service spec: type: ClusterIP ports: - name: http port: 3002 targetPort: 3002 selector: app: product-service --- apiVersion: apps/v1 kind: Deployment metadata: name: store-front spec: replicas: 1 selector: matchLabels: app: store-front template: metadata: labels: app: store-front spec: nodeSelector: "kubernetes.io/os": linux containers: - name: store-front image: ghcr.io/azure-samples/aks-store-demo/store-front:latest ports: - containerPort: 8080 name: store-front env: - name: VUE_APP_ORDER_SERVICE_URL value: "http://order-service:3000/" - name: VUE_APP_PRODUCT_SERVICE_URL value: "http://product-service:3002/" resources: requests: cpu: 1m memory: 200Mi limits: cpu: 1000m memory: 512Mi --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancer
En uppdelning av YAML-manifestfiler finns i Distributioner och YAML-manifest.
Om du skapar och sparar YAML-filen lokalt kan du ladda upp manifestfilen till standardkatalogen i CloudShell genom att välja knappen Ladda upp/ladda ned filer och välja filen från det lokala filsystemet.
Distribuera programmet med kommandot
kubectl apply
och ange namnet på DITT YAML-manifest:kubectl apply -f aks-store-quickstart.yaml
Följande exempelutdata visar distributioner och tjänster:
deployment.apps/rabbitmq created service/rabbitmq created deployment.apps/order-service created service/order-service created deployment.apps/product-service created service/product-service created deployment.apps/store-front created service/store-front created
Testa programmet
När programmet körs så exponerar en Kubernetes-tjänst programmets klientdel mot Internet. Den här processen kan ta ett par minuter att slutföra.
Kontrollera statusen för de distribuerade poddarna med kommandot
kubectl get pods
. Kontrollera att alla poddar ärRunning
innan du fortsätter.kubectl get pods
Sök efter en offentlig IP-adress för
store-front
programmet. Övervaka förloppet med kommandotkubectl get service
med--watch
argumentet .kubectl get service store-front --watch
EXTERNA IP-utdata för
store-front
tjänsten visas inledningsvis som väntande:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4m
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 stoppakubectl
bevakningsprocessen.Följande exempelutdata visar en giltig offentlig IP-adress som har tilldelats tjänsten:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5m
Öppna en webbläsare till tjänstens externa IP-adress för att se hur Azure Store-appen fungerar.
Ta bort klustret
Om du inte planerar att gå igenom AKS-självstudieserien rensar du onödiga resurser för att undvika Azure-avgifter.
Gå till aks-klusterresursgruppen i Azure-portalen.
Välj Ta bort resursgrupp.
Ange namnet på resursgruppen som ska tas bort och välj sedan Ta bort>.
Kommentar
AKS-klustret skapades med en systemtilldelad hanterad identitet. Den här identiteten hanteras av plattformen och kräver inte borttagning.
Nästa steg
I den här snabbstarten distribuerade du ett Kubernetes-kluster och distribuerade sedan ett enkelt program med flera containrar till det. Det här exempelprogrammet är endast i demosyfte och representerar inte alla metodtips för Kubernetes-program. Vägledning om hur du skapar fullständiga lösningar med AKS för produktion finns i AKS-lösningsvägledning.
Om du vill veta mer om AKS och gå igenom ett komplett exempel på kod-till-distribution fortsätter du till självstudieserien för Kubernetes-klustret.
Azure Kubernetes Service