Cloud & IT Cert Prep · Pelajaran

Menyebarkan Beban Kerja pada AKS

Cipta kluster AKS, sebarkan aplikasi berbilang bekas menggunakan kubectl dan carta Helm, serta dedahkannya secara luaran dengan perkhidmatan Azure Load Balancer.

Pelajaran 4 daripada 413 langkah

Menyebarkan Beban Kerja pada AKS ialah pelajaran Cloud & IT Cert Prep percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Cloud & IT Cert Prep, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Cloud & IT Cert Prep merangkumi sejumlah 4 pelajaran.

Apakah Azure Kubernetes Service?

Azure Kubernetes Service (AKS) ialah tawaran Kubernetes terurus yang membolehkan Microsoft mengendalikan dan menyelenggara satah kawalan (pelayan API, etcd, penjadual) tanpa kos. Anda hanya membayar nod pekerja (VM). AKS mengendalikan peningkatan versi Kubernetes, penampalan OS nod, penskalaan satah kawalan, serta penyepaduan dengan rangkaian, storan dan identiti Azure. Hal ini mengurangkan beban operasi untuk menjalankan Kubernetes dalam persekitaran produksi dengan ketara.

Mencipta Kluster AKS

Cipta kluster AKS dengan az aks create, dengan menetapkan bilangan nod, saiz VM dan pilihan rangkaian. AKS secara automatik mencipta kumpulan sumber nod yang mengandungi VM, cakera terurus, NIC dan pengimbang beban. Mod rangkaian yang disyorkan ialah Azure CNI — setiap pod mendapat alamat IP VNet sebenar, yang membolehkan sambungan terus dengan perkhidmatan Azure lain tanpa 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

Kumpulan Nod

Kluster AKS boleh mempunyai berbilang kumpulan nod — kumpulan VM dengan konfigurasi yang sama. kumpulan nod sistem menjalankan komponen sistem Kubernetes yang kritikal (pod kube-system). Kumpulan nod pengguna menjalankan beban kerja aplikasi anda. Pengasingan kumpulan membolehkan anda menggabungkan SKU VM — kumpulan serba guna untuk aplikasi web dan kumpulan GPU untuk beban kerja ML — serta menskalakan setiap kumpulan secara berasingan.

# 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

Menerapkan Aplikasi Berbilang Bekas

Terapkan aplikasi berbilang peringkat pada AKS dengan menulis fail manifes Kubernetes yang berasingan untuk setiap peringkat dan menggunakannya dengan kubectl apply. Penerapan biasa merangkumi Deployment untuk peringkat web, Deployment untuk peringkat API, Services untuk menyambungkannya, ConfigMap untuk konfigurasi persekitaran dan sumber Ingress untuk mendedahkan aplikasi secara luaran melalui satu nama hos.

# 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 dan Application Gateway

Sumber Ingress mentakrifkan peraturan penghalaan HTTP yang memetakan nama hos dan laluan URL kepada perkhidmatan bahagian belakang. Berbeza daripada perkhidmatan LoadBalancer (satu IP luaran bagi setiap perkhidmatan), satu pengawal Ingress mengendalikan semua trafik HTTP luaran dan menghalakannya berdasarkan peraturan. Dalam AKS, gunakan NGINX Ingress Controller atau Application Gateway Ingress Controller (AGIC) untuk menamatkan TLS dan menghalakan trafik kepada berbilang perkhidmatan.

# 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}}

Carta Helm untuk Pembungkusan Aplikasi

