Samouczek: wdrażanie aplikacji systemu Linux w usłudze Azure Kubernetes Service na Azure Stack HCLTutorial: Deploy Linux applications in Azure Kubernetes Service on Azure Stack HCI

Dotyczy: AKS na Azure Stack HCL, AKS Runtime w systemie Windows Server 2019 DatacenterApplies to: AKS on Azure Stack HCI, AKS runtime on Windows Server 2019 Datacenter

W tym samouczku wdrożono aplikację obejmującą wiele kontenerów obejmującą fronton sieci Web i wystąpienie bazy danych Redis w Azure Stack usłudze Azure Kubernetes w ramach klastra.In this tutorial, you deploy a multi-container application that includes a web front end and a Redis database instance in your Azure Kubernetes Service on Azure Stack HCI cluster. Zobaczysz, jak przetestować i skalować aplikację.You then see how to test and scale your application.

W tym samouczku założono podstawową wiedzę na temat koncepcji Kubernetes.This tutorial assumes a basic understanding of Kubernetes concepts. Aby uzyskać więcej informacji, zobacz Kubernetes podstawowe pojęcia dotyczące usługi Azure Kubernetes Service na Azure Stack HCL.For more information, see Kubernetes core concepts for Azure Kubernetes Service on Azure Stack HCI.

Przed rozpoczęciemBefore you begin

Sprawdź, czy masz gotowe do spełnienia następujące wymagania:Verify you have the following requirements ready:

  • Usługa Azure Kubernetes w klastrze rozAzure Stackej HCL z co najmniej jednym węzłem roboczym Linux, który jest uruchomiony.An Azure Kubernetes Service on Azure Stack HCI cluster with at least one Linux worker node that is up and running.
  • Plik kubeconfig do uzyskiwania dostępu do klastra.A kubeconfig file to access the cluster.
  • Zainstalowano usługę Azure Kubernetes na Azure Stack module programu PowerShell narzędzia HCL.Have the Azure Kubernetes Service on Azure Stack HCI PowerShell module installed.
  • Uruchom polecenia w tym dokumencie w oknie administracyjnym programu PowerShell.Run the commands in this document in a PowerShell administrative window.
  • Upewnij się, że obciążenia specyficzne dla systemu operacyjnego są użytkowane na odpowiednim hoście kontenera.Ensure that OS-specific workloads land on the appropriate container host. Jeśli masz klaster Kubernetes z mieszanymi węzłami systemu Linux i Windows, możesz użyć selektorów lub przypisań węzłów oraz wartości dopuszczalnych.If you have a mixed Linux and Windows worker nodes Kubernetes cluster, you can either use node selectors or taints and tolerations. Aby uzyskać więcej informacji, zobacz Używanie selektorów węzłów iich przyniesień i tolerowania.For more information, see using node selectors and taints and tolerations.

Wdrażanie aplikacjiDeploy the application

Plik manifestu platformy Kubernetes definiuje żądany stan klastra, w tym informacje o obrazach kontenera do uruchomienia.A Kubernetes manifest file defines a desired state for the cluster, such as what container images to run. W tym przewodniku szybki start manifest służy do tworzenia wszystkich obiektów wymaganych do uruchomienia aplikacji do głosowania na platformie Azure.In this quickstart, a manifest is used to create all objects needed to run the Azure vote application. Ten manifest obejmuje dwa wdrożenia platformy Kubernetes — jedno dla aplikacji Azure Vote w języku Python i jedno dla wystąpienia usługi Redis.This manifest includes two Kubernetes deployments - one for the sample Azure Vote Python applications, and the other for a Redis instance. Tworzone są również dwie usługi Kubernetes — wewnętrzna usługa dla wystąpienia Redis oraz zewnętrzna usługa do uzyskiwania dostępu do aplikacji do głosowania platformy Azure z Internetu.Two Kubernetes services are also created - an internal service for the Redis instance, and an external service to access the Azure Vote application from the internet.

Utwórz plik o nazwie azure-vote.yaml i skopiuj go do poniższej definicji YAML.Create a file named azure-vote.yaml and copy in the following YAML definition.

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:
        "beta.kubernetes.io/os": linux
      containers:
      - name: azure-vote-back
        image: redis
        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:
        "beta.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

