0Pricing
Cloud & IT Cert Prep · Урок

Развертывание рабочих нагрузок в AKS

Создайте кластер AKS, разверните многоконтейнерное приложение с помощью kubectl и диаграмм Helm и сделайте его доступным извне через службу Azure Load Balancer.

«Развертывание рабочих нагрузок в AKS» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.

Что такое Azure Kubernetes Service?

Azure Kubernetes Service (AKS) — это управляемое предложение Kubernetes, в котором Microsoft бесплатно эксплуатирует и обслуживает управляющий контур (сервер API, etcd, планировщик). Вы платите только за рабочие узлы (VM). AKS обрабатывает обновления версии Kubernetes, установку исправлений ОС узлов, масштабирование управляющего контура и интеграцию с сетями, хранилищами и системами удостоверений Azure. Это значительно снижает операционные затраты на запуск Kubernetes в рабочей среде.

Создание кластера AKS

Создайте кластер AKS с помощью az aks create, указав количество узлов, размер VM и параметры сети. AKS автоматически создаёт группу ресурсов узлов, содержащую VM, управляемые диски, сетевые интерфейсы и балансировщики нагрузки. Рекомендуемый режим работы сети — Azure CNI: каждый под получает реальный IP-адрес VNet, что обеспечивает прямое подключение к другим службам Azure без 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

Пулы узлов

Кластеры AKS могут иметь несколько пулов узлов — групп VM с одинаковой конфигурацией. Системный пул узлов запускает критически важные системные компоненты Kubernetes (поды kube-system). Пулы пользовательских узлов запускают рабочие нагрузки Ваших приложений. Раздельные пулы позволяют сочетать разные SKU VM: пул общего назначения для веб-приложений и пул GPU для рабочих нагрузок машинного обучения — и независимо масштабировать каждый из них.

# 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

Развёртывание многоконтейнерного приложения

Разверните многоуровневое приложение в AKS, создав отдельные файлы манифестов Kubernetes для каждого уровня и применив их с помощью kubectl apply. Типичное развёртывание включает развёртывание для веб-уровня, развёртывание для уровня API, службы для их соединения, ConfigMap для конфигурации среды и ресурс Ingress для внешнего доступа к приложению через единое имя узла.

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

Ресурс Ingress определяет правила маршрутизации HTTP, сопоставляющие имена узлов и пути URL с внутренними службами. В отличие от службы LoadBalancer (один внешний IP-адрес на службу), один контроллер Ingress обрабатывает весь внешний HTTP-трафик и направляет его на основе правил. В AKS используйте контроллер NGINX Ingress или контроллер Application Gateway Ingress (AGIC) для завершения TLS-соединений и маршрутизации трафика к нескольким службам.

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

Диаграммы Helm для упаковки приложений

Helm — это диспетчер пакетов для Kubernetes. Диаграмма объединяет все манифесты Kubernetes приложения (развёртывания, службы, Ingress, ConfigMaps) в один пакет с версией и настраиваемыми параметрами. helm install развёртывает диаграмму со значениями, специфичными для среды. Репозиторий Helm на Artifact Hub содержит тысячи готовых диаграмм для распространённой инфраструктуры (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

Поэтапные обновления и откаты

Обновите развёртывание, изменив тег образа контейнера: Kubernetes выполнит поэтапное обновление, постепенно создавая новые поды с обновлённым образом и завершая работу старых, сохраняя доступность приложения на всём протяжении процесса. Если новая версия работает неправильно, немедленно вернитесь к предыдущей редакции с помощью kubectl rollout undo. Kubernetes хранит настраиваемую историю редакций для каждого развёртывания.

# 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 кластера автоматически добавляет рабочие узлы в пул узлов AKS или удаляет их на основе ожидающего планирования подов и загрузки узлов. Когда поды невозможно запланировать, поскольку все узлы заполнены, Autoscaler кластера выделяет новые узлы. Когда узлы используются недостаточно и поды можно объединить, он выселяет поды и удаляет узлы. Это дополняет горизонтальный автомасштабировщик подов: HPA масштабирует поды, а Autoscaler кластера — узлы.

# 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

Мониторинг AKS с помощью Azure Monitor

Включите Azure Monitor Container Insights, чтобы собирать журналы и метрики из кластера AKS без развёртывания сторонних средств мониторинга. Container Insights предоставляет готовые панели мониторинга состояния кластера, использования CPU и памяти узлами и подами, журналов контейнеров и потоковой передачи данных из подов в реальном времени. Он интегрируется с Prometheus для сбора пользовательских метрик и позволяет запрашивать все данные с помощью KQL в 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 и Azure Active Directory

Интегрируйте AKS с Microsoft Entra ID, чтобы использовать пользователей и группы Azure AD для RBAC Kubernetes. Вместо управления отдельными учётными записями пользователей Kubernetes Вы назначаете ClusterRole или привязки ролей к идентификаторам объектов Entra ID. Когда разработчик запускает kubectl, AKS проверяет его токен Entra ID. Это обеспечивает централизованное управление удостоверениями и интеграцию с политиками условного доступа и 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

Сетевые политики для безопасности на уровне подов

Сетевые политики — это ресурсы Kubernetes, управляющие тем, какие поды могут взаимодействовать друг с другом. По умолчанию все поды в кластере могут обращаться ко всем остальным подам — сетевые политики работают как межсетевой экран на уровне подов. В AKS включите сетевую политику Azure или Calico для применения политик. Распространённый подход — политика запрета по умолчанию, блокирующая весь трафик между подами, с последующим созданием явных политик разрешения для конкретных путей, необходимых Вашему приложению.

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

Быстрая проверка

Проверьте своё понимание концепций Microsoft Azure Fundamentals (AZ-900), рассмотренных в этом уроке.

Итоги урока

В этом уроке Вы узнали, что AKS — это управляемая служба Kubernetes, в которой Microsoft эксплуатирует управляющий контур; диаграммы Helm упаковывают многоресурсные приложения Kubernetes для повторяемого развёртывания; а Autoscaler кластера динамически добавляет и удаляет узлы в зависимости от потребности в планировании подов. Далее мы рассмотрим триггеры и привязки Azure Functions.

Часто задаваемые вопросы

Урок «Развертывание рабочих нагрузок в AKS» бесплатный?

Да — полный текст урока «Развертывание рабочих нагрузок в AKS» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.

Чему я научусь в уроке «Развертывание рабочих нагрузок в AKS»?

Создайте кластер AKS, разверните многоконтейнерное приложение с помощью kubectl и диаграмм Helm и сделайте его доступным извне через службу Azure Load Balancer. Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?

Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Развертывание рабочих нагрузок в AKS»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?

Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Azure Container Registry
  2. Azure Container Instances
  3. Основы Kubernetes для Azure
  4. Развертывание рабочих нагрузок в AKS
← Назад к Cloud & IT Cert Prep