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

备用:云引入边缘卷的 OneLake 配置

本文介绍了适用于 OneLake Lakehouse 的云引入边缘卷的备用配置(使用本地清除的 Blob 上传)。

为扩展标识配置 OneLake

将扩展标识添加到 OneLake 工作区

  1. 导航到 OneLake 门户;例如,https://youraccount.powerbi.com
  2. 创建或导航到工作区。 显示门户中工作区功能区的屏幕截图。
  3. 选择“管理访问”。 显示门户中“管理访问”屏幕的屏幕截图。
  4. 选择“添加人员或组”。
  5. 输入由 Azure Arc 安装启用的 Azure 容器存储中的扩展名称。 此名称在租户中必须是唯一的。 显示“添加扩展名称”屏幕的屏幕截图。
  6. 将权限下拉列表从“查看者”更改为“参与者”。 显示“设置参与者”屏幕的屏幕截图。
  7. 选择 添加

创建云引入永久性卷声明 (PVC)

  1. 创建包含以下内容的名为 cloudIngestPVC.yaml 的文件。 使用永久性卷声明的名称修改 metadata.name 值。 下一步中 deploymentExample.yaml 的最后一行将会引用此名称。 你还必须通过预期使用的 Pod 更新 metadata.namespace 值。 如果没有预期使用的 Pod,则 metadata.namespace 值为 default

    注意

    只使用小写字母和短划线。 有关详细信息,请参阅 Kubernetes 对象命名文档

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      ### Create a nane for your PVC ###
      name: <create-a-pvc-name-here>
      ### Use a namespace that matches your intended consuming pod, or "default" ###
      namespace: <intended-consuming-pod-or-default-here>
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 2Gi
      storageClassName: cloud-backed-sc
    
  2. 如果要应用 cloudIngestPVC.yaml,请运行:

    kubectl apply -f "cloudIngestPVC.yaml"
    

将子卷附加到边缘卷

可以使用以下过程通过扩展标识创建子卷,以连接到 OneLake LakeHouse。

  1. 使用以下命令获取边缘卷的名称:

    kubectl get edgevolumes
    
  2. 创建名为 edgeSubvolume.yaml 的文件并复制/粘贴以下内容。 必须使用你的信息更新以下变量:

    注意

    只使用小写字母和短划线。 有关详细信息,请参阅 Kubernetes 对象命名文档

    • metadata.name:为子卷创建名称。
    • spec.edgevolume:此名称是使用 kubectl get edgevolumes 从上一步检索的。
    • spec.path:在装载路径下创建自己的子目录名称。 以下示例已包含示例名称(exampleSubDir)。 如果更改此路径名称,则必须使用新路径名称更新 deploymentExample.yaml 中的第 33 行。 如果选择重命名路径,请不要在前面使用斜杠。
    • spec.container:One Lake Data Lake Lakehouse 的详细信息(例如 <WORKSPACE>/<DATA_LAKE>.Datalake/Files)。
    • spec.storageaccountendpoint:存储帐户终结点是 Power BI Web 链接的前缀。 例如,如果 OneLake 页面为 https://contoso-motors.powerbi.com/,则终结点为 https://contoso-motors.dfs.fabric.microsoft.com
    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 to be updated. Don't use a preceding slash.
      auth:
        authType: MANAGED_IDENTITY
      storageaccountendpoint: "https://<Your AZ Site>.dfs.fabric.microsoft.com/" # Your AZ site is the root of your Power BI OneLake interface URI, such as https://contoso-motors.powerbi.com
      container: "<WORKSPACE>/<DATA_LAKE>.Datalake/Files" # Details of your One Lake Data Lake Lakehouse
      ingestPolicy: edgeingestpolicy-default # Optional: See the following instructions if you want to update the ingestPolicy with your own configuration
    
  3. 如果要应用 edgeSubvolume.yaml,请运行:

    kubectl apply -f "edgeSubvolume.yaml"
    

