Поделиться через


Подготовка кластера Kubernetes с поддержкой Azure Arc

Кластер Kubernetes с поддержкой Azure Arc является обязательным условием для развертывания операций Интернета вещей Azure. В этой статье описывается, как подготовить кластер перед развертыванием операций Интернета вещей Azure. В этой статье содержатся рекомендации по Ubuntu, Windows, Azure Local и Tanzu Kubernetes Grid (TKG).

Действия, описанные в этой статье, подготовят ваш кластер к развертыванию настроек безопасности, что является более длительным процессом, но готовым к использованию в производственных условиях. Если вы хотите быстро развернуть операции Azure IoT и запустить пример рабочей нагрузки только с тестовыми параметрами, см. Краткое руководство: Запуск операций Azure IoT в пространствах GitHub Codespaces с K3s. Дополнительные сведения о параметрах тестирования и безопасных параметрах см. в разделе "Сведения > о развертывании" "Выбор функций".

Пререквизиты

Корпорация Майкрософт поддерживает Azure Kubernetes Service (AKS) Edge Essentials для развертываний на Windows, K3s для развертываний на Ubuntu, развертывания AKS в локальной среде Azure и выпуск Tanzu Kubernetes (TKr) в TKG. Если вы хотите развернуть операции Интернета вещей Azure в решении с несколькими узлами, используйте K3s в Ubuntu.

Чтобы подготовить кластер Kubernetes с поддержкой Azure Arc, вам потребуется:

  • Подписка Azure с ролью владельца или сочетанием ролей участника и администратора доступа пользователей. Вы можете проверить уровень доступа, перейдя к подписке, выбрав управление доступом (IAM) в левой части портал Azure, а затем выберите "Просмотреть доступ". Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

  • Группа ресурсов Azure. Для каждой группы ресурсов поддерживается только один экземпляр Azure IoT Operations. Чтобы создать новую группу ресурсов, используйте команду az group create . Список поддерживаемых в настоящее время регионов Azure см. в разделе "Поддерживаемые регионы".

    az group create --location <REGION> --resource-group <RESOURCE_GROUP> --subscription <SUBSCRIPTION_ID>
    
  • Azure CLI версии 2.62.0 или более поздней версии, установленной на компьютере кластера. Используйте az --version для проверки версии и az upgrade обновления при необходимости. Дополнительные сведения см. в статье "Установка Azure CLI".

  • Последняя версия расширения connectedk8s для Azure CLI:

    az extension add --upgrade --name connectedk8s
    

Создайте кластер и подключите его к Arc

В этом разделе приведены инструкции по созданию кластеров в проверенных средах в Linux и Windows.

Чтобы подготовить кластер K3s Kubernetes в Ubuntu:

  1. Создайте кластер K3s с одним узлом или несколькими узлами. Примеры см. в кратком руководстве по началу работы K3s или связанных проектах K3s.

  2. Убедитесь, что kubectl был установлен в составе K3s. Если нет, следуйте инструкциям по установке kubectl в Linux.

    kubectl version --client
    
  3. Следуйте инструкциям по установке Helm.

  4. Создайте конфигурационный файл yaml для K3s в .kube/config:

    mkdir ~/.kube
    sudo KUBECONFIG=~/.kube/config:/etc/rancher/k3s/k3s.yaml kubectl config view --flatten > ~/.kube/merged
    mv ~/.kube/merged ~/.kube/config
    chmod  0600 ~/.kube/config
    export KUBECONFIG=~/.kube/config
    #switch to k3s context
    kubectl config use-context default
    sudo chmod 644 /etc/rancher/k3s/k3s.yaml
    
  5. Выполните следующую команду, чтобы увеличить лимиты наблюдений/экземпляров пользователя.

    echo fs.inotify.max_user_instances=8192 | sudo tee -a /etc/sysctl.conf
    echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    
  6. Для повышения производительности увеличьте ограничение дескриптора файла:

    echo fs.file-max = 100000 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    

Активируйте Arc для вашего кластера

