Создание контроллера данных Azure Arc с помощью CLI

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

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

Установка инструментов

Перед началом установки arcdata расширения для Azure (az) CLI.

Установка расширения (arcdata) для Azure (az) CLI

Независимо от выбранной целевой платформы необходимо задать следующие переменные среды перед созданием контроллера данных. Эти переменные среды становятся учетными данными, используемыми для доступа к метрикам и панелям мониторинга журналов после создания контроллера данных.

Настройка переменных среды

Ниже приведены два набора переменных среды, необходимых для доступа к метрикам и панелям мониторинга журналов.

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

## variables for Metrics and Monitoring dashboard credentials
export AZDATA_LOGSUI_USERNAME=<username for Kibana dashboard>
export AZDATA_LOGSUI_PASSWORD=<password for Kibana dashboard>
export AZDATA_METRICSUI_USERNAME=<username for Grafana dashboard>
export AZDATA_METRICSUI_PASSWORD=<password for Grafana dashboard>

Подключение к кластеру Kubernetes

Подключитесь к кластеру Kubernetes и выполните проверку подлинности и выберите существующий контекст Kubernetes до начала создания контроллера данных Azure Arc. Способ подключения к кластеру или службе Kubernetes может быть разным. См. документацию по дистрибутиву Kubernetes или службе, которую вы используете для подключения к серверу API Kubernetes.

Вы можете убедиться в наличии текущего подключения к Kubernetes и проверить текущий контекст с помощью следующих команд.

kubectl cluster-info
kubectl config current-context

Создание контроллера данных Azure Arc

В следующих разделах приведены инструкции по определенным типам платформ Kubernetes. Следуйте инструкциям для вашей платформы.

Совет

Если у вас нет кластера Kubernetes, его можно создать в Azure. Следуйте инструкциям в кратком руководстве. Развертывание служб данных с поддержкой Azure Arc — режим подключения напрямую портал Azure для выполнения всего процесса.

Затем следуйте инструкциям в разделе "Создать" Служба Azure Kubernetes (AKS).

Создание в службе Azure Kubernetes (AKS)

В профиле развертывания AKS по умолчанию используется класс хранения managed-premium. Класс managed-premium хранилища работает только в том случае, если у вас есть виртуальные машины, развернутые с помощью образов виртуальных машин с дисками класса Premium.

Если вы хотите использовать managed-premium в качестве класса хранения, для создания контроллера данных можно выполнить следующую. Замените заполнители в этой команде именем группы ресурсов, идентификатором подписки и расположением Azure.

az arcdata dc create --profile-name azure-arc-aks-premium-storage --k8s-namespace <namespace> --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect --use-k8s

#Example:
#az arcdata dc create --profile-name azure-arc-aks-premium-storage --k8s-namespace arc --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect --use-k8s

Если вы не знаете, какой класс хранения использовать, нужно применить класс хранения default, который поддерживается независимо от типа используемой виртуальной машины. Только этот класс хранения не обеспечивает максимальную производительность.

Если вы хотите использовать класс хранения default, можно выполнить следующую команду:

az arcdata dc create --profile-name azure-arc-aks-default-storage --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect

#Example:
#az arcdata dc create --profile-name azure-arc-aks-default-storage  --k8s-namespace arc --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect

После выполнения этой команды перейдите в раздел Наблюдение за состоянием создания.

Создание в AKS в Azure Stack HCI

Настройка хранилища (Azure Stack HCI с AKS-HCI)

Если вы используете Azure Stack HCI с AKS-HCI, создайте пользовательский класс хранилища с fsTypeпомощью .

fsType: ext4

Используйте этот тип для развертывания контроллера данных. Ознакомьтесь с полными инструкциями в статье Создание пользовательского класса хранения для диска Службы Azure Kubernetes в Azure Stack HCI.

По умолчанию профиль развертывания использует класс хранения с именем default и тип службы LoadBalancer.

Вы можете выполнить следующую команду, чтобы создать контроллер данных с классом хранения default и типом службы LoadBalancer.

az arcdata dc create --profile-name azure-arc-aks-hci  --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect

#Example:
#az arcdata dc create --profile-name azure-arc-aks-hci  --k8s-namespace arc --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect

После выполнения этой команды перейдите в раздел Наблюдение за состоянием создания.

Создание в Azure Red Hat OpenShift (ARO)

Создание настраиваемого профиля развертывания

Для Azure RedHat Open Shift используйте профиль azure-arc-azure-openshift.

az arcdata dc config init --source azure-arc-azure-openshift --path ./custom

Создание контроллера данных

Для создания контроллера данных можно выполнить следующую команду:

az arcdata dc create --profile-name azure-arc-azure-openshift  --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect

#Example
#az arcdata dc create --profile-name azure-arc-azure-openshift  --k8s-namespace arc --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect

После выполнения этой команды перейдите в раздел Наблюдение за состоянием создания.

Создание на платформе контейнеров Red Hat OpenShift (OCP)

Определение класса хранилища

Чтобы определить, какой класс хранилища следует использовать, выполните следующую команду.

kubectl get storageclass

Создание настраиваемого профиля развертывания

Создайте новый файл настраиваемого профиля развертывания на основе профиля развертывания azure-arc-openshift, выполнив следующую команду. Эта команда создает каталог custom в текущем рабочем каталоге и файл настраиваемого профиля развертывания control.json в этом каталоге.

