Kurz: Nasazení aplikace pro Linux v hybridní službě AKS

Platí pro: AKS v Azure Stack HCI, AKS na Windows Serveru

Tento kurz popisuje, jak nasadit vícekontejnerovou aplikaci, která obsahuje webový front-end a instanci databáze Redis, do clusteru Azure Kubernetes Service (AKS) v hybridním prostředí AKS. Dozvíte se také, jak aplikaci otestovat a škálovat.

Tento kurz předpokládá základní znalost konceptů Kubernetes. Další informace najdete v tématu Základní koncepty Kubernetes pro hybridní AKS.

Než začnete

Ověřte, že máte připravené následující požadavky:

  • Cluster AKS s alespoň jedním linuxovým pracovním uzlem, který je spuštěný a spuštěný.
  • Soubor kubeconfig pro přístup ke clusteru.
  • Je nainstalovaný modul PowerShellu AksHci . Další informace najdete v tématu Install-AksHci.

Když budete provádět postupy kurzu:

  • Spusťte příkazy v okně PowerShellu otevřeném s oprávněními správce.
  • Ujistěte se, že úlohy specifické pro operační systém přistane na příslušném hostiteli kontejneru. Pokud má váš cluster Kubernetes kombinaci pracovních uzlů s Linuxem a Windows, můžete použít selektory uzlů nebo tainty a tolerance. Další informace najdete v tématu použití selektorů uzlů, taintů a tolerance.

Poznámka

Nasazení cílového clusteru, který sdílí síť s jiným cílovým clusterem, může vést ke konfliktům IP adres nástroje pro vyrovnávání zatížení. Ke konfliktům IP adres může dojít, pokud nasadíte dvě úlohy, které používají různé porty v cílových clusterech sdílejících stejný AksHciClusterNetwork objekt. Vzhledem k tomu, jak se IP adresy a mapování portů přidělují v rámci proxy serveru vysoké dostupnosti, může to vést k přiřazení duplicitních IP adres. Pokud k tomu dojde, u jedné nebo obou úloh dojde k náhodným problémům se síťovým připojením, dokud úlohy znovu nenasadíte. Při opětovném nasazení úloh můžete buď použít stejný port, který každé úloze přiřadí IP adresu služby, nebo můžete úlohy znovu nasadit do cílových clusterů, které používají různé AksHciClusterNetwork objekty.

Nasazení aplikace

Soubor manifestu Kubernetes definuje požadovaný stav clusteru, například které image kontejneru se mají spustit. V tomto rychlém startu se manifest používá k vytvoření všech objektů potřebných ke spuštění aplikace Azure Vote. Tento manifest zahrnuje dvě nasazení Kubernetes – jedno pro ukázkové aplikace Azure Vote v Pythonu a druhé pro instanci Redis. Vytvoří se také dvě služby Kubernetes – interní služba pro instanci Redis a externí služba pro přístup k aplikaci Azure Vote z internetu.

Vytvořte soubor s názvem azure-vote.yaml a zkopírujte následující definici 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

Nasaďte aplikaci pomocí kubectl apply příkazu a zadejte název manifestu YAML:

kubectl apply -f azure-vote.yaml

Následující příklad výstupu ukazuje úspěšně vytvořená nasazení a služby:

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

Otestování aplikace

Když aplikace běží, služba Kubernetes zpřístupní front-end aplikace na internetu. Dokončení tohoto procesu může trvat několik minut.

Pokud chcete monitorovat průběh, použijte kubectl get service příkaz s argumentem --watch .

kubectl get service azure-vote-front --watch

Na začátku se external-IP adresa služby azure-vote-front zobrazí jako čekající.

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

Když se adresa EXTERNAL-IP změní z čekající na skutečnou veřejnou IP adresu, zastavte kubectl proces sledování pomocí kombinace kláves CTRL+C. Následující příklad výstupu ukazuje platnou veřejnou IP adresu přiřazenou službě.

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

Pokud chcete vidět aplikaci Azure Vote v akci, otevřete webový prohlížeč s externí IP adresou vaší služby.

Snímek obrazovky s domovskou stránkou aplikace Azure Voting App nasazené v clusteru Kubernetes v Azure

Škálování podů aplikací

Vytvořili jsme jednu repliku front-endu aplikace Azure Voting a instance Redis. Pokud chcete zobrazit počet a stav podů v clusteru, použijte příkaz kubectl get :

kubectl get pods -n default

Následující příklad výstupu ukazuje jeden front-endový a jeden back-endový 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

Pokud chcete změnit počet podů v nasazení azure-vote-front , použijte kubectl scale příkaz . Následující příklad zvýší počet podů front-endu na 5.

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

Opětovným spuštěním kubectl get pods příkazu ověřte, že se vytvořily další pody. Přibližně po minutě budou v clusteru dostupné další pody.

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

Další kroky