Развертывание кластера Kubernetes для контейнеров Linux (не рекомендуется)
Совет
Обновленная версия этого краткого руководства, использующего Служба Azure Kubernetes, см. в кратком руководстве по развертыванию кластера Служба Azure Kubernetes (AKS).
Предупреждение
Служба контейнеров Azure (ACS) выводится из эксплуатации. В нее больше не добавляются новые компоненты или функциональные возможности. Все API, интерфейс портала, команды CLI и документы помечаются как нерекомендуемые.
В 2017 году мы объявили о выпуске Службы Azure Kubernetes (AKS), которая призвана упростить администрирование, развертывание и эксплуатацию платформы Kubernetes. Если вы используете оркестратор Kubernetes, перейдите на AKS до 31 января 2020 года. Чтобы приступить к работе, см. статью о переходе на Службу Azure Kubernetes.
Дополнительные сведения см. в статье Поддержка Службы контейнеров Azure будет прекращена 31 января 2020 года.
В этом кратком руководстве мы развернем кластер Kubernetes с помощью Azure CLI. Затем в кластере будет развернуто и запущено многоконтейнерное приложение, состоящее из веб-интерфейса и экземпляра Redis. По завершении приложение будет доступно через Интернет.
Примера приложения, который используется в этом документе, написан на языке Python. Основные понятия и действия, описанные здесь, можно использовать для развертывания в кластере Kubernetes любого образа контейнера. Файл кода (Dockerfile) и предварительно созданные файлы манифеста Kubernetes, относящиеся к этому проекту, доступны на портале GitHub.
Для работы с этим кратким руководством необходимо знание основных понятий Kubernetes. Подробные сведения см. в документации по Kubernetes.
Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
Azure Cloud Shell
В Azure есть Azure Cloud Shell, интерактивная оболочка среды, с которой можно работать в браузере. Для работы со службами Azure можно использовать Bash или PowerShell с Cloud Shell. Для запуска кода из этой статьи можно использовать предварительно установленные команды Cloud Shell. Ничего дополнительного в локальной среде устанавливать не нужно.
Начало работы с Azure Cloud Shell
Вариант | Пример и ссылка |
---|---|
Нажмите кнопку Попробовать в правом верхнем углу блока кода или команд. При нажатии кнопки Попробовать код или команда не копируется в Cloud Shell автоматически. | |
Чтобы открыть Cloud Shell в браузере, перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell. | |
Нажмите кнопку Cloud Shell в строке меню в правом верхнем углу окна портала Azure. |
Чтобы использовать Azure Cloud Shell, выполните следующие действия:
Запустите Cloud Shell.
Нажмите кнопку Копировать в блоке кода (или блоке команд), чтобы скопировать код или команду.
Вставьте код или команду в окно сеанса Cloud Shell, нажав клавиши CTRL+SHIFT+V в Windows и Linux или CMD+SHIFT+V в macOS.
Нажмите клавишу ВВОД, чтобы запустить код или команду.
Если вы решили установить и использовать CLI локально, для выполнения инструкций в этом руководстве вам понадобится Azure CLI 2.0.4 или более поздней версии. Чтобы узнать версию, выполните команду az --version
. Если вам необходимо выполнить установку или обновление, обратитесь к статье Установка Azure CLI.
Создание или изменение группы ресурсов
Создайте группу ресурсов с помощью команды az group create. Группа ресурсов Azure — это логическая группа, в которой развертываются и управляются ресурсы Azure.
В следующем примере создается группа ресурсов с именем myResourceGroup в расположении westeurope.
az group create --name myResourceGroup --location westeurope
Выходные данные:
{
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup",
"location": "westeurope",
"managedBy": null,
"name": "myResourceGroup",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null
}
Создание кластера Kubernetes
Создание кластера Kubernetes в Службе контейнеров Azure с помощью команды az acs create. В следующем примере создается кластер myK8sCluster при помощи одного главного узла Linux и трех узлов агентов Linux.
az acs create --orchestrator-type kubernetes --resource-group myResourceGroup --name myK8sCluster --generate-ssh-keys
В некоторых случаях, например при использовании ограниченной пробной версии, доступ подписки Azure к ресурсам Azure ограничен. Если происходит сбой развертывания из-за ограничения доступных ядер, уменьшите количество агентов по умолчанию, добавив --agent-count 1
в команду az acs create.
Через несколько минут выполнение команды завершается, и отображаются сведения о кластере в формате JSON.
Подключение к кластеру
Управлять кластером Kubernetes можно при помощи kubectl, клиента командной строки Kubernetes.
Если вы используете Azure Cloud Shell, клиент kubectl уже установлен. Для локальной установки можно использовать команду az acs kubernetes install-cli.
Чтобы настроить kubectl для подключения к кластеру Kubernetes, выполните команду az acs kubernetes get-credentials. На этом шаге скачиваются учетные данные и настраивается интерфейс командной строки Kubernetes для их использования.
az acs kubernetes get-credentials --resource-group=myResourceGroup --name=myK8sCluster
Чтобы проверить подключение к кластеру, используйте команду kubectl get для получения списка узлов кластера.
kubectl get nodes
Выходные данные:
NAME STATUS AGE VERSION
k8s-agent-14ad53a1-0 Ready 10m v1.6.6
k8s-agent-14ad53a1-1 Ready 10m v1.6.6
k8s-agent-14ad53a1-2 Ready 10m v1.6.6
k8s-master-14ad53a1-0 Ready,SchedulingDisabled 10m v1.6.6
Выполнение приложения
Файл манифеста Kubernetes определяет требуемое состояние для кластера, включая образы контейнеров, которые нужно запустить. В этом примере манифест используется для создания всех объектов, необходимых для запуска приложения Azure для голосования.
Создайте файл с именем azure-vote.yml
и скопируйте в него следующий YAML-файл: Если вы работаете в Azure Cloud Shell, этот файл можно создать с помощью Vi или Nano, как при работе в виртуальной или физической системе.
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: azure-vote-back
spec:
replicas: 1
template:
metadata:
labels:
app: azure-vote-back
spec:
containers:
- name: azure-vote-back
image: redis
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/v1beta1
kind: Deployment
metadata:
name: azure-vote-front
spec:
replicas: 1
template:
metadata:
labels:
app: azure-vote-front
spec:
containers:
- name: azure-vote-front
image: microsoft/azure-vote-front:v1
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
Используйте команду kubectl create, чтобы запустить приложение.
kubectl create -f azure-vote.yml
Выходные данные:
deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created
Тестирование приложения
При запуске приложения создается служба Kubernetes, которая предоставляет внешний интерфейс приложения в Интернете. Процесс создания может занять несколько минут.
Чтобы отслеживать ход выполнения, используйте команду kubectl get service с аргументом --watch
.
kubectl get service azure-vote-front --watch
Изначально для параметра ВНЕШНИЙ IP-АДРЕС службы azure-vote-front отображается состояние ожидания. Как только для параметра "ВНЕШНИЙ IP-АДРЕС" состояние ожидания изменится на IP-адрес, используйте команду CTRL-C
, чтобы остановить процесс отслеживания kubectl.
azure-vote-front 10.0.34.242 <pending> 80:30676/TCP 7s
azure-vote-front 10.0.34.242 52.179.23.131 80:30676/TCP 2m
Теперь можно перейти по внешнему IP-адресу в приложение Azure для голосования.
Удаление кластера
Чтобы удалить ненужные кластер, группу ресурсов, службу контейнеров и все связанные с ней ресурсы, выполните команду az group delete.
az group delete --name myResourceGroup --yes --no-wait
Получение кода
В этом кратком руководстве для развертывания Kubernetes используются предварительно созданные образы контейнеров. Вы можете получить код приложений, файл Dockerfile и файл манифеста Kubernetes для этих образов на сайте GitHub.
https://github.com/Azure-Samples/azure-voting-app-redis
Следующие шаги
С помощью этого краткого руководства мы развернули кластер Kubernetes, а затем развернули в нем многоконтейнерное приложение.
Дополнительные сведения о службе контейнеров Azure и инструкции по созданию полного кода для примера развертывания см. в руководстве по кластерам Kubernetes.
Create container images to be used with Azure Container Service (Создание образов контейнеров для использования со Службой контейнеров Azure)