你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 CLI 创建 Azure Arc 数据控制器

先决条件

请参阅规划启用了 Azure Arc 的数据服务部署主题,了解概述信息。

安装工具

在开始之前,请安装 Azure (az) CLI 的 arcdata 扩展。

安装适用于 Azure (az) CLI 的 (arcdata) 扩展

无论选择哪个目标平台,都需要在创建数据控制器之前设置以下环境变量。 创建数据控制器后,这些环境变量将成为用于访问指标和日志仪表板的凭据。

设置环境变量。

下面是访问指标和日志仪表板所需的两组环境变量。

环境变量包括日志和指标服务的密码。 密码长度必须至少为 8 个字符,且必须包含以下四种类别中三种类别的字符:拉丁大写字母、拉丁小写字母、数字和非字母数字字符。

## 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 群集

在开始创建 Azure Arc 数据控制器之前,请连接到 Kubernetes 群集并向其进行身份验证,并选择一个现有的 Kubernetes 上下文。 连接到 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 存储类。 仅当使用具有高级磁盘的 VM 映像部署了 VM 时,managed-premium 存储类才适用。

如果要使用 managed-premium 作为存储类,则可以运行以下命令来创建数据控制器。 用资源组名称、订阅 ID 和 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

如果不确定要使用哪种存储类,则应使用无论使用的是哪种 VM 类型均受支持的 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

运行该命令后,请继续监视创建状态

在 Azure Stack HCI 上的 AKS 上进行创建

配置存储(包含 AKS-HCI 的 Azure Stack HCI)

如果使用包含 AKS-HCI 的 Azure Stack HCI,请使用 fsType 创建一个自定义存储类。

fsType: ext4

使用此类型可以部署数据控制器。 请参阅在 Azure Stack HCI 上的 AKS 磁盘上创建自定义存储类中的完整说明。

默认情况下,此部署配置文件使用名为 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

使用 OpenShift 容器平台的 azure-arc-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"

设置 LoadBalancer(可选)

默认情况下,此 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 参数值。 选项有:awsazurealibabagcponpremises

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 参数值。 选项有:awsazurealibabagcponpremises

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 弹性 Kubernetes 服务 (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 引擎服务 (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 的数据控制器和名为 arc 的 Kubernetes 命名空间。 如果使用了不同的值,请相应地更新脚本。

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

排查创建问题

如果在创建过程中遇到任何问题,请参阅故障排除指南