可选:修改 ingestPolicy 默认值

  1. 如果要更改默认为 edgeingestpolicy-defaultingestPolicy,请创建包含以下内容的名为 myedgeingest-policy.yaml 的文件。 必须使用你的偏好设置更新以下变量:

    注意

    只使用小写字母和短划线。 有关详细信息,请参阅 Kubernetes 对象命名文档

    • metadata.name:创建 ingestPolicy 的名称。 必须在 edgeSubvolume.yamlspec.ingestPolicy 部分中更新并引用此名称。
    • spec.ingest.order:上传脏文件的顺序。 这是尽最大努力,而不是保证(默认为 oldest-first)。 顺序选项为:oldest-firstnewest-first
    • spec.ingest.minDelaySec:脏文件符合引入条件前的最小秒数(默认值为 60)。 此数字可以介于 0 和 31536000 之间。
    • spec.eviction.order:如何逐出文件(默认值为 unordered)。 逐出顺序的选项为:unorderednever
    • spec.eviction.minDelaySec:干净文件符合逐出条件前的秒数(默认值为 300)。 此数字可以介于 0 和 31536000 之间。
    apiVersion: arccontainerstorage.azure.net/v1
    kind: EdgeIngestPolicy
    metadata:
      name: <create-a-policy-name-here> # This will need to 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>
    
  2. 如果要应用 myedgeingest-policy.yaml,请运行:

    kubectl apply -f "myedgeingest-policy.yaml"
    

附加应用(Kubernetes 本机应用程序)

  1. 要针对永久性卷声明 (PVC) 配置通用单一 Pod(Kubernetes 本机应用程序),请创建包含以下内容的名为 deploymentExample.yaml 的文件。 将 containers.namevolumes.persistentVolumeClaim.claimName 的值替换为自己的值。 如果从 edgeSubvolume.yaml 更新了路径名称,则必须使用新路径名称更新第 33 行的 exampleSubDir

    注意

    只使用小写字母和短划线。 有关详细信息,请参阅 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/esaingesttestfile count=16 bs=1M && while true; do ls /data &>/dev/null || break; sleep 1; done"
              volumeMounts:
                ### This name must match the following volumes.name attribute ###
                - 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
                claimName: <your-pvc-metadata-name-from-line-5-of-pvc-yaml>
    
  2. 如果要应用 deploymentExample.yaml,请运行:

    kubectl apply -f "deploymentExample.yaml"
    
  3. 使用 kubectl get pods 查找 Pod 的名称。 复制此名称,因为你在下一步需要它。

    注意

    由于已将 deploymentExample.yamlspec.replicas 指定为 2,因此会出现两个使用 kubectl get pods 的 Pod。 可以选择任一 Pod 名称用于下一步。

  4. 运行以下命令,并将 POD_NAME_HERE 替换为上一步复制的值:

    kubectl exec -it POD_NAME_HERE -- sh
    
  5. 将目录更改为 deploymentExample.yaml 中指定的 /data 装载路径。

  6. 你应会看到一个目录,其名称为在“将子卷附加到边缘卷”部分的步骤 2 中指定的 path。 现在,cd 会更改为 /YOUR_PATH_NAME_HERE,从而将 YOUR_PATH_NAME_HERE 替换为你的详细信息。

  7. 例如,创建一个名为 file1.txt 的文件并使用 echo "Hello World" > file1.txt 写入它。

  8. 在 Azure 门户中,导航到存储帐户,并查找在“将子卷附加到边缘卷”的步骤 2 中指定的容器。 选择容器时,应会发现容器中已填充 file1.txt。 如果文件尚未显示,请等待大约 1 分钟;Edge 卷会等待一分钟才会上传。

后续步骤

完成这些步骤后,开始使用 Azure Monitor 和 Kubernetes 监视来监视部署,或使用 Prometheus 和 Grafana 进行第三方监视。

监视部署