Подключите кластер к Azure Arc, чтобы его можно было удаленно управлять.

  1. На устройстве с kubectl доступом к кластеру войдите в Azure CLI, используя учетную запись пользователя Microsoft Entra, который обладает необходимыми ролями в подписке Azure.

    az login
    

    Если в любой момент вы получите сообщение об ошибке, в которой говорится, что устройство должно быть управляемо для доступа к ресурсу, запустите az login еще раз и убедитесь, что вы войдете в интерактивный режим с помощью браузера.

  2. После входа Azure CLI отображает все подписки и указывает подписку по умолчанию со звездочкой *. Чтобы продолжить подписку по умолчанию, выберите Enter. В противном случае введите номер подписки Azure, которую вы хотите использовать.

  3. Зарегистрируйте необходимых поставщиков ресурсов в подписке.

    Примечание.

    Этот шаг необходимо выполнить только один раз для каждой подписки. Чтобы зарегистрировать поставщиков ресурсов, необходимо разрешение на выполнение операции /register/action, включенной в роли участника и владельца подписки. Дополнительные сведения см. в разделе "Поставщики и типы ресурсов Azure".

    az provider register -n "Microsoft.ExtendedLocation"
    az provider register -n "Microsoft.Kubernetes"
    az provider register -n "Microsoft.KubernetesConfiguration"
    az provider register -n "Microsoft.IoTOperations"
    az provider register -n "Microsoft.DeviceRegistry"
    az provider register -n "Microsoft.SecretSyncController"
    
  4. Используйте команду az connectedk8s connect, чтобы включить кластер Kubernetes и управлять им в составе группы ресурсов Azure.

    az connectedk8s connect --name <CLUSTER_NAME> -l <REGION> --resource-group <RESOURCE_GROUP> --subscription <SUBSCRIPTION_ID> --enable-oidc-issuer --enable-workload-identity --disable-auto-upgrade
    

    Чтобы предотвратить незапланированные обновления Azure Arc и системные расширения Arc, которые операции Интернета вещей Azure используют в качестве зависимостей, эта команда отключает автоматическое обновление. Вместо этого вручную обновите агентов по мере необходимости.

    Внимание

    Если в вашей среде используется прокси-сервер или шлюз Azure Arc, измените команду с помощью сведений о прокси-сервере az connectedk8s connect :

    1. Следуйте инструкциям в разделе "Подключение с использованием исходящего прокси-сервера" или "Подключение кластеров Kubernetes к Azure Arc с помощью шлюза Azure Arc".
    2. Добавьте 169.254.169.254 в --proxy-skip-range параметр az connectedk8s connect команды. Реестр устройств Azure использует эту локальную конечную точку для получения маркеров доступа для авторизации.

    Операции Интернета вещей Azure не поддерживают прокси-серверы, для которых требуется доверенный сертификат.

  5. Получите URL-адрес эмитента кластера.

    az connectedk8s show --resource-group <RESOURCE_GROUP> --name <CLUSTER_NAME> --query oidcIssuerProfile.issuerUrl --output tsv
    

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

  6. Создайте файл конфигурации k3s.

    sudo nano /etc/rancher/k3s/config.yaml
    
  7. Добавьте в файл следующее содержимое config.yaml , заменив <SERVICE_ACCOUNT_ISSUER> заполнитель URL-адресом издателя кластера.

    kube-apiserver-arg:
     - service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
     - service-account-max-token-expiration=24h
    
  8. Сохраните файл и закройте редактор nano.

  9. Подготовьтесь к включению службы Azure Arc, настраиваемого расположения в кластере Arc, получив идентификатор объекта пользовательского расположения и сохранив его в качестве переменной среды, OBJECT_ID. Для успешного выполнения команды необходимо войти в Azure CLI с учетной записью пользователя Microsoft Entra, а не с учетной записью сервисного принципала. Выполните следующую команду точно так же, как записано, без изменения значения GUID.

    export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
    

    Примечание.

    Если вы получите сообщение об ошибке: "Не удается получить oid из приложения custom-locations. Продолжайте без включения этой функции. Недостаточно привилегий для завершения операции", то субъект-служба может не получить необходимые разрешения для получения идентификатора объекта пользовательского расположения. Войдите в Azure CLI с учетной записью пользователя Microsoft Entra, которая соответствует предварительным требованиям. Дополнительные сведения см. в статье "Создание пользовательских расположений и управление ими".

  10. Используйте команду az connectedk8s enable-features, чтобы включить функцию пользовательского расположения в кластере Arc. Эта команда использует переменную среды OBJECT_ID, сохраненную на предыдущем шаге, чтобы задать значение параметра custom-locations-oid. Выполните следующую команду на компьютере, где развернут кластер Kubernetes:

    az connectedk8s enable-features -n <CLUSTER_NAME> -g <RESOURCE_GROUP> --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
    
  11. Перезапустите K3s.

    systemctl restart k3s
    

Настройка кластеров с несколькими узлами для хранилища контейнеров Azure

В кластерах Ubuntu с количеством узлов не менее трёх при развертывании Операций Интернета вещей Azure у вас есть возможность включить отказоустойчивость для хранилища с включенным хранилищем контейнеров Azure, поддерживаемым Azure Arc.

Если вы хотите включить отказоустойчивость во время развертывания, настройте кластеры, выполнив действия, описанные в разделе "Подготовка Linux для томов Edge" с помощью кластера Ubuntu с несколькими узлами.

Если вы используете кластер в дистрибутиве Kubernetes, отличном от k3s, ознакомьтесь с руководством по подготовке Linux с другими платформами.

Расширенная конфигурация

На этом этапе, когда у вас есть кластер Kubernetes с поддержкой Azure Arc, но прежде чем развернуть операции Azure IoT, вы можете захотеть настроить свой кластер для сложных сценариев.

Следующие шаги

Теперь, когда у вас есть кластер Kubernetes с поддержкой Azure Arc, можно развернуть операции Интернета вещей Azure.