你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Cloud Ingest Edge Volume 配置
本文介绍 Cloud Ingest Edge Volume(使用本地清除的 blob 上传)的配置。
什么是 Cloud Ingest Edge Volume?
Cloud Ingest Edge Volume 可促进从边缘到 Blob 的无限数据引入,包括 ADLSgen2。 写入此存储类型的文件会无缝传输到 Blob 存储,并在确认上传后在本地清除。 此删除操作可以给新数据腾出空间。 此外,此存储选项还支持离线环境中的数据完整性,可以在重新连接到网络时实现本地存储和同步。
例如,可以将文件写入 Cloud Ingest PVC,进程运行扫描以检查每分钟是否有新文件。 标识后,将发送文件以上传到指定的 Blob 目标。 确认成功上传后,Cloud Ingest Edge Volume 会等待 5 分钟,然后删除文件的本地版本。
先决条件
配置扩展标识
Edge Volume 允许使用系统分配的扩展标识来访问 Blob 存储。 本部分介绍如何使用系统分配的扩展标识来授予对存储帐户的访问权限,以便将 Cloud Ingest Volume 上传到这些存储系统。
建议使用扩展标识。 如果最终目标是 Blob 存储或 ADLSgen2,请参阅以下说明。 如果最终目标是 OneLake,请按照配置 OneLake for Extension Identity 中的说明操作。
若要使用基于密钥的身份验证(不建议),请按照基于密钥的身份验证中的说明操作。
获取扩展标识
Azure 门户
- 导航到已连接 Arc 的群集。
- 选择扩展。
- 选择由 Azure Arc 扩展启用的 Azure 容器存储。
- 记下“群集扩展详细信息”下的主体 ID。
为扩展标识配置 Blob 存储帐户
向存储帐户添加扩展标识权限
- 导航到 Azure 门户中的存储帐户。
- 选择“访问控制 (IAM)”。
- 选择“添加+”->“添加角色分配”。
- 选择“存储 Blob 数据所有者”,然后选择“下一步”。
- 选择“+选择成员”。
- 若要将主体 ID 添加到“所选成员:”列表,请粘贴 ID,然后选择标识旁边的 +。
- 单击“选择”。
- 若要查看和分配权限,请选择“下一步”,然后选择“审阅 + 分配”。
创建 Cloud Ingest 永久性卷声明 (PVC)
创建包含以下内容的名为
cloudIngestPVC.yaml
的文件。 编辑metadata.name
行并为永久性卷声明创建名称。 此名称在下一步deploymentExample.yaml
的最后一行引用。 此外,请用预期使用的 Pod 更新metadata.namespace
值。 如果没有预期使用的 Pod,则metadata.namespace
值为default
。spec.resources.requests.storage
参数可确定永久性卷的大小。 它在此示例中为 2 GB,但可以修改它以满足你的需求:注意
只使用小写字母和短划线。 有关详细信息,请参阅 Kubernetes 对象命名文档。
kind: PersistentVolumeClaim apiVersion: v1 metadata: ### Create a name for your PVC ### name: <create-persistent-volume-claim-name-here> ### Use a namespace that matched your intended consuming pod, or "default" ### namespace: <intended-consuming-pod-or-default-here> spec: accessModes: - ReadWriteMany resources: requests: storage: 2Gi storageClassName: cloud-backed-sc
如果要应用
cloudIngestPVC.yaml
,请运行:kubectl apply -f "cloudIngestPVC.yaml"
将子卷附加到边缘卷
若要使用扩展标识创建子卷以连接到存储帐户容器,请使用以下流程:
使用以下命令获取 Ingest Edge Volume 的名称:
kubectl get edgevolumes
创建一个名为
edgeSubvolume.yaml
的文件,并复制以下内容。 必须使用你的信息更新这些变量:注意
只使用小写字母和短划线。 有关详细信息,请参阅 Kubernetes 对象命名文档。
metadata.name
:为子卷创建名称。spec.edgevolume
:此名称是使用kubectl get edgevolumes
从上一步检索的。spec.path
:在装载路径下创建自己的子目录名称。 以下示例已包含示例名称(exampleSubDir
)。 如果更改此路径名称,则必须使用新路径名称更新deploymentExample.yaml
中的第 33 行。 如果选择重命名路径,请不要在前面使用斜杠。spec.container
:存储帐户中的容器名称。spec.storageaccountendpoint
:导航到 Azure 门户中的存储帐户。 在屏幕右上角的“概览”页中,选择“JSON 视图”。 可以在 properties.primaryEndpoints.blob 下找到storageaccountendpoint
链接。 复制整个链接;例如,https://mytest.blob.core.windows.net/
。
apiVersion: "arccontainerstorage.azure.net/v1" kind: EdgeSubvolume metadata: name: <create-a-subvolume-name-here> spec: edgevolume: <your-edge-volume-name-here> path: exampleSubDir # If you change this path, line 33 in deploymentExample.yaml must be updated. Don't use a preceding slash. auth: authType: MANAGED_IDENTITY storageaccountendpoint: "https://<STORAGE ACCOUNT NAME>.blob.core.windows.net/" container: <your-blob-storage-account-container-name> ingestPolicy: edgeingestpolicy-default # Optional: See the following instructions if you want to update the ingestPolicy with your own configuration
如果要应用
edgeSubvolume.yaml
,请运行:kubectl apply -f "edgeSubvolume.yaml"
可选:修改 ingestPolicy
默认值
如果要更改默认为
edgeingestpolicy-default
的ingestPolicy
,请创建包含以下内容的名为myedgeingest-policy.yaml
的文件。 必须使用你的偏好设置更新以下变量:注意
只使用小写字母和短划线。 有关详细信息,请参阅 Kubernetes 对象命名文档。
metadata.name
:为 ingestPolicy 创建名称。 必须在edgeSubvolume.yaml
的spec.ingestPolicy
节中更新并引用此名称。spec.ingest.order
:上传脏文件的顺序。 只是尽量遵守,而非保证(默认为“最早优先”)。 顺序选项包括“最早优先”和“最近优先”。spec.ingest.minDelaySec
:脏文件符合引入条件前的最小秒数(默认值为 60)。 此数字可以介于 0 和 31536000 之间。spec.eviction.order
:如何逐出文件(默认值为“无序”)。 逐出顺序的选项包括:“无序”和“从不”。spec.eviction.minDelaySec
:干净文件符合逐出条件前的秒数(默认值为 300)。 此数字可以介于 0 和 31536000 之间。
apiVersion: arccontainerstorage.azure.net/v1 kind: EdgeIngestPolicy metadata: name: <create-a-policy-name-here> # This must be updated and referenced in the spec.ingestPolicy section of the edgeSubvolume.yaml spec: ingest: order: <your-ingest-order> minDelaySec: <your-min-delay-sec> eviction: order: <your-eviction-order> minDelaySec: <your-min-delay-sec>
有关这些规范的详细信息,请参阅设置引入策略。
如果要应用
myedgeingest-policy.yaml
,请运行:kubectl apply -f "myedgeingest-policy.yaml"
附加应用(Kubernetes 本机应用程序)
若要针对永久性卷声明 (PVC) 配置通用单一 Pod(Kubernetes 本机应用程序),请创建一个包含以下内容的名为
deploymentExample.yaml
的文件。 修改containers.name
和volumes.persistentVolumeClaim.claimName
值。 如果从edgeSubvolume.yaml
更新路径名称,则必须使用新路径名称更新exampleSubDir
的第 33 行。spec.replicas
参数可确定要创建的副本 Pod 数。 它在此示例中为 2,但可以修改它以满足你的需求:注意
只使用小写字母和短划线。 有关详细信息,请参阅 Kubernetes 对象命名文档。
apiVersion: apps/v1 kind: Deployment metadata: name: cloudingestedgevol-deployment ### This must be unique for each deployment you choose to create. spec: replicas: 2 selector: matchLabels: name: wyvern-testclientdeployment template: metadata: name: wyvern-testclientdeployment labels: name: wyvern-testclientdeployment spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - wyvern-testclientdeployment topologyKey: kubernetes.io/hostname containers: ### Specify the container in which to launch the busy box. ### - name: <create-a-container-name-here> image: mcr.microsoft.com/azure-cli:2.57.0@sha256:c7c8a97f2dec87539983f9ded34cd40397986dcbed23ddbb5964a18edae9cd09 command: - "/bin/sh" - "-c" - "dd if=/dev/urandom of=/data/exampleSubDir/acsaingesttestfile count=16 bs=1M && while true; do ls /data &>/dev/null || break; sleep 1; done" volumeMounts: ### This name must match the volumes.name attribute below ### - name: wyvern-volume ### This mountPath is where the PVC is attached to the pod's filesystem ### mountPath: "/data" volumes: ### User-defined 'name' that's used to link the volumeMounts. This name must match volumeMounts.name as previously specified. ### - name: wyvern-volume persistentVolumeClaim: ### This claimName must refer to your PVC metadata.name (Line 5) claimName: <your-pvc-metadata-name-from-line-5-of-pvc-yaml>
如果要应用
deploymentExample.yaml
,请运行:kubectl apply -f "deploymentExample.yaml"
使用
kubectl get pods
查找 Pod 的名称。 复制此名称以在下一步中使用。注意
由于已将
deploymentExample.yaml
的spec.replicas
指定为2
,因此会出现两个使用kubectl get pods
的 Pod。 可以选择任一 Pod 名称用于下一步。运行以下命令,并将
POD_NAME_HERE
替换为上一步复制的值:kubectl exec -it POD_NAME_HERE -- sh
将目录更改为
deploymentExample.yaml
指定的/data
装载路径。你应会看到一个目录,其名称为在“将子卷附加到边缘卷”部分的步骤 2 中指定的
path
。 将目录更改为/YOUR_PATH_NAME_HERE
,将YOUR_PATH_NAME_HERE
值替换为你的详细信息。例如,创建一个名为
file1.txt
的文件并使用echo "Hello World" > file1.txt
写入。在 Azure 门户中,导航到存储帐户,并查找在“将子卷附加到边缘卷”的步骤 2 中指定的容器。 选择容器时,应会发现容器中已填充
file1.txt
。 如果文件尚未显示,请等待大约 1 分钟;Edge 卷会等待一分钟才会上传。
后续步骤
完成这些步骤后,可以开始使用 Azure Monitor 和 Kubernetes 监视功能来监视部署,或者使用 Prometheus 和 Grafana 进行第三方监视。