Een Linux-app implementeren
Van toepassing op: AKS op Azure Stack HCI 22H2, AKS op Windows Server
In deze handleiding wordt beschreven hoe u een app met meerdere containers implementeert die een web-front-end en een Redis-database-exemplaar bevat in uw Kubernetes-cluster in AKS waarvoor Azure Arc is ingeschakeld. U leert ook hoe u uw app kunt testen en schalen.
In deze handleiding wordt ervan uitgegaan dat u basiskennis hebt van Kubernetes-concepten. Zie Kubernetes-kernconcepten voor meer informatie.
Voordat u begint
Controleer of u over de volgende vereisten beschikt:
- 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 procedures 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 het gebruik van knooppuntkiezers en taints en toleranties voor meer informatie.
Notitie
Als u een doelcluster implementeert dat een netwerk deelt met een ander doelcluster, kan dit leiden tot conflicten met het IP-adres 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 in ha-proxy, kan dit leiden tot het toewijzen 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, die een SERVICE-IP-adres aan elke workload toewijst, 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 Vote-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 vanaf internet.
Maak 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: <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
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 front-end van de app beschikbaar op internet. Dit proces kan enkele minuten duren.
Als u de voortgang wilt controleren, 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 voor de azure-vote-front-service 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 in behandeling is voor een echt openbaar IP-adres, gebruikt u Ctrl-C om het kubectl
controleproces 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 gemaakt van de front-end van de Azure Voting App en het Redis-exemplaar. 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
Gebruik de kubectl scale
opdracht om het aantal pods in de implementatie van azure-vote-front te wijzigen. 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