Используйте профиль azure-arc-openshift для платформы контейнеров OpenShift.

az arcdata dc config init --source azure-arc-openshift --path ./custom

Задание класса хранения

Теперь задайте необходимый класс хранения, заменив <storageclassname> в приведенной ниже команде именем класса хранения, который вы хотите использовать и который был определен при выполнении команды kubectl get storageclass ранее.

az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.data.className=<storageclassname>"
az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.logs.className=<storageclassname>"

#Example:
#az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.data.className=mystorageclass"
#az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.logs.className=mystorageclass"

Задание балансировщика нагрузки (необязательно)

По умолчанию в профиле развертывания azure-arc-openshift в качестве типа службы используется NodePort. Если вы используете кластер OpenShift, интегрированный с подсистемой балансировки нагрузки, можно изменить конфигурацию для использования типа службы LoadBalancer с помощью следующей команды:

az arcdata dc config replace --path ./custom/control.json --json-values "$.spec.services[*].serviceType=LoadBalancer"

Создание контроллера данных

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

Примечание.

Параметр --path должен указывать на каталог, содержащий файл control.json, а не на сам файл control.json.

Примечание.

При развертывании на платформе контейнеров OpenShift укажите --infrastructure значение параметра. Возможные варианты: aws, azure, alibaba, gcp, onpremises.

az arcdata dc create --path ./custom  --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect --infrastructure <infrastructure>

#Example:
#az arcdata dc create --path ./custom  --k8s-namespace arc --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect --infrastructure onpremises

После выполнения этой команды перейдите в раздел Наблюдение за состоянием создания.

Создание в вышестоящем Kubernetes с открытым кодом (kubeadm)

По умолчанию в профиле развертывания kubeadm использует класс хранения с именем local-storage и тип службы NodePort. Если это устраивает вас, можно пропустить приведенные ниже инструкции, которые задают необходимый класс хранения и тип службы, и сразу же выполнить следующую команду az arcdata dc create.

Если вы хотите настроить профиль развертывания, указав конкретный класс хранения и (или) тип службы, начните с создания нового файла настраиваемого профиля развертывания на основе профиля развертывания kubeadm, выполнив следующую команду. Эта команда создает каталог custom в текущем рабочем каталоге и файл настраиваемого профиля развертывания control.json в этом каталоге.

az arcdata dc config init --source azure-arc-kubeadm --path ./custom 

Доступные классы хранения можно найти, выполнив следующую команду.

kubectl get storageclass

Теперь задайте необходимый класс хранения, заменив <storageclassname> в приведенной ниже команде именем класса хранения, который вы хотите использовать и который был определен при выполнении команды kubectl get storageclass ранее.

az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.data.className=<storageclassname>"
az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.logs.className=<storageclassname>"

#Example:
#az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.data.className=mystorageclass"
#az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.logs.className=mystorageclass"

По умолчанию в профиле развертывания kubeadm в качестве типа службы используется NodePort. Если вы используете кластер Kubernetes, интегрированный с подсистемой балансировки нагрузки, конфигурацию можно изменить с помощью следующей команды.

az arcdata dc config replace --path ./custom/control.json --json-values "$.spec.services[*].serviceType=LoadBalancer"

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

Примечание.

При развертывании на платформе контейнеров OpenShift укажите --infrastructure значение параметра. Возможные варианты: aws, azure, alibaba, gcp, onpremises.

az arcdata dc create --path ./custom  --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect --infrastructure <infrastructure>

#Example:
#az arcdata dc create --path ./custom - --k8s-namespace <namespace> --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect --infrastructure onpremises

После выполнения этой команды перейдите в раздел Наблюдение за состоянием создания.

Создание в службе AWS Elastic Kubernetes Service (EKS)

По умолчанию класс хранения EKS имеет значение gp2, а тип службы — LoadBalancer.

Выполните следующую команду, чтобы создать контроллер данных с помощью указанного профиля развертывания EKS.

az arcdata dc create --profile-name azure-arc-eks  --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect

#Example:
#az arcdata dc create --profile-name azure-arc-eks  --k8s-namespace <namespace> --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect

После выполнения этой команды перейдите в раздел Наблюдение за состоянием создания.

Создание в службе Google Cloud Kubernetes Engine Service (GKE)

По умолчанию класс хранения GKE имеет значение standard, а тип службы — LoadBalancer.

Выполните следующую команду, чтобы создать контроллер данных с помощью указанного профиля развертывания GKE.

az arcdata dc create --profile-name azure-arc-gke --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect

#Example:
#az arcdata dc create --profile-name azure-arc-gke --k8s-namespace <namespace> --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect

После выполнения этой команды перейдите в раздел Наблюдение за состоянием создания.

Мониторинг состояния создания

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

Примечание.

В приведенных ниже командах предполагается, что вы создали контроллер данных с именем arc-dc и пространство имен arcKubernetes. Если вы использовали разные значения, измените скрипт соответствующим образом.

kubectl get datacontroller/arc-dc --namespace arc
kubectl get pods --namespace arc

Вы также можете проверить состояние создания любого объекта pod, выполнив команду, как показано ниже. Это особенно полезно для устранения неполадок.

kubectl describe po/<pod name> --namespace arc

#Example:
#kubectl describe po/control-2g7bl --namespace arc

Устранение неполадок при создании

Если при создании у вас возникли какие-либо проблемы, ознакомьтесь с Руководством по устранению неполадок.