Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Служба Azure Kubernetes (AKS) — это управляемая служба Kubernetes, которая позволяет быстро развертывать кластеры и управлять ими. В этом кратком руководстве вы:
- Развертывание кластера AKS с помощью портала Azure.
- Запустите пример мультиконтейнерного приложения с группой микрослужб и веб-интерфейсов с имитацией сценария розничной торговли.
Примечание.
Чтобы приступить к быстрой подготовке кластера AKS, в этой статье содержатся действия по развертыванию кластера с параметрами по умолчанию только для оценки. Прежде чем развертывать готовый к работе кластер, рекомендуется ознакомиться с базовой эталонной архитектурой , чтобы понять, как она соответствует вашим бизнес-требованиям.
Перед началом
Это краткое руководство предполагает базовое понимание основных понятий Kubernetes. Дополнительные сведения см. в статье Ключевые концепции Kubernetes для службы Azure Kubernetes (AKS).
- Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.
- Если вы не знакомы с Azure Cloud Shell, см. статью Обзор Azure Cloud Shell.
- Убедитесь, что учетная запись, которую вы используете для создания кластера, обладает необходимыми минимальными разрешениями. Дополнительные сведения о доступе и управлении удостоверениями в AKS см. в статье Параметры доступа и удостоверений для Службы Azure Kubernetes (AKS).
Это важно
Начиная с 30 ноября 2025 г. служба Azure Kubernetes (AKS) больше не поддерживает или предоставляет обновления безопасности для Azure Linux 2.0. Образ узла Linux 2.0 Azure заморожен в выпуске 202512.06.0. Начиная с 31 марта 2026 г. образы узлов будут удалены, и вы не сможете масштабировать пулы узлов. Выполните миграцию в поддерживаемую версию Linux Azure, обновив пулы узлов до поддерживаемой версии Kubernetes или переключив ее на osSku AzureLinux3. Дополнительные сведения см. в вопросе о прекращении поддержки на GitHub и объявлении об устаревании обновлений Azure. Чтобы оставаться в курсе объявлений и обновлений, следуйте заметкам о выпуске AKS.
Создание кластера AKS
Войдите на портал Azure.
На домашней странице портала Azure выберите Создать ресурс.
В разделе "Категории" выберите "Службы инфраструктуры>Служба Azure Kubernetes (AKS).
На вкладке Основные сведения настройте следующие параметры:
В окне Сведения о проекте:
- Подписка. Выберите подписку Azure, которую вы хотите использовать для этого кластера AKS.
- Группа ресурсов: выберите "Создать", введите имя группы ресурсов, например myResourceGroup, и нажмите кнопку "ОК". Хотя вы можете выбрать существующую группу ресурсов, для тестирования или оценки мы рекомендуем создать отдельную группу ресурсов, чтобы временно разместить в ней эти ресурсы и не затрагивать рабочие нагрузки в производственной среде или среде разработки.
В разделе "Сведения о кластере":
- Конфигурация предустановки кластера: выберите Dev/Test. Дополнительные сведения о предварительно настроенных конфигурациях см. в разделе "Предустановки конфигурации кластера" на портале Azure. Конфигурацию предустановки можно изменить при создании кластера, нажав кнопку "Сравнить предустановки " и выбрав другой вариант.
Имя кластера Kubernetes: введите имя кластера, например myAKSCluster.
Регион: выберите регион, например восточная часть США 2.
Менеджер по флоту: Нет
Зоны доступности: нет. Отмените выбор выбранных зон.
Ценовая категория AKS: выберите "Бесплатный".
Оставьте значения по умолчанию для остальных параметров и нажмите кнопку "Далее".
На вкладке пулов узлов настройте следующие параметры:
Выберите "Добавить пул узлов" и выберите "Добавить пул узлов масштабируемого набора виртуальных машин"
Имя: введите имя, например nplinux.
Режим: выбор пользователя.
SKU ОС: выберите Ubuntu Linux.
Зоны доступности: выберите "Нет".
Оставьте флажок Включить спотовые экземпляры Azure снятым.
Размер узла: выберите размер. На странице "Выбор размера виртуальной машины " найдите D2s_v5, выберите этот размер виртуальной машины и выберите его.
Используйте значения по умолчанию для остальных параметров и нажмите кнопку "Добавить".
Выберите "Проверка и создание", чтобы выполнить проверку в конфигурации кластера. После завершения проверки щелкните Создать.
Создание кластера AKS займет несколько минут. По завершении развертывания перейдите к ресурсу, выбрав "Перейти к ресурсу" или перейдя в группу ресурсов кластера AKS и выбрав ресурс AKS.
Подключение к кластеру
Для управления кластерами Kubernetes используется клиент командной строки Kubernetes, kubectl. Если вы используете Azure Cloud Shell, kubectl уже установлен. Если вы не знакомы с Cloud Shell, см. статью Обзор Azure Cloud Shell.
Если вы используете Cloud Shell, откройте его, нажав кнопку >_ в верхней части портала Azure. Если вы используете PowerShell локально, подключитесь к Azure с помощью Connect-AzAccount команды. Если вы используете Azure CLI локально, подключитесь к Azure с помощью az login команды.
Настройте
kubectlдля подключения к вашему кластеру Kubernetes с помощью командыaz aks get-credentials. Эта команда скачивает учетные данные и настраивает интерфейс командной строки Kubernetes для их использования.az aks get-credentials --resource-group myResourceGroup --name myAKSClusterПроверьте подключение к кластеру, получив список узлов кластера с помощью команды
kubectl get.kubectl get nodesВ следующем примере показан единый узел, созданный на предыдущих шагах. Убедитесь, что статус узла — Ready.
NAME STATUS ROLES AGE VERSION aks-nodepool1-31718369-0 Ready agent 6m44s v1.15.10
Развертывание приложения
Файл манифеста используется для создания всех объектов, необходимых для запуска приложения AKS Store. Файл манифеста Kubernetes определяет требуемое состояние кластера, например, какие образы контейнеров следует запускать. Манифест включает следующие развертывания и службы Kubernetes:
- Интерфейс магазина: веб-приложение для пользователей для просмотра продуктов и размещения заказов.
- Служба продукта: отображает сведения о продукте.
- Служба заказов: помещает заказы.
- Rabbit MQ: очередь сообщений для обработки заказов.
Примечание.
Мы не рекомендуем запускать контейнеры с сохранением состояния, такие как RabbitMQ, без постоянного хранилища для рабочей среды. Эти контейнеры используются здесь для простоты, но мы рекомендуем использовать управляемые службы, такие как Azure Cosmos DB или служебная шина Azure.
В Cloud Shell откройте редактор и создайте файл с именем
aks-store-quickstart.yaml.Вставьте следующий манифест в редактор:
apiVersion: apps/v1 kind: StatefulSet metadata: name: rabbitmq spec: serviceName: rabbitmq replicas: 1 selector: matchLabels: app: rabbitmq template: metadata: labels: app: rabbitmq spec: nodeSelector: "kubernetes.io/os": linux containers: - name: rabbitmq image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine ports: - containerPort: 5672 name: rabbitmq-amqp - containerPort: 15672 name: rabbitmq-http env: - name: RABBITMQ_DEFAULT_USER value: "username" - name: RABBITMQ_DEFAULT_PASS value: "password" resources: requests: cpu: 10m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: rabbitmq-enabled-plugins mountPath: /etc/rabbitmq/enabled_plugins subPath: enabled_plugins volumes: - name: rabbitmq-enabled-plugins configMap: name: rabbitmq-enabled-plugins items: - key: rabbitmq_enabled_plugins path: enabled_plugins --- apiVersion: v1 data: rabbitmq_enabled_plugins: | [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0]. kind: ConfigMap metadata: name: rabbitmq-enabled-plugins --- apiVersion: v1 kind: Service metadata: name: rabbitmq spec: selector: app: rabbitmq ports: - name: rabbitmq-amqp port: 5672 targetPort: 5672 - name: rabbitmq-http port: 15672 targetPort: 15672 type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 1 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: order-service image: ghcr.io/azure-samples/aks-store-demo/order-service:latest ports: - containerPort: 3000 env: - name: ORDER_QUEUE_HOSTNAME value: "rabbitmq" - name: ORDER_QUEUE_PORT value: "5672" - name: ORDER_QUEUE_USERNAME value: "username" - name: ORDER_QUEUE_PASSWORD value: "password" - name: ORDER_QUEUE_NAME value: "orders" - name: FASTIFY_ADDRESS value: "0.0.0.0" resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi startupProbe: httpGet: path: /health port: 3000 failureThreshold: 5 initialDelaySeconds: 20 periodSeconds: 10 readinessProbe: httpGet: path: /health port: 3000 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 3000 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 initContainers: - name: wait-for-rabbitmq image: busybox command: ['sh', '-c', 'until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;'] resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi --- apiVersion: v1 kind: Service metadata: name: order-service spec: type: ClusterIP ports: - name: http port: 3000 targetPort: 3000 selector: app: order-service --- apiVersion: apps/v1 kind: Deployment metadata: name: product-service spec: replicas: 1 selector: matchLabels: app: product-service template: metadata: labels: app: product-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: product-service image: ghcr.io/azure-samples/aks-store-demo/product-service:latest ports: - containerPort: 3002 env: - name: AI_SERVICE_URL value: "http://ai-service:5001/" resources: requests: cpu: 1m memory: 1Mi limits: cpu: 2m memory: 20Mi readinessProbe: httpGet: path: /health port: 3002 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 3002 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 --- apiVersion: v1 kind: Service metadata: name: product-service spec: type: ClusterIP ports: - name: http port: 3002 targetPort: 3002 selector: app: product-service --- apiVersion: apps/v1 kind: Deployment metadata: name: store-front spec: replicas: 1 selector: matchLabels: app: store-front template: metadata: labels: app: store-front spec: nodeSelector: "kubernetes.io/os": linux containers: - name: store-front image: ghcr.io/azure-samples/aks-store-demo/store-front:latest ports: - containerPort: 8080 name: store-front env: - name: VUE_APP_ORDER_SERVICE_URL value: "http://order-service:3000/" - name: VUE_APP_PRODUCT_SERVICE_URL value: "http://product-service:3002/" resources: requests: cpu: 1m memory: 200Mi limits: cpu: 1000m memory: 512Mi startupProbe: httpGet: path: /health port: 8080 failureThreshold: 3 initialDelaySeconds: 5 periodSeconds: 5 readinessProbe: httpGet: path: /health port: 8080 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 3 livenessProbe: httpGet: path: /health port: 8080 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancerСведения о разбивке файлов манифеста YAML см. в разделе "Развертывания" и "Манифесты YAML".
Если вы создаете и сохраняете файл YAML локально, вы можете отправить файл манифеста в каталог по умолчанию в CloudShell, нажав кнопку "Отправить и скачать файлы " и выбрав файл из локальной файловой системы.
Разверните приложение с помощью
kubectl applyкоманды и укажите имя манифеста YAML:kubectl apply -f aks-store-quickstart.yamlВ следующем примере выходных данных показаны развертывания и службы:
deployment.apps/rabbitmq created service/rabbitmq created deployment.apps/order-service created service/order-service created deployment.apps/product-service created service/product-service created deployment.apps/store-front created service/store-front created
Тестирование приложения
При запуске приложения Служба Kubernetes предоставляет внешний интерфейс приложения в Интернете. Этот процесс может занять несколько минут.
Проверьте состояние развернутых подов с помощью команды
kubectl get pods. Прежде чем продолжить, убедитесь, что все поды находятся в состоянииRunning.kubectl get podsПроверьте общедоступный IP-адрес приложения
store-front. Отслеживайте ход с помощью командыkubectl get serviceс аргументом--watch.kubectl get service store-front --watchЗначение EXTERNAL-IP для службы
store-frontизначально отображается как pending:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4mКогда адрес EXTERNAL-IP изменится с pending на фактический общедоступный IP-адрес, используйте
CTRL-C, чтобы остановить процесс наблюденияkubectl.В следующем примере выходных данных показан общедоступный IP-адрес, присвоенный службе.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5mОткройте в веб-браузере внешний IP-адрес вашей службы, чтобы увидеть приложение Azure Store в действии.
Удаление кластера
Если вы не планируете проходить серию учебников AKS, очистите ненужные ресурсы, чтобы избежать расходов Azure.
В портал Azure перейдите к группе ресурсов кластера AKS.
Выберите команду Удалить группу ресурсов.
Введите имя группы ресурсов для удаления и нажмите кнопку "Удалить>".
Примечание.
Кластер AKS был создан с управляемым удостоверением, назначаемым системой. Эта учетная запись управляется платформой, и ее не нужно удалять.
Следующие шаги
В этом кратком руководстве вы развернули кластер Kubernetes, а затем развернули в нем простое многоконтейнерное приложение. Этот пример приложения предназначен только для демонстрационных целей и не представляет все рекомендации для приложений Kubernetes. Рекомендации по созданию полноценных решений с AKS для промышленной эксплуатации см. в руководстве по решениям AKS.
Чтобы узнать больше об AKS и перейти к полному примеру развертывания, перейдите к серии учебников по кластеру Kubernetes.