Wdróż aplikację przy użyciu kubectl apply polecenia i określ nazwę manifestu YAML:Deploy the application using the kubectl apply command and specify the name of your YAML manifest:

kubectl apply -f azure-vote.yaml

Następujące przykładowe dane wyjściowe przedstawiają pomyślnie utworzone wdrożenia i usługi:The following example output shows the Deployments and Services created successfully:

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

Testowanie aplikacjiTest the application

Podczas uruchamiania aplikacji usługa Kubernetes uwidacznia fronton aplikacji w Internecie.When the application runs, a Kubernetes service exposes the application front end to the internet. Ten proces może potrwać kilka minut.This process can take a few minutes to complete.

Aby monitorować postęp, użyj kubectl get service polecenia z --watch argumentem.To monitor progress, use the kubectl get service command with the --watch argument.

kubectl get service azure-vote-front --watch

Początkowo adres EXTERNAL-IP dla usługi azure-vote-front jest wyświetlany jako oczekujący.Initially the EXTERNAL-IP for the azure-vote-front service is shown as pending.

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

Gdy dla adresu EXTERNAL-IP wartość oczekujący zmieni się na rzeczywisty publiczny adres IP, naciśnij klawisze CTRL-C, aby zatrzymać proces śledzenia narzędzia kubectl.When the EXTERNAL-IP address changes from pending to an actual public IP address, use CTRL-C to stop the kubectl watch process. Następujące przykładowe dane wyjściowe przedstawiają prawidłowy publiczny adres IP przypisany do usługi:The following example output shows a valid public IP address assigned to the service:

NAME               TYPE           CLUSTER-IP   EXTERNAL-IP     PORT(S)        AGE
azure-vote-front   LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   24m

Aby wyświetlić działającą aplikację Azure Vote, otwórz zewnętrzny adres IP usługi w przeglądarce internetowej.To see the Azure Vote app in action, open a web browser to the external IP address of your service.

Obraz przedstawiający klaster Kubernetes na platformie Azure

Skaluj zasobniki aplikacjiScale application pods

Utworzyliśmy jedną replikę wystąpienia frontonu głosu i usługi Redis.We have created a single replica of the Azure Vote front end and Redis instance. Aby zobaczyć liczbę i stan numerów w klastrze, użyj kubectl get polecenia w następujący sposób:To see the number and state of pods in your cluster, use the kubectl get command as follows:

kubectl get pods -n default

Poniższe przykładowe dane wyjściowe przedstawiają jeden fronton poniżej i jeden zaplecza pod:The following example output shows one front end pod and one back-end pod:

NAME                                READY     STATUS    RESTARTS   AGE
azure-vote-back-6bdcb87f89-g2pqg    1/1       Running   0          25m
azure-vote-front-84c8bf64fc-cdq86   1/1       Running   0          25m

Aby zmienić liczbę zasobników we wdrożeniu z przodu platformy Azure , użyj kubectl scale polecenia.To change the number of pods in the azure-vote-front deployment, use the kubectl scale command. Poniższy przykład zwiększa liczbę zasobników frontonu do 5:The following example increases the number of front end pods to 5:

kubectl scale --replicas=5 deployment/azure-vote-front

Uruchom kubectl get pods ponownie, aby sprawdzić, czy zostały utworzone dodatkowe zasobniki.Run kubectl get pods again to verify that additional pods have been created. Po upływie około minuty dodatkowe zasobniki będą dostępne w Twoim klastrze:After a minute or so, the additional pods are available in your cluster:

kubectl get pods -n default

Name                                READY   STATUS    RESTARTS   AGE
azure-vote-back-6bdcb87f89-g2pqg    1/1     Running   0          31m
azure-vote-front-84c8bf64fc-cdq86   1/1     Running   0          31m
azure-vote-front-84c8bf64fc-56h64   1/1     Running   0          80s
azure-vote-front-84c8bf64fc-djkp8   1/1     Running   0          80s
azure-vote-front-84c8bf64fc-jmmvs   1/1     Running   0          80s
azure-vote-front-84c8bf64fc-znc6z   1/1     Running   0          80s

Następne krokiNext steps