Wdrażanie aplikacji systemu Linux

Dotyczy: usługa AKS w systemie Windows Server

W tym przewodniku opisano, jak wdrożyć aplikację wielokontenerową, która składa się z internetowego front-endu i instancji bazy danych Redis, w klastrze Kubernetes w usłudze AKS w systemie Windows Server. Dowiesz się również, jak testować i skalować aplikację.

W tym przewodniku z instrukcjami 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 masz następujące wymagania wstępne:

  • Klaster AKS z co najmniej jednym działającym węzłem roboczym z systemem Linux.
  • Plik kubeconfig, aby uzyskać dostęp do klastra.
  • Zainstalowano moduł AksHci programu PowerShell. Aby uzyskać więcej informacji, zobacz Install-AksHci.

Podczas wykonywania procedur:

Uwaga / Notatka

Wdrożenie klastra docelowego, który współdzieli 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, w jaki adresy IP i przypisania portów są przydzielane w HAProxy, może to prowadzić do przypisania duplikujących się adresów IP. W takim przypadku jedno lub oba obciążenia mogą napotkać losowe problemy z łącznością sieciową do czasu 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, na przykład które obrazy kontenerów mają być uruchomione. W tym samouczku użyto manifestu do utworzenia wszystkich obiektów wymaganych do uruchomienia aplikacji Azure vote. Ten manifest obejmuje dwa wdrożenia w Kubernetes: jedno dla przykładowych aplikacji Azure Vote napisanych w Pythonie, a drugie dla instancji Redis. Tworzone są również dwie usługi Kubernetes: usługa wewnętrzna dla instancji Redis oraz usługa zewnętrzna umożliwiająca dostęp do aplikacji Azure Vote z internetu.

Utwórz plik 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: <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

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ę ze stanu pending na rzeczywisty publiczny adres IP, użyj kombinacji klawiszy CTRL-C, aby zatrzymać działanie polecenia kubectl 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 w Azure.

Skalowanie podów aplikacji

Utworzyliśmy pojedynczą replikę frontonu aplikacji Azure Voting App oraz wystąpienia Redis. Aby wyświetlić liczbę i stan podów w klastrze, użyj polecenia kubectl get:

kubectl get pods -n default

W poniższych przykładowych danych wyjściowych przedstawiono 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 polecenia kubectl scale. Poniższy przykład zwiększa liczbę zasobników front-end do 5:

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

Uruchom ponownie kubectl get pods, aby sprawdzić, czy utworzono dodatkowe pody. Po upływie około minuty dodatkowe pody 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