Zelfstudie: Een Linux-app implementeren
Van toepassing op: AKS in Azure Stack HCI 22H2, AKS op Windows Server
In deze zelfstudie wordt beschreven hoe u een app met meerdere containers implementeert die een webfront-end en een Redis-database-exemplaar bevat op uw Kubernetes-cluster in AKS die is ingeschakeld door Azure Arc. U leert ook hoe u uw app kunt testen en schalen.
In deze zelfstudie wordt ervan uitgegaan dat u basiskennis hebt van Kubernetes-concepten. Zie Kernconcepten van Kubernetes voor meer informatie.
Voordat u begint
Controleer of u de volgende vereisten hebt:
- Een AKS-cluster met ten minste één Linux-werkknooppunt dat actief is.
- Een kubeconfig-bestand voor toegang tot het cluster.
- De AksHci PowerShell-module is geïnstalleerd. Zie Install-AksHci voor meer informatie.
Wanneer u de zelfstudieprocedures uitvoert:
- Voer de opdrachten uit in een PowerShell-venster dat is geopend met beheerdersbevoegdheden.
- Zorg ervoor dat besturingssysteemspecifieke workloads op de juiste containerhost terechtkomen. Als uw Kubernetes-cluster een combinatie van Linux- en Windows-werkknooppunten heeft, kunt u knooppuntkiezers of taints en toleranties gebruiken. Zie knooppuntkiezers en taints en toleranties gebruiken voor meer informatie.
Notitie
Het implementeren van een doelcluster dat een netwerk deelt met een ander doelcluster kan leiden tot IP-adresconflicten van de load balancer.
IP-adresconflicten kunnen optreden als u twee workloads implementeert die gebruikmaken van verschillende poorten in doelclusters die hetzelfde AksHciClusterNetwork
object delen. Vanwege de manier waarop de IP-adressen en poorttoewijzingen worden toegewezen binnen de ha-proxy, kan dit leiden tot toewijzing van dubbele IP-adressen. Als dit gebeurt, kunnen een of beide workloads willekeurige netwerkverbindingsproblemen ondervinden totdat u uw workloads opnieuw implementeert. Wanneer u uw workloads opnieuw implementeert, kunt u dezelfde poort gebruiken, waarmee een SERVICE-IP-adres wordt toegewezen aan elke workload, of u kunt uw workloads opnieuw implementeren op doelclusters die verschillende AksHciClusterNetwork
objecten gebruiken.
De app implementeren
Een Kubernetes-manifestbestand definieert een gewenste status voor het cluster, zoals welke containerinstallatiekopieën moeten worden uitgevoerd. In deze zelfstudie wordt een manifest gebruikt om alle objecten te maken die nodig zijn om de Azure-stem-app uit te voeren. Dit manifest bevat twee Kubernetes-implementaties: een voor de Azure Vote Python-voorbeeld-apps en de andere voor een Redis-exemplaar. Er worden ook twee Kubernetes-services gemaakt: een interne service voor het Redis-exemplaar en een externe service voor toegang tot de Azure Vote-app via internet.
Creatie een bestand met de naam azure-vote.yaml en kopieer/plak de volgende YAML-definitie:
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
Implementeer de app met behulp van de kubectl apply
opdracht en geef de naam van uw YAML-manifest op:
kubectl apply -f azure-vote.yaml
In de volgende voorbeelduitvoer ziet u implementaties en services die zijn gemaakt:
deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created
De app testen
Wanneer de app wordt uitgevoerd, maakt een Kubernetes-service de app-front-end beschikbaar op internet. Dit proces kan enkele minuten duren.
Als u de voortgang wilt bewaken, gebruikt u de kubectl get service
opdracht met het --watch
argument :
kubectl get service azure-vote-front --watch
In eerste instantie wordt het EXTERNAL-IP-adres voor de service azure-vote-front weergegeven als in behandeling:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 22m
Wanneer het EXTERNAL-IP-adres verandert van in behandeling in een daadwerkelijk openbaar IP-adres, gebruikt u CTRL+C om het kubectl
watch proces te stoppen. In de volgende voorbeelduitvoer ziet u een geldig openbaar IP-adres dat aan de service is toegewezen:
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
Open een webbrowser naar het externe IP-adres van uw service om de Azure Vote-app te zien.
Toepassingspods schalen
We hebben één replica van de front-end en redis-instantie van de Azure Voting App gemaakt. Als u het aantal en de status van pods in uw cluster wilt zien, gebruikt u de kubectl get
opdracht:
kubectl get pods -n default
In het volgende voorbeeld van uitvoer ziet u één pod voor de front-end en één voor de back-end:
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
Als u het aantal pods in de implementatie azure-vote-front wilt wijzigen, gebruikt u de kubectl scale
opdracht . In het volgende voorbeeld wordt het aantal pods voor de front-end verhoogd naar 5:
kubectl scale --replicas=5 deployment/azure-vote-front
Voer opnieuw uit kubectl get pods
om te controleren of er extra pods zijn gemaakt. Na ongeveer een minuut zijn de extra pods beschikbaar in uw cluster:
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
Volgende stappen
Azure Monitor gebruiken om uw cluster en toepassing te bewaken
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor