Samouczek: wdrażanie aplikacji systemu Linux w Azure Kubernetes Service on Azure Stack HCI

Dotyczy: AKS na platformie Azure Stack HCI, środowisko uruchomieniowe usługi AKS Windows Server 2019 Datacenter

W tym samouczku wdrożysz aplikację z wieloma kontenerami, która zawiera frontonie internetowe i wystąpienie bazy danych Redis w klastrze Azure Kubernetes Service on Azure Stack HCI klastra. Następnie zobaczysz, jak przetestować i skalować aplikację.

W tym samouczku założono, że rozumiesz pojęcia związane z platformą Kubernetes. Aby uzyskać więcej informacji, zobacz Kubernetes core concepts for Azure Kubernetes Service on Azure Stack HCI (Podstawowepojęcia dotyczące rozwiązania Kubernetes dla Azure Kubernetes Service on Azure Stack HCI ).

Zanim rozpoczniesz

Sprawdź, czy są gotowe następujące wymagania:

  • Klaster Azure Kubernetes Service on Azure Stack HCI co najmniej jednym węzłem procesu roboczego systemu Linux, który jest uruchomiony.
  • Plik kubeconfig w celu uzyskania dostępu do klastra.
  • Zainstaluj Azure Kubernetes Service on Azure Stack HCI programu PowerShell.
  • Uruchom polecenia w tym dokumencie w oknie administracyjnym programu PowerShell.
  • Upewnij się, że obciążenia specyficzne dla systemu operacyjnego trafią na odpowiednim hoście kontenera. Jeśli masz mieszany klaster Kubernetes Windows linux i węzłach roboczych, możesz użyć selektorów węzłów lub przesłonień i tolerancji. Aby uzyskać więcej informacji, zobacz using node selectors and taints and tolerations(Używanie selektorów węzłów oraz taintów i tolerancji).

Wdrażanie aplikacji

Plik manifestu platformy Kubernetes definiuje żądany stan klastra, w tym informacje o obrazach kontenera do uruchomienia. W tym przewodniku Szybki start manifest służy do tworzenia wszystkich obiektów potrzebnych do uruchomienia aplikacji do głosowania na platformie Azure. 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. Tworzone są również dwie usługi Kubernetes — wewnętrzna usługa dla wystąpienia usługi Redis i zewnętrzna usługa do uzyskiwania dostępu do aplikacji Azure Vote z Internetu.

Utwórz plik o nazwie azure-vote.yaml i skopiuj go do poniższej definicji YAML.

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ę za kubectl apply pomocą polecenia i określ nazwę manifestu YAML:

kubectl apply -f azure-vote.yaml

Następujące przykładowe dane wyjściowe przedstawiają pomyślnie utworzone wdrożenia i usługi:

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

Testowanie aplikacji

Podczas uruchamiania aplikacji usługa Kubernetes uwidacznia fronton aplikacji w Internecie. Ten proces może potrwać kilka minut.

Aby monitorować postęp, użyj kubectl get service polecenia z --watch argumentem .

kubectl get service azure-vote-front --watch

Początkowo adres EXTERNAL-IP dla usługi azure-vote-front jest wyświetlany jako oczekujący.

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 , aby zatrzymać proces śledzenia narzędzia . Następujące przykładowe dane wyjściowe przedstawiają prawidłowy publiczny adres IP przypisany do usługi:

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.

Obraz przedstawiający klaster Kubernetes na platformie Azure

Skalowanie zasobników aplikacji

Utworzono pojedynczą replikę frontu aplikacji Azure Vote i wystąpienia usługi Redis. Aby wyświetlić liczbę i stan zasobników w klastrze, użyj kubectl get polecenia w następujący sposób:

kubectl get pods -n default

Następujące przykładowe dane wyjściowe pokazują jeden zasobnik frontony i jeden zasobnik frontony:

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 azure-vote-front, użyj polecenia . Poniższy przykład zwiększa liczbę zasobników frontonie do 5:

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

Uruchom kubectl get pods ponownie, aby sprawdzić, czy zostały utworzone dodatkowe zasobniki. Po upływie około minuty dodatkowe zasobniki będą dostępne w Twoim klastrze:

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 kroki