Wdrażanie aplikacji systemu Linux
Dotyczy: usługa AKS w usłudze Azure Stack HCI 22H2, AKS w systemie Windows Server
W tym przewodniku opisano sposób wdrażania aplikacji z wieloma kontenerami, która obejmuje fronton internetowy i wystąpienie bazy danych Redis w klastrze Kubernetes w usłudze AKS z włączoną usługą Azure Arc. 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 usługi AKS z co najmniej jednym węzłem roboczym systemu Linux, który jest uruchomiony.
- Plik kubeconfig, aby uzyskać dostęp do klastra.
- Zainstalowano moduł AksHci programu PowerShell. Aby uzyskać więcej informacji, zobacz Install-AksHci.
Podczas wykonywania procedur:
- Uruchom polecenia w oknie programu PowerShell otwartym z uprawnieniami administracyjnymi.
- Upewnij się, że obciążenia specyficzne dla systemu operacyjnego są lądować na odpowiednim hoście kontenera. Jeśli klaster Kubernetes ma kombinację węzłów roboczych systemu Linux i Windows, możesz użyć selektorów węzłów lub defektów i tolerancji. Aby uzyskać więcej informacji, zobacz using node selectors and taints and tolerations (Używanie selektorów węzłów i defektów i tolerancji).
Uwaga
Wdrożenie klastra docelowego, który współudzieli 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 przydzielania adresów IP i mapowań portów wewnątrz serwera proxy wysokiej dostępności może prowadzić do przypisania zduplikowanych 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 platformy Kubernetes definiuje żądany stan klastra, taki jak obrazy kontenerów do uruchomienia. W tym samouczku użyto manifestu do utworzenia wszystkich obiektów wymaganych do uruchomienia aplikacji do głosowania na platformie Azure. Ten manifest obejmuje dwa wdrożenia platformy Kubernetes: jedno dla przykładowych aplikacji Azure Vote Python i drugie dla wystąpienia usługi Redis. Tworzone są również dwie usługi Kubernetes: wewnętrzna usługa dla wystąpienia usługi Redis i usługa zewnętrzna w celu uzyskania dostępu 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ę z oczekujące na rzeczywisty publiczny adres IP, użyj CTRL-C, aby zatrzymać proces zegarkakubectl
. 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.
Skalowanie zasobników aplikacji
Utworzyliśmy pojedynczą replikę frontonu aplikacji Azure Voting App i wystąpienia usługi Redis. Aby wyświetlić liczbę i stan zasobników w klastrze, użyj kubectl get
polecenia :
kubectl get pods -n default
Poniższe przykładowe dane wyjściowe zawierają 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 kubectl scale
polecenia . W poniższym przykładzie liczba zasobników frontonu jest zwiększana do 5:
kubectl scale --replicas=5 deployment/azure-vote-front
Uruchom ponownie polecenie kubectl get pods
, aby sprawdzić, czy utworzono dodatkowe zasobniki. Po upływie około minuty dodatkowe zasobniki 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