Tutorial: Bereitstellen einer Linux-App
Gilt für: AKS in Azure Stack HCI 22H2, AKS unter Windows Server
In diesem Tutorial wird beschrieben, wie Sie eine App mit mehreren Containern bereitstellen, die ein Web-Front-End und eine Redis-Datenbank instance in Ihrem Kubernetes-Cluster in AKS bereitstellt, die von Azure Arc aktiviert ist. Außerdem erfahren Sie, wie Sie Ihre App testen und skalieren.
In diesem Tutorial werden grundlegende Kenntnisse von Kubernetes-Konzepten vorausgesetzt. Weitere Informationen finden Sie unter Kubernetes-Kernkonzepte.
Voraussetzungen
Stellen Sie sicher, dass Sie über die folgenden Anforderungen verfügen:
- Ein AKS-Cluster mit mindestens einem Linux-Workerknoten, der ausgeführt wird.
- Eine kubeconfig-Datei für den Zugriff auf den Cluster.
- Das PowerShell-Modul AksHci ist installiert. Weitere Informationen finden Sie unter Install-AksHci.
Wenn Sie die Tutorialprozeduren ausführen:
- Führen Sie die Befehle in einem PowerShell-Fenster aus, das mit Administratorrechten geöffnet ist.
- Stellen Sie sicher, dass die betriebssystemspezifischen Workloads auf dem entsprechenden Containerhost verarbeitet werden. Wenn Ihr Kubernetes-Cluster über eine Mischung aus Linux- und Windows-Workerknoten verfügt, können Sie entweder Knotenselektoren oder Taints und Tolerationen verwenden. Weitere Informationen finden Sie unter Verwenden von Knotenselektoren und Taints und Toleranzen.
Hinweis
Die Bereitstellung eines Zielclusters, der ein Netzwerk mit einem anderen Zielcluster gemeinsam verwendet, kann zu IP-Adresskonflikten mit dem Lastenausgleich führen.
Ip-Adresskonflikte können auftreten, wenn Sie zwei Workloads bereitstellen, die unterschiedliche Ports in Zielclustern verwenden, die dasselbe AksHciClusterNetwork
Objekt gemeinsam nutzen. Aufgrund der Art und Weise, wie die IP-Adressen und Portzuordnungen innerhalb des Hochverfügbarkeitsproxys zugeordnet werden, kann dies zu einer Zuweisung doppelter IP-Adressen führen. In diesem Fall können bei einer oder beiden Workloads zufällige Netzwerkkonnektivitätsprobleme auftreten, bis Sie Ihre Workloads erneut bereitstellen. Wenn Sie Ihre Workloads erneut bereitstellen, können Sie entweder denselben Port verwenden, der jeder Workload eine Dienst-IP-Adresse zuweist, oder Sie können Ihre Workloads in Zielclustern, die unterschiedliche AksHciClusterNetwork
Objekte verwenden, erneut bereitstellen.
Bereitstellen der App
Eine Kubernetes-Manifestdatei definiert einen gewünschten Zustand für den Cluster, z. B. welche Containerimages ausgeführt werden sollen. In diesem Tutorial wird ein Manifest verwendet, um alle Objekte zu erstellen, die zum Ausführen der Azure-Abstimmungs-App erforderlich sind. Dieses Manifest enthält zwei Kubernetes-Bereitstellungen: eine für die Azure Vote Python-Beispiel-Apps und die andere für eine Redis-instance. Außerdem werden zwei Kubernetes-Dienste erstellt: ein interner Dienst für die Redis-instance und ein externer Dienst für den Zugriff auf die Azure Vote-App über das Internet.
Create eine Datei namens azure-vote.yaml, und kopieren/einfügen Sie die folgende 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
Stellen Sie die App mithilfe des kubectl apply
Befehls bereit, und geben Sie den Namen Ihres YAML-Manifests an:
kubectl apply -f azure-vote.yaml
Die folgende Beispielausgabe zeigt Bereitstellungen und Dienste, die erfolgreich erstellt wurden:
deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created
Testen der App
Wenn die Anwendung ausgeführt wird, macht ein Kubernetes-Dienst das Anwendungs-Front-End im Internet verfügbar. Dieser Vorgang kann einige Minuten dauern.
Verwenden Sie zum Überwachen des Fortschritts den kubectl get service
Befehl mit dem --watch
Argument:
kubectl get service azure-vote-front --watch
Zunächst wird die EXTERNAL-IP für den azure-vote-front-Dienst als ausstehend angezeigt:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 22m
Wenn sich die EXTERNAL-IP-Adresse von ausstehend zu einer tatsächlichen öffentlichen IP-Adresse ändert, verwenden Sie STRG-C, um den kubectl
watch-Prozess zu beenden. Die folgende Beispielausgabe zeigt eine gültige öffentliche IP-Adresse, die dem Dienst zugewiesen ist:
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
Öffnen Sie die externe IP-Adresse Ihres Diensts in einem Webbrowser, um die Azure-Abstimmungs-App in Aktion zu sehen.
Skalieren von Anwendungspods
Wir haben ein einzelnes Replikat des Azure Voting App-Front-End und redis instance erstellt. Um die Anzahl und den Zustand von Pods in Ihrem Cluster anzuzeigen, verwenden Sie den Befehl kubectl get
:
kubectl get pods -n default
Die folgende Beispielausgabe zeigt einen Front-End-Pod und einen 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
Um die Anzahl von Pods in der azure-vote-front-Bereitstellung zu ändern, verwenden Sie den Befehl kubectl scale
. Im folgenden Beispiel wird die Anzahl von Front-End-Pods auf 5 erhöht:
kubectl scale --replicas=5 deployment/azure-vote-front
Führen Sie erneut aus kubectl get pods
, um zu überprüfen, ob zusätzliche Pods erstellt wurden. Nach ca. einer Minute sind die zusätzlichen Pods in Ihrem Cluster verfügbar:
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
Nächste Schritte
Verwenden von Azure Monitor zum Überwachen Ihres Clusters und Ihrer Anwendung
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für