Несколько месяцев назад я сказал чтобы рассказать вам о выпуске новой службы Azure Container Instances (ACI), которая максимально упрощает развертывание контейнеров.
Сегодня мы поговорим о коннекторе Azure Container Instances для Kubernetes, который позволяет развертывать экземпляры Azure Container Service в кластерах Kubernetes. Этот разъем является экспериментальным и не должен использоваться в реальных проектах.
Цикл статей «Говорим о контейнерах»:
1. Контейнеры быстрого развертывания .2. DevOps с Kubernetes и VSTS. Часть 1: Местная история.
3. DevOps с Kubernetes и VSTS. Часть 2: Облачная история.
4. Узел с бесконечной емкостью для Kubernetes. Такой подход позволяет практически мгновенно выделять необходимые ресурсы кластеру, избавляя администратора от необходимости управлять инфраструктурой ВМ и позволяя ему продолжать использовать Kubernetes API. В кластере Kubernetes вы можете одновременно использовать виртуальные машины и экземпляры контейнеров, тем самым получая преимущества обеих технологий.
Принципы работы
Грубо говоря, ACI Connector имитирует интерфейс Kubelet следующим образом:- зарегистрирован в Kubernetes как нода с неограниченными ресурсами;
- отправляет модули для выполнения в службу экземпляров контейнеров Azure вместо узлов на виртуальных машинах.
Ниже приведены инструкции по использованию ACI Connector и планировщика Kubernetes с помощью ограничения и толерантности (запятнания и толерантности) .
Требования
- Работающий клиент командной строки az - установить Azure CLI 2.0 .
- Кластер Kubernetes с рабочим kubectl — настроить кластер Kubernetes в Azure .
Текущие возможности
Кроме того к примерам Следующие функции Kubernetes в настоящее время поддерживаются, если они определены в манифесте модуля.По мере расширения возможностей аци-коннектора этот список будет меняться.
- Переменные среды
- Команды
- ИзображениеPullSecret
- Файлы Azure, общие в виде томов
Текущие ограничения
Следующие функции Kubernetes в настоящее время не поддерживаются aci-коннектором:- Карты конфигурации
- Секреты
- Сервисные аккаунты
- Объемы
- журналы кубектла
- kubectl исполнительный
Как быстро попробовать
- Редактировать файл примеры/aci-connector.yaml и укажите переменные среды.
- Запустите коннектор ACI с помощью kubectl create -f example/aci-connector.yaml.
- Подождите, пока команда kubectl get nodes отобразит узел aci-connector.
- Запустите под NGINX через ACI с помощью команды kubectl create -f example/nginx-pod.yaml.
- Откройте под NGINX, используя его публичный адрес.
Пошаговая инструкция
Создать группу ресурсов
Соединитель ACI создаст каждый экземпляр контейнера в указанной группе ресурсов.Новую группу ресурсов можно создать с помощью следующей команды:
Отредактируйте файл example/aci-connector.yaml и задайте имя группы ресурсов в переменной среды ACI_RESOURCE_GROUP.$ az group create -n aci-test -l westus { "id": "/subscriptions/<subscriptionId>/resourceGroups/aci-test", "location": "westus", "managedBy": null, "name": "aci-test", "properties": { "provisioningState": "Succeeded" }, "tags": null }
Создать принципала службы
Субъект-служба необходим для создания ресурсов в вашей подписке Azure с помощью соединителя ACI. Вы можете создать субъект-службу с помощью Azure CLI в соответствии с инструкциями ниже.
Найдите идентификатор подписки с помощью Azure CLI: $ az account list -o table
Name CloudName SubscriptionId State IsDefault
----------------------------------------------- ----------- ------------------------------------ ------- -----------
Pay-As-You-Go AzureCloud 12345678-9012-3456-7890-123456789012 Enabled True
Используя az, создайте субъект-службу, который будет обрабатывать вашу подписку: $ az ad sp create-for-rbac --role=Contributor --scopes /subscriptions/<subscriptionId>/
{
"appId": "<redacted>",
"displayName": "azure-cli-2017-07-19-19-13-19",
"name": " http://azure-cli-2017-07-19-19-13-19 ",
"password": "<redacted>",
"tenant": "<redacted>"
}
Отредактируйте файл example/aci-connector.yaml и введите переменные среды, используя значения, указанные выше:
- AZURE_CLIENT_ID: введите идентификатор приложения.
- AZURE_CLIENT_KEY: введите пароль.
- AZURE_TENANT_ID: укажите арендатора.
- AZURE_SUBSCRIPTION_ID: введите идентификатор подписки.
Убедитесь, что поставщик Microsoft.ContainerInstance зарегистрирован.
$ az provider list -o table | grep ContainerInstance
Microsoft.ContainerInstance NotRegistered
Если поставщик не зарегистрирован, то зарегистрируйте его командой: $ az provider register -n Microsoft.ContainerInstance
$ az provider list -o table | grep ContainerInstance
Microsoft.ContainerInstance Registered
Установите разъем ACI
$ kubectl create -f examples/aci-connector.yaml
deployment "aci-connector" created
$ kubectl get nodes -w
NAME STATUS AGE VERSION
aci-connector Ready 3s 1.6.6
k8s-agentpool1-31868821-0 Ready 5d v1.7.0
k8s-agentpool1-31868821-1 Ready 5d v1.7.0
k8s-agentpool1-31868821-2 Ready 5d v1.7.0
k8s-master-31868821-0 Ready,SchedulingDisabled 5d v1.7.0
Установите разъем ACI с Helm (необязательно)
Сначала укажите значения в файлеvalues.yaml, расположенном в каталоге.
Затем вы можете установить диаграмму: $ helm install --name my-release .
/charts/aci-connector
Значения также можно задавать из командной строки, при этом любые значения, указанные в файлеvalues.yaml, перезапишутся: $ helm install --name my-release --set env.azureClientId=YOUR-AZURECLIENTID,env.azureClientKey=YOUR-AZURECLIENTKEY,env.azureTenantId=YOUR-AZURETENANTID,env.azureSubscriptionId=YOUR-AZURESUBSCRIPTIONID,env.aciResourceGroup=YOUR-ACIRESOURCEGROUP,env.aciRegion=YOUR-ACI-REGION .
/charts/aci-connector
Установите пример с помощью NGINX
$ kubectl create -f examples/nginx-pod.yaml
pod "nginx" created
$ kubectl get po -w -o wide
NAME READY STATUS RESTARTS AGE IP NODE
aci-connector-3396840456-v75q2 1/1 Running 0 44s 10.244.2.21 k8s-agentpool1-31868821-2
nginx 1/1 Running 0 31s 13.88.27.150 aci-connector
Обратите внимание, что модуль развертывается на узле aci-connector. Теперь он должен быть доступен через указанный общедоступный IP-адрес.
Использование планировщика Kubernetes
В примере с nginx-pod имя узла жестко закодировано, но вы также можете использовать планировщик Kubernetes. Виртуальный узел aci имеет пятно (azure.com/aci) с эффектом NoSchedule по умолчанию.Это означает, что по умолчанию модули не запускаются на узле aci, если они не размещены там явно.
Однако планировщик Kubernetes может включать модуль, допускающий это ограничение, в расписание узла aci. Связь например очаг с таким допуском.
Использовать этот модуль легко: $ kubectl create -f examples/nginx-pod-tolerations.yaml
Обратите внимание: если в вашем кластере есть другие узлы, этот модуль не обязательно размещается в службе экземпляров контейнеров Azure.
Чтобы принудительно развернуть модуль в службе экземпляров контейнеров Azure, вы можете либо явно указать NodeName, как в первом примере, либо удалить все остальные узлы в кластере с помощью kubectl delete nodes. .
Третий вариант — развернуть в кластере другие рабочие нагрузки; в этом случае планировщику потребуется запланировать вашу задачу через API службы экземпляров контейнеров Azure.
Использование сборок Canary
Канарские сборки — это версии соединителя, которые периодически собираются из основной ветки.Поскольку эти сборки не являются официальными выпусками, их стабильность не гарантируется, но они позволяют тестировать новейшие функции.
Чтобы воспользоваться последней версией Canary, вы можете установить пакет обновления для соединителя aci-connector и обновить тег контейнера с помощью следующей команды: $ kubectl set image deploy/aci-connector aci-connector=microsoft/aci-connector-k8s:canary
Теги: #microsoft #программирование #Microsoft Azure #Kubernetes #k8s #azure #SaaS / S+S #ACI #Azure Container Instances #aci Connector
-
Еще Один Манифест
19 Oct, 24 -
Метка Метки — Подписи В Google Earth
19 Oct, 24 -
Аналитические Функции На Примере Oracle
19 Oct, 24 -
Вы Бы Купили Ноутбук Без Тачпада?
19 Oct, 24