Cloud & IT Cert Prep · Lekcja

Wdrażanie obciążeń w AKS

Utwórz klaster AKS, wdróż aplikację wielokontenerową za pomocą kubectl i wykresów Helm oraz udostępnij ją zewnętrznie jako usługę Azure Load Balancer.

Lekcja 4 z 413 kroki

Wdrażanie obciążeń w AKS to bezpłatna lekcja Cloud & IT Cert Prep na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cloud & IT Cert Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.

Czym jest Azure Kubernetes Service?

Azure Kubernetes Service (AKS) to zarządzana usługa Kubernetes, w której firma Microsoft obsługuje i utrzymuje płaszczyznę sterowania (serwer API, etcd, harmonogram) bez dodatkowych opłat. Płacisz tylko za węzły robocze (maszyny wirtualne). AKS obsługuje aktualizacje wersji Kubernetes, poprawki systemu operacyjnego węzłów, skalowanie płaszczyzny sterowania oraz integrację z usługami Azure do obsługi sieci, pamięci masowej i tożsamości. Znacznie zmniejsza to nakład pracy operacyjnej związany z uruchamianiem Kubernetes na potrzeby produkcji.

Tworzenie klastra AKS

Utwórz klaster AKS za pomocą az aks create, określając liczbę węzłów, rozmiar maszyn wirtualnych i opcje sieciowe. AKS automatycznie tworzy grupę zasobów węzła zawierającą maszyny wirtualne, dyski zarządzane, karty sieciowe i moduły równoważenia obciążenia. Zalecanym trybem sieciowym jest Azure CNI — każdy pod otrzymuje rzeczywisty adres IP sieci VNet, co umożliwia bezpośrednią łączność z innymi usługami Azure bez użycia NAT.

# Create an AKS cluster with 3 nodes
az aks create \
  --name myAKSCluster \
  --resource-group MyRG \
  --location eastus \
  --node-count 3 \
  --node-vm-size Standard_D2s_v3 \
  --enable-managed-identity \
  --attach-acr mycontainerregistry \
  --network-plugin azure \
  --generate-ssh-keys

# Get kubectl credentials
az aks get-credentials --name myAKSCluster --resource-group MyRG

Pule węzłów

Klastry AKS mogą zawierać wiele pul węzłów — grup maszyn wirtualnych o tej samej konfiguracji. Systemowa pula węzłów uruchamia krytyczne komponenty systemu Kubernetes (pody kube-system). Pule węzłów użytkownika uruchamiają obciążenia aplikacji. Oddzielne pule pozwalają łączyć różne jednostki SKU maszyn wirtualnych — na przykład pulę ogólnego przeznaczenia dla aplikacji internetowych i pulę GPU dla obciążeń uczenia maszynowego — oraz niezależnie skalować każdą z nich.

# Add a GPU node pool for ML workloads
az aks nodepool add \
  --cluster-name myAKSCluster \
  --resource-group MyRG \
  --name gpupool \
  --node-count 2 \
  --node-vm-size Standard_NC6s_v3 \
  --node-taints sku=gpu:NoSchedule

# List node pools
az aks nodepool list \
  --cluster-name myAKSCluster \
  --resource-group MyRG \
  -o table

Wdrażanie aplikacji wielokontenerowej

Wdróż aplikację wielowarstwową w AKS, tworząc osobne pliki manifestów Kubernetes dla każdej warstwy i stosując je za pomocą kubectl apply. Typowe wdrożenie obejmuje obiekt Deployment dla warstwy internetowej, obiekt Deployment dla warstwy API, obiekty Service do ich łączenia, obiekt ConfigMap z konfiguracją środowiska oraz zasób Ingress udostępniający aplikację zewnętrznie za pośrednictwem jednej nazwy hosta.

# Apply all manifests in a directory
kubectl apply -f k8s/

# Or apply individual files
kubectl apply -f frontend-deployment.yaml
kubectl apply -f frontend-service.yaml
kubectl apply -f api-deployment.yaml
kubectl apply -f api-service.yaml
kubectl apply -f ingress.yaml

# Watch rollout status
kubectl rollout status deployment/frontend
kubectl rollout status deployment/api

Ingress i Application Gateway

