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

附加应用程序

本文假定你已经创建了永久性卷 (PV) 和永久性卷声明 (PVC)。 有关创建 PV 的详细信息,请参阅创建永久性卷。 有关创建 PVC 的详细信息,请参阅创建永久性卷声明

将缓存卷添加到 aio-dp-runner-worker-0 Pod

这些 Pod 是 statefulSet 的一部分。 无法就地编辑 statefulSet 来添加装入点。 相反,请按照以下过程操作:

  1. 将 statefulSet 转储到 yaml:

    kubectl get statefulset -o yaml -n azure-iot-operations aio-dp-runner-worker > stateful_worker.yaml
    
  2. 编辑 statefulSet 以在 volumeMount 和卷中包含缓存卷的新装载:

    volumeMounts: 
    - mountPath: /etc/bluefin/config 
      name: config-volume 
      readOnly: true 
    - mountPath: /var/lib/bluefin/registry 
      name: nfs-volume 
    - mountPath: /var/lib/bluefin/local 
      name: runner-local
      ### Add the next 2 lines ###
    - mountPath: /mnt/esa 
      name: esa4 
    
    volumes: 
    - configMap: 
        defaultMode: 420 
        name: file-config 
      name: config-volume 
    - name: nfs-volume 
    persistentVolumeClaim: 
      claimName: nfs-provisioner
      ### Add the next 3 lines ### 
    - name: esa4 
      persistentVolumeClaim: 
        claimName: esa4
    
  3. 删除现有 statefulSet:

    kubectl delete statefulset -n azure-iot-operations aio-dp-runner-worker
    

    这会删除所有 aio-dp-runner-worker-n Pod。 这是一个中断级别事件。

  4. 使用缓存卷装载创建 aio-dp-runner-worker 的新 statefulSet:

    kubectl apply -f stateful_worker.yaml -n azure-iot-operations
    

    aio-dp-runner-worker-n Pod 启动时,它们包括到缓存卷的装载。 PVC 应在状态中显示此信息。

  5. 将数据处理器辅助角色重新配置为有权访问缓存卷后,必须手动更新管道配置,以使用与辅助角色 POD 上的缓存卷的装载位置相对应的本地路径。

    若要修改管道,请使用 kubectl edit pipeline <name of your pipeline>。 在该管道中,将输出阶段替换为以下 YAML:

    output:
      batch:
        path: .payload
        time: 60s
      description: An example file output stage
      displayName: Sample File output
      filePath: '{{{instanceId}}}/{{{pipelineId}}}/{{{partitionId}}}/{{{YYYY}}}/{{{MM}}}/{{{DD}}}/{{{HH}}}/{{{mm}}}/{{{fileNumber}}}'
      format:
        type: jsonStream
      rootDirectory: /mnt/esa
      type: output/file@v1
    

配置 Kubernetes 本机应用程序

  1. 若要针对永久性卷声明 (PVC) 配置通用单一 Pod(Kubernetes 本机应用程序),请创建一个包含以下内容的名为 configPod.yaml 的文件:

    kind: Deployment
    apiVersion: apps/v1
    metadata:
      name: example-static
      labels:
        app: example-static
      ### Uncomment the next line and add your namespace only if you are not using the default namespace (if you are using azure-iot-operations) as specified from Line 6 of your pvc.yaml. If you are not using the default namespace, all future kubectl commands require "-n YOUR_NAMESPACE" to be added to the end of your command.
      # namespace: YOUR_NAMESPACE
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: example-static
      template:
        metadata:
          labels:
            app: example-static
        spec:
          containers:
            - image: mcr.microsoft.com/cbl-mariner/base/core:2.0
              name: mariner
              command:
                - sleep
                - infinity
              volumeMounts:
                ### This name must match the 'volumes.name' attribute in the next section. ###
                - name: blob
                  ### This mountPath is where the PVC is attached to the pod's filesystem. ###
                  mountPath: "/mnt/blob"
          volumes:
            ### User-defined 'name' that's used to link the volumeMounts. This name must match 'volumeMounts.name' as specified in the previous section. ###
            - name: blob
              persistentVolumeClaim:
                ### This claimName must refer to the PVC resource 'name' as defined in the PVC config. This name must match what your PVC resource was actually named. ###
                claimName: YOUR_CLAIM_NAME_FROM_YOUR_PVC
    

    注意

    如果使用自己的命名空间,则以后的所有 kubectl 命令都需要将 -n YOUR_NAMESPACE 追加到该命令。 例如,必须使用 kubectl get pods -n YOUR_NAMESPACE 而不是标准的 kubectl get pods

  2. 若要运行此 .yaml 文件,请运行以下命令:

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

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

    kubectl exec -it POD_NAME_HERE -- bash
    
  5. 将目录更改为 configPod.yaml 指定的 /mnt/blob 装载路径。

  6. 例如,若要写入文件,请运行 touch file.txt

  7. 在 Azure 门户中,导航到存储帐户并找到容器。 此容器与 pv.yaml 文件中指定的容器相同。 选择容器时,会看到容器中已填充 file.txt

后续步骤

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

第三方监视