Узел С Бесконечной Емкостью Для Kubernetes

Несколько месяцев назад я сказал чтобы рассказать вам о выпуске новой службы Azure Container Instances (ACI), которая максимально упрощает развертывание контейнеров.

Сегодня мы поговорим о коннекторе Azure Container Instances для Kubernetes, который позволяет развертывать экземпляры Azure Container Service в кластерах Kubernetes. Этот разъем является экспериментальным и не должен использоваться в реальных проектах.



Узел с бесконечной емкостью для Kubernetes



Цикл статей «Говорим о контейнерах»:

1. Контейнеры быстрого развертывания .

2. DevOps с Kubernetes и VSTS. Часть 1: Местная история.

3. DevOps с Kubernetes и VSTS. Часть 2: Облачная история.

4. Узел с бесконечной емкостью для Kubernetes. Такой подход позволяет практически мгновенно выделять необходимые ресурсы кластеру, избавляя администратора от необходимости управлять инфраструктурой ВМ и позволяя ему продолжать использовать Kubernetes API. В кластере Kubernetes вы можете одновременно использовать виртуальные машины и экземпляры контейнеров, тем самым получая преимущества обеих технологий.



Принципы работы

Грубо говоря, ACI Connector имитирует интерфейс Kubelet следующим образом:
  • зарегистрирован в Kubernetes как нода с неограниченными ресурсами;
  • отправляет модули для выполнения в службу экземпляров контейнеров Azure вместо узлов на виртуальных машинах.

После регистрации соединителя как узла с именем aci-connector вы можете указать nodeName: aci-connector в конфигурации модуля, чтобы запустить его через службу экземпляров контейнеров Azure. Поды, у которых в конфигурации не указан этот узел, запускаются по расписанию в обычном режиме.

Ниже приведены инструкции по использованию ACI Connector и планировщика Kubernetes с помощью ограничения и толерантности (запятнания и толерантности) .



Узел с бесконечной емкостью для Kubernetes



Требования

  1. Работающий клиент командной строки az - установить Azure CLI 2.0 .

  2. Кластер Kubernetes с рабочим kubectl — настроить кластер Kubernetes в Azure .



Текущие возможности

Кроме того к примерам Следующие функции Kubernetes в настоящее время поддерживаются, если они определены в манифесте модуля.

По мере расширения возможностей аци-коннектора этот список будет меняться.



Текущие ограничения

Следующие функции Kubernetes в настоящее время не поддерживаются aci-коннектором:
  • Карты конфигурации
  • Секреты
  • Сервисные аккаунты
  • Объемы
  • журналы кубектла
  • kubectl исполнительный


Как быстро попробовать

  1. Редактировать файл примеры/aci-connector.yaml и укажите переменные среды.

  2. Запустите коннектор ACI с помощью kubectl create -f example/aci-connector.yaml.
  3. Подождите, пока команда kubectl get nodes отобразит узел aci-connector.
  4. Запустите под NGINX через ACI с помощью команды kubectl create -f example/nginx-pod.yaml.
  5. Откройте под NGINX, используя его публичный адрес.



Пошаговая инструкция



Создать группу ресурсов

Соединитель ACI создаст каждый экземпляр контейнера в указанной группе ресурсов.

Новую группу ресурсов можно создать с помощью следующей команды:

  
  
  
  
  
  
  
  
  
  
   

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

Отредактируйте файл example/aci-connector.yaml и задайте имя группы ресурсов в переменной среды ACI_RESOURCE_GROUP.

Создать принципала службы

Субъект-служба необходим для создания ресурсов в вашей подписке 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, расположенном в каталоге.

/charts/aci-коннектор .

Затем вы можете установить диаграмму:

$ 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

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.