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


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

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

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

Необходимые компоненты

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

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

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

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

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

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

    az extension add --upgrade --name connectedk8s
    
  • Оборудование, соответствующее требованиям к системе:

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

Создание и включение 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. На компьютере, на котором развернут кластер Kubernetes, войдите в 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, которая соответствует предварительным требованиям. См: https://aka.ms/enable-cl-sp

  1. Используйте команду 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
    
  2. Перезапустите K3s.

    systemctl restart k3s
    

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

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

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

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

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

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

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