Zasób Ingress definiuje reguły routingu HTTP, które mapują nazwy hostów i ścieżki URL na usługi backendu. W przeciwieństwie do usługi LoadBalancer (jeden zewnętrzny adres IP na usługę) pojedynczy kontroler Ingress obsługuje cały zewnętrzny ruch HTTP i kieruje go na podstawie reguł. W AKS można użyć NGINX Ingress Controller lub Application Gateway Ingress Controller (AGIC) do terminowania protokołu TLS i kierowania ruchu do wielu usług.

# Ingress routing traffic to two services by path
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myapp-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  tls:
  - hosts: [myapp.contoso.com]
    secretName: myapp-tls
  rules:
  - host: myapp.contoso.com
    http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service: {name: api-svc, port: {number: 80}}
      - path: /
        pathType: Prefix
        backend:
          service: {name: frontend-svc, port: {number: 80}}

Pakowanie aplikacji za pomocą wykresów Helm

Helm to menedżer pakietów dla Kubernetes. Wykres zawiera wszystkie manifesty Kubernetes aplikacji (Deployment, Service, Ingress, ConfigMap) w jednym wersjonowanym pakiecie z możliwością parametryzacji. Polecenie helm install wdraża wykres z wartościami właściwymi dla danego środowiska. Repozytorium Helm w Artifact Hub zawiera tysiące gotowych wykresów dla popularnej infrastruktury (NGINX, cert-manager, Prometheus, Redis).

# Add the NGINX Ingress Controller chart repo
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update

# Install NGINX Ingress Controller
helm install ingress-nginx ingress-nginx/ingress-nginx \
  --namespace ingress-nginx \
  --create-namespace \
  --set controller.replicaCount=2

# Install your own app chart with custom values
helm install myapp ./charts/myapp -f values-prod.yaml

Aktualizacje kroczące i wycofywanie zmian

Zaktualizuj obiekt Deployment, zmieniając znacznik obrazu kontenera — Kubernetes wykona aktualizację kroczącą, stopniowo tworząc nowe pody ze zaktualizowanym obrazem i kończąc działanie starych, dzięki czemu aplikacja pozostaje dostępna przez cały czas. Jeśli nowa wersja nie działa poprawnie, natychmiast wycofaj ją do poprzedniej wersji za pomocą kubectl rollout undo. Kubernetes przechowuje konfigurowalną historię wersji dla każdego obiektu Deployment.

# Update the image to a new version
kubectl set image deployment/myapp \
  myapp=mycontainerregistry.azurecr.io/myapp:v2.0

# Watch the rollout progress
kubectl rollout status deployment/myapp

# View rollout history
kubectl rollout history deployment/myapp

# Rollback to the previous version
kubectl rollout undo deployment/myapp

# Rollback to a specific revision
kubectl rollout undo deployment/myapp --to-revision=2

Autoskalowanie klastra

Cluster Autoscaler automatycznie dodaje lub usuwa węzły robocze z puli węzłów AKS na podstawie oczekujących na zaplanowanie podów i wykorzystania węzłów. Gdy pody nie mogą zostać zaplanowane, ponieważ wszystkie węzły są zapełnione, Cluster Autoscaler aprowizuje nowe węzły. Gdy węzły są niewystarczająco wykorzystywane i pody można skonsolidować, opróżnia węzły i usuwa je. Uzupełnia to działanie Horizontal Pod Autoscaler — HPA skaluje pody, a Cluster Autoscaler skaluje węzły.

# Enable Cluster Autoscaler on the default node pool
az aks update \
  --name myAKSCluster \
  --resource-group MyRG \
  --enable-cluster-autoscaler \
  --min-count 2 \
  --max-count 10

# Update autoscaler bounds on a specific node pool
az aks nodepool update \
  --cluster-name myAKSCluster \
  --resource-group MyRG \
  --name nodepool1 \
  --enable-cluster-autoscaler \
  --min-count 3 \
  --max-count 20

Monitorowanie AKS za pomocą Azure Monitor

Włącz funkcję Azure Monitor Container Insights, aby zbierać dzienniki i metryki z klastra AKS bez wdrażania narzędzi monitorowania innych firm. Container Insights udostępnia gotowe pulpity nawigacyjne dotyczące kondycji klastra, użycia procesora i pamięci przez węzły i pody, dzienników kontenerów oraz strumieniowania danych z podów na żywo. Integruje się z Prometheus na potrzeby pobierania niestandardowych metryk i umożliwia wykonywanie zapytań do wszystkich danych za pomocą języka KQL w usłudze Log Analytics.

