» » Коннектор Azure Container Instances для Kubernetes

 

Коннектор Azure Container Instances для Kubernetes

Автор: admin от 26-09-2017, 11:45, посмотрело: 493

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



Этот коннектор является экспериментальным и его не следует использовать для реальных проектов.



Коннектор Azure Container Instances для Kubernetes
ограничений и допусков(taints и tolerations).



Коннектор Azure Container Instances для Kubernetes



Требования




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

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



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



    В дополнении к примерам на текущий момент поддерживаются следующие функции Kubernetes, если они определены в манифесте пода. По мере расширения возможностей коннектора aci-connector этот список будет изменяться.



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



    Следующие функции Kubernetes в настоящее время не поддерживаются коннектором aci-connector:


    • ConfigMaps

    • Secrets

    • ServiceAccounts

    • Volumes

    • kubectl logs

    • kubectl exec



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




  • Отредактируйте файл examples/aci-connector.yaml и укажите переменные среды.

  • Запустите коннектор ACI Connector командой kubectl create -f examples/aci-connector.yaml.

  • Дождитесь, пока команда kubectl get nodes отобразит узел aci-connector.

  • Запустите под NGINX через ACI командой kubectl create -f examples/nginx-pod.yaml.

  • Откройте под NGINX с помощью его общедоступного адреса.



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



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



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

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


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



    Создайте Service Principal



    Service Principal необходим для создания ресурсов в вашей подписке Azure с помощью коннектора ACI Connector. Создать Service Principal можно с помощью Azure CLI в соответсвии с инструкцией ниже.



    Найдите subscriptionId с помощью 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>"
    }
    


    Отредактируйте файл examples/aci-connector.yaml и введите переменные среды, используя указанные выше значения:

    • AZURE_CLIENT_ID: введите идентификатор приложения appId.

    • AZURE_CLIENT_KEY: введите пароль.

    • AZURE_TENANT_ID: укажите тенант.

    • AZURE_SUBSCRIPTION_ID: введите идентификатор подписки subscriptionId.



    Убедитесь, что провайдер 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 Connector



    $ 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 Connector с Helm (опционально)



    Сначала укажите значения в файле values.yaml, находящемся в каталоге /charts/aci-connector.

    Затем можно установить чарт:

    $ 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
    


    Установите пример c 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 имеет ограничение (taint) (azure.com/aci) с эффектом NoSchedule по умолчанию. Это означает, что по умолчанию поды не запускаются на узле aci, если они не размещаются там явно.



    Тем не менее планировщик Kubernetes может включать под, который допускает (tolerates) это ограничение, в график узла aci.



    Ссылка на пример пода с таким допуском.



    Воспользоваться этим подом легко:

    $ kubectl create -f examples/nginx-pod-tolerations.yaml
    


    Обратите внимание, что при наличии других узлов в вашем кластере этот под не обязательно размещается в службе экземпляров контейнеров Azure.



    Для того чтобы принудительно развернуть под в службе экземпляров контейнеров Azure, можно явно указать NodeName, как в первом примере, либо удалить все остальные узлы кластера командой kubectl delete nodes . Третий вариант — развернуть в кластере другие рабочие нагрузки; в этом случае планировщик будет обязан запланировать выполнение вашей задачи через API службы экземпляров контейнеров Azure.



    Использование сборок Canary



    Сборки Canary — это версии коннектора, которые периодически создаются из главной ветки. Поскольку эти сборки не являются официальными выпусками, их стабильность не гарантирована, однако они позволяют тестировать новейшие функции.



    Для того чтобы воспользоваться последней версией Canary, вы можете установить пакет обновлений для своего соединителя aci-connector и обновить тег контейнера, используя следующую команду:

    $ kubectl set image deploy/aci-connector aci-connector=microsoft/aci-connector-k8s:canary
    


    Источник: Хабрахабр

    Категория: Программирование, Microsoft

    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

    Добавление комментария

    Имя:*
    E-Mail:
    Комментарий:
    Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
    Введите два слова, показанных на изображении: *