Samouczek: wdrażanie aplikacji systemu Linux

Dotyczy: usługa AKS w usłudze Azure Stack HCI 22H2, AKS w systemie Windows Server

W tym samouczku opisano sposób wdrażania aplikacji z wieloma kontenerami, która obejmuje fronton internetowy i wystąpienie bazy danych Redis w klastrze Kubernetes w usłudze AKS włączonej przez usługę Azure Arc. Dowiesz się również, jak testować i skalować aplikację.

W tym samouczku założono podstawową wiedzę na temat pojęć związanych z platformą Kubernetes. Aby uzyskać więcej informacji, zobacz Podstawowe pojęcia dotyczące platformy Kubernetes.

Zanim rozpoczniesz

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

  • Klaster usługi AKS z co najmniej jednym węzłem procesu roboczego systemu Linux, który jest uruchomiony.
  • Plik kubeconfig umożliwiający dostęp do klastra.
  • Zainstalowano moduł AksHci programu PowerShell. Aby uzyskać więcej informacji, zobacz Install-AksHci.

Podczas wykonywania procedur samouczka:

  • Uruchom polecenia w oknie programu PowerShell otwartym z uprawnieniami administracyjnymi.
  • Upewnij się, że obciążenia specyficzne dla systemu operacyjnego są lądować na odpowiednim hoście kontenera. Jeśli klaster Kubernetes ma kombinację węzłów roboczych z systemami Linux i Windows, możesz użyć selektorów węzłów lub taints i tolerancji. Aby uzyskać więcej informacji, zobacz using node selectors and taints and tolerations (Używanie selektorów węzłów i tolerancji).

Uwaga

Wdrożenie klastra docelowego, który współudzieli sieć z innym klastrem docelowym, może prowadzić do konfliktów adresów IP modułu równoważenia obciążenia. Konflikty adresów IP mogą wystąpić w przypadku wdrażania dwóch obciążeń korzystających z różnych portów w klastrach docelowych współużytkujących ten sam AksHciClusterNetwork obiekt. Ze względu na sposób przydzielania adresów IP i mapowań portów wewnątrz serwera proxy wysokiej dostępności może prowadzić do przypisania zduplikowanych adresów IP. W takim przypadku jedno lub oba obciążenia mogą napotkać losowe problemy z łącznością sieciową do momentu ponownego wdrożenia obciążeń. Podczas ponownego wdrażania obciążeń można użyć tego samego portu, który przypisuje adres IP usługi do każdego obciążenia, lub ponownie wdrożyć obciążenia w klastrach docelowych, które używają różnych AksHciClusterNetwork obiektów.

Wdrażanie aplikacji

Plik manifestu kubernetes definiuje żądany stan klastra, taki jak obrazy kontenerów do uruchomienia. W tym samouczku użyto manifestu do utworzenia wszystkich obiektów potrzebnych do uruchomienia aplikacji do głosowania na platformie Azure. Ten manifest obejmuje dwa wdrożenia platformy Kubernetes: jedno dla przykładowych aplikacji azure Vote Python i drugie 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 usługa zewnętrzna w celu uzyskania dostępu do aplikacji Azure Vote z Internetu.

Twórca pliku o nazwie azure-vote.yaml i skopiuj/wklej następującą definicję 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ę przy użyciu kubectl apply polecenia i określ nazwę manifestu YAML:

kubectl apply -f azure-vote.yaml

W poniższych przykładowych danych wyjściowych przedstawiono wdrożenia i usługi, które zostały utworzone pomyślnie:

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

Testowanie aplikacji

Po uruchomieniu 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 argumentem --watch :

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 adres EXTERNAL-IP zmieni się z oczekujące na rzeczywisty publiczny adres IP, użyj klawiszy CTRL-C, aby zatrzymać kubectl proces watch. 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.

Zrzut ekranu przedstawiający stronę główną aplikacji azure Voting App wdrożonej w klastrze Kubernetes na platformie Azure.

Skalowanie zasobników aplikacji

Utworzyliśmy jedną replikę frontonu aplikacji do głosowania platformy Azure i wystąpienia usługi Redis. Aby wyświetlić liczbę i stan zasobników w klastrze, użyj kubectl get polecenia :

kubectl get pods -n default

Poniższe przykładowe dane wyjściowe zawierają jeden zasobnik frontonu i jeden zasobnik zaplecza:

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 kubectl scale polecenia . W poniższym przykładzie liczba zasobników frontonu jest zwiększana do 5:

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

Uruchom ponownie polecenie kubectl get pods , aby sprawdzić, czy utworzono 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

Monitorowanie klastra i aplikacji przy użyciu usługi Azure Monitor