# Enable Azure Monitor Container Insights on AKS
az aks enable-addons \
  --addons monitoring \
  --name myAKSCluster \
  --resource-group MyRG \
  --workspace-resource-id /subscriptions/.../workspaces/MyLogAnalytics

# Stream live logs from a running pod
kubectl logs -f deployment/myapp -c myapp

# Query pod resource usage
kubectl top pods --namespace default

RBAC w AKS i Microsoft Entra ID

Zintegruj AKS z usługą Microsoft Entra ID, aby używać użytkowników i grup Azure AD na potrzeby mechanizmu RBAC Kubernetes. Zamiast zarządzać osobnymi kontami użytkowników Kubernetes, przypisz obiekty ClusterRole lub Role bindings do identyfikatorów obiektów Entra ID. Gdy deweloper uruchamia polecenie kubectl, AKS weryfikuje jego token Entra ID. Zapewnia to scentralizowane zarządzanie tożsamościami oraz integrację z zasadami dostępu warunkowego i MFA.

# Enable Entra ID RBAC on an AKS cluster
az aks update \
  --name myAKSCluster \
  --resource-group MyRG \
  --enable-azure-rbac

# Assign a built-in AKS role to an Entra group
az role assignment create \
  --role 'Azure Kubernetes Service RBAC Reader' \
  --assignee '<Entra-Group-Object-ID>' \
  --scope /subscriptions/.../resourceGroups/MyRG/providers/Microsoft.ContainerService/managedClusters/myAKSCluster

Zasady sieciowe na potrzeby bezpieczeństwa na poziomie podów

Zasady sieciowe to zasoby Kubernetes kontrolujące, które pody mogą komunikować się ze sobą. Domyślnie wszystkie pody w klastrze mogą łączyć się ze wszystkimi pozostałymi podami — zasady sieciowe zapewniają zaporę na poziomie podów. W AKS można włączyć zasady sieciowe Azure lub Calico, aby je egzekwować. Typowym rozwiązaniem jest zasada default-deny, która blokuje cały ruch między podami, a następnie dodanie jawnych zasad zezwalających na konkretne ścieżki wymagane przez aplikację.

# Default deny all ingress to pods in namespace
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-ingress
  namespace: production
spec:
  podSelector: {}  # Matches all pods
  policyTypes:
  - Ingress

# Allow API pods to receive from frontend pods only
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: api-allow-frontend
spec:
  podSelector: {matchLabels: {app: api}}
  ingress:
  - from:
    - podSelector: {matchLabels: {app: frontend}}

Szybki test

Sprawdź swoją wiedzę na temat zagadnień Microsoft Azure Fundamentals (AZ-900) przedstawionych w tej lekcji.

Podsumowanie lekcji

W tej lekcji nauczyłeś się, że: AKS to zarządzana usługa Kubernetes, w której firma Microsoft obsługuje płaszczyznę sterowania; wykresy Helm pakują aplikacje Kubernetes składające się z wielu zasobów, umożliwiając ich powtarzalne wdrażanie; a Cluster Autoscaler dynamicznie dodaje i usuwa węzły na podstawie zapotrzebowania wynikającego z planowania podów. W następnej części omówimy wyzwalacze i powiązania Azure Functions.

Bezpłatny start

Ucz się Cloud & IT Cert Prep dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
150
Lekcje
600

Często zadawane pytania

Czy lekcja „Wdrażanie obciążeń w AKS” jest bezpłatna?

Tak — pełny tekst „Wdrażanie obciążeń w AKS” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cloud & IT Cert Prep, przejdź na CoddyKit PRO. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.

Co nauczysz się w „Wdrażanie obciążeń w AKS”?

Utwórz klaster AKS, wdróż aplikację wielokontenerową za pomocą kubectl i wykresów Helm oraz udostępnij ją zewnętrznie jako usługę Azure Load Balancer. Ćwiczysz Cloud & IT Cert Prep z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cloud & IT Cert Prep?

Nie wymagamy żadnego doświadczenia. Cloud & IT Cert Prep w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Wdrażanie obciążeń w AKS”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cloud & IT Cert Prep?

Tak. Każda lekcja Cloud & IT Cert Prep zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Azure Container Registry
  2. Azure Container Instances
  3. Podstawy Kubernetes na platformie Azure
  4. Wdrażanie obciążeń w AKS
← Powrót do Cloud & IT Cert Prep