Подготовка кластера 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.
- Требования к системе Kubernetes с поддержкой Azure Arc.
- Требования K3s.
Если вы собираетесь развернуть операции Интернета вещей Azure в кластере с поддержкой отказоустойчивости, просмотрите требования к оборудованию и хранилищу в разделе "Подготовка Linux для томов Edge".
Создание и включение Arc кластера
В этом разделе приведены инструкции по созданию кластеров в проверенных средах в Linux и Windows.
Чтобы подготовить кластер K3s Kubernetes в Ubuntu:
Создайте кластер K3s с одним узлом или несколькими узлами. Примеры см. в кратком руководстве по началу работы K3s или связанных проектах K3s.
Убедитесь, что kubectl был установлен в составе K3s. Если нет, следуйте инструкциям по установке kubectl в Linux.
kubectl version --client
Следуйте инструкциям по установке Helm.
Создайте 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
Выполните следующую команду, чтобы увеличить ограничения часов или экземпляров пользователя.
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
Для повышения производительности увеличьте ограничение дескриптора файла:
echo fs.file-max = 100000 | sudo tee -a /etc/sysctl.conf sudo sysctl -p
Включение Arc кластера
Подключите кластер к Azure Arc, чтобы его можно было удаленно управлять.
На компьютере, на котором развернут кластер Kubernetes, войдите в Azure CLI с учетной записью пользователя Microsoft Entra, которая имеет необходимые роли для подписки Azure:
az login
Если в любой момент вы получите сообщение об ошибке, в которой говорится, что устройство должно быть управляемо для доступа к ресурсу, запустите
az login
еще раз и убедитесь, что вы войдете в интерактивный режим с помощью браузера.После входа Azure CLI отображает все подписки и указывает подписку по умолчанию со звездочкой
*
. Чтобы продолжить подписку по умолчанию, выберитеEnter
. В противном случае введите номер подписки Azure, которую вы хотите использовать.Зарегистрируйте необходимых поставщиков ресурсов в подписке.
Примечание.
Этот шаг необходимо выполнить только один раз для каждой подписки. Чтобы зарегистрировать поставщиков ресурсов, необходимо разрешение на
/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"
Используйте команду 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
:- Следуйте инструкциям в разделе "Подключение" с помощью исходящего прокси-сервера или кластеров Kubernetes в Azure Arc с помощью шлюза Azure Arc.
- Добавьте
169.254.169.254
в--proxy-skip-range
параметрaz connectedk8s connect
команды. Реестр устройств Azure использует эту локальную конечную точку для получения маркеров доступа для авторизации.
Операции Интернета вещей Azure не поддерживают прокси-серверы, для которых требуется доверенный сертификат.
Получите URL-адрес издателя кластера.
az connectedk8s show --resource-group <RESOURCE_GROUP> --name <CLUSTER_NAME> --query oidcIssuerProfile.issuerUrl --output tsv
Сохраните выходные данные этой команды для использования в следующих шагах.
Создайте файл конфигурации k3s.
sudo nano /etc/rancher/k3s/config.yaml
Добавьте в файл следующее содержимое
config.yaml
, заменив<SERVICE_ACCOUNT_ISSUER>
заполнитель URL-адресом издателя кластера.kube-apiserver-arg: - service-account-issuer=<SERVICE_ACCOUNT_ISSUER> - service-account-max-token-expiration=24h
Сохраните файл и закройте редактор nano.
Подготовьтесь к включению службы 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
Используйте команду 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
Перезапустите K3s.
systemctl restart k3s
Настройка кластеров с несколькими узлами для хранилища контейнеров Azure
В кластерах с несколькими узлами с по крайней мере тремя узлами можно включить отказоустойчивость хранилища с помощью хранилища контейнеров Azure, включенного Azure Arc при развертывании операций Интернета вещей Azure.
Если вы хотите включить отказоустойчивость во время развертывания, настройте кластеры, выполнив действия, описанные в разделе "Подготовка Linux для томов Edge" с помощью кластера Ubuntu с несколькими узлами.
Расширенная конфигурация
На этом этапе при наличии кластера Kubernetes с поддержкой Azure Arc, но перед развертыванием операций Интернета вещей Azure в нем может потребоваться настроить кластер для расширенных сценариев.
- Если вы хотите включить функции наблюдения в кластере, выполните действия, описанные в разделе "Развертывание ресурсов наблюдаемости" и настройка журналов.
- Если вы хотите настроить собственный издатель сертификатов в кластере, выполните действия, описанные в разделе "Управление > сертификатами".
Следующие шаги
Теперь, когда у вас есть кластер Kubernetes с поддержкой Azure Arc, можно развернуть операции Интернета вещей Azure.