Helm ialah pengurus pakej untuk Kubernetes. carta menggabungkan semua manifes Kubernetes bagi sesuatu aplikasi (Deployment, Services, Ingress, ConfigMaps) menjadi satu pakej yang mempunyai versi dan boleh diparameterkan. helm install menerapkan carta dengan nilai khusus persekitaran. repositori Helm di Artifact Hub mengehoskan ribuan carta siap bina untuk infrastruktur umum (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

Kemas Kini Berperingkat dan Pemulihan

Kemas kini Deployment dengan menukar tag imej bekas — Kubernetes melakukan kemas kini berperingkat, iaitu mencipta pod baharu dengan imej yang dikemas kini dan menamatkan pod lama secara beransur-ansur sambil memastikan aplikasi terus tersedia. Jika versi baharu bermasalah, pulihkan dengan segera kepada semakan sebelumnya menggunakan kubectl rollout undo. Kubernetes menyimpan sejarah semakan yang boleh dikonfigurasikan bagi setiap 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

Autoscaler Kluster

Cluster Autoscaler menambah atau membuang nod pekerja daripada kumpulan nod AKS secara automatik berdasarkan penjadualan pod yang menunggu dan penggunaan nod. Apabila pod tidak dapat dijadualkan kerana semua nod telah penuh, Cluster Autoscaler menyediakan nod baharu. Apabila nod kurang digunakan dan pod boleh digabungkan, ia mengosongkan serta membuang nod tersebut. Ini melengkapi Horizontal Pod Autoscaler — HPA menskalakan pod, manakala Cluster Autoscaler menskalakan nod.

# 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

Pemantauan AKS dengan Azure Monitor

Dayakan Azure Monitor Container Insights untuk mengumpulkan log dan metrik daripada kluster AKS anda tanpa menerapkan alat pemantauan pihak ketiga. Container Insights menyediakan papan pemuka siap bina untuk kesihatan kluster, CPU/memori nod dan pod, log bekas serta penstriman pod secara langsung. Ia disepadukan dengan Prometheus untuk mendapatkan metrik tersuai dan membolehkan semua data ditanya menggunakan KQL dalam 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 AKS dan Azure Active Directory

Sepadukan AKS dengan Microsoft Entra ID untuk menggunakan pengguna dan kumpulan Azure AD bagi RBAC Kubernetes. Daripada mengurus akaun pengguna Kubernetes yang berasingan, anda menetapkan ClusterRole atau Role bindings kepada ID objek Entra ID. Apabila pembangun menjalankan kubectl, AKS mengesahkan token Entra ID mereka. Ini menyediakan pengurusan identiti berpusat serta disepadukan dengan dasar capaian bersyarat dan 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

Dasar Rangkaian untuk Keselamatan Peringkat Pod

Dasar rangkaian ialah sumber Kubernetes yang mengawal pod mana yang boleh berkomunikasi antara satu sama lain. Secara lalai, semua pod dalam kluster boleh mencapai semua pod lain — dasar rangkaian menyediakan tembok api pada peringkat pod. Pada AKS, dayakan dasar rangkaian Azure atau Calico untuk menguatkuasakan dasar. Corak biasa ialah dasar default-deny yang menyekat semua trafik antara pod, kemudian dasar benarkan yang jelas untuk laluan khusus yang diperlukan oleh aplikasi anda.

# 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}}

Semakan Ringkas

Uji pemahaman anda tentang konsep Microsoft Azure Fundamentals (AZ-900) daripada pelajaran ini.

Ulang Kaji Pelajaran

Dalam pelajaran ini, anda telah mempelajari bahawa AKS ialah perkhidmatan Kubernetes terurus yang membolehkan Microsoft mengendalikan satah kawalan, carta Helm membungkus aplikasi Kubernetes berbilang sumber untuk penerapan berulang, manakala Cluster Autoscaler menambah dan membuang nod secara dinamik berdasarkan permintaan penjadualan pod. Seterusnya, kita akan meneroka pencetus dan pengikatan Azure Functions.

Percuma untuk bermula

Pelajari Cloud & IT Cert Prep dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
150
Pelajaran
600

Soalan Lazim

Adakah pelajaran “Menyebarkan Beban Kerja pada AKS” percuma?

Ya — teks penuh “Menyebarkan Beban Kerja pada AKS” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Cloud & IT Cert Prep, tingkat taraf kepada CoddyKit PRO. Kursus Cloud & IT Cert Prep merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Menyebarkan Beban Kerja pada AKS”?

Cipta kluster AKS, sebarkan aplikasi berbilang bekas menggunakan kubectl dan carta Helm, serta dedahkannya secara luaran dengan perkhidmatan Azure Load Balancer. Anda berlatih Cloud & IT Cert Prep menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Cloud & IT Cert Prep?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Cloud & IT Cert Prep di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Menyebarkan Beban Kerja pada AKS” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Cloud & IT Cert Prep ini?

Ya. Setiap pelajaran Cloud & IT Cert Prep menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Azure Container Registry
  2. Azure Container Instances
  3. Konsep Kubernetes untuk Azure
  4. Menyebarkan Beban Kerja pada AKS
← Kembali ke Cloud & IT Cert Prep