你当前正在访问 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 平台的说明。 按平台说明操作。
- Azure Kubernetes 服务 (AKS)
- Azure Stack HCI 上的 AKS
- Azure Red Hat OpenShift (ARO)
- Red Hat OpenShift 容器平台 (OCP)
- 开源的上游 Kubernetes (kubeadm)
- AWS 弹性 Kubernetes 服务 (EKS)
- Google Cloud Kubernetes 引擎服务 (GKE)
提示
如果没有 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
参数值。 选项有: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 弹性 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
排查创建问题
如果在创建过程中遇到任何问题,请参阅故障排除指南。