你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
附加应用程序
本文假定你已经创建了永久性卷 (PV) 和永久性卷声明 (PVC)。 有关创建 PV 的详细信息,请参阅创建永久性卷。 有关创建 PVC 的详细信息,请参阅创建永久性卷声明。
将缓存卷添加到 aio-dp-runner-worker-0 Pod
这些 Pod 是 statefulSet 的一部分。 无法就地编辑 statefulSet 来添加装入点。 相反,请按照以下过程操作:
将 statefulSet 转储到 yaml:
kubectl get statefulset -o yaml -n azure-iot-operations aio-dp-runner-worker > stateful_worker.yaml
编辑 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
删除现有 statefulSet:
kubectl delete statefulset -n azure-iot-operations aio-dp-runner-worker
这会删除所有
aio-dp-runner-worker-n
Pod。 这是一个中断级别事件。使用缓存卷装载创建 aio-dp-runner-worker 的新 statefulSet:
kubectl apply -f stateful_worker.yaml -n azure-iot-operations
当
aio-dp-runner-worker-n
Pod 启动时,它们包括到缓存卷的装载。 PVC 应在状态中显示此信息。将数据处理器辅助角色重新配置为有权访问缓存卷后,必须手动更新管道配置,以使用与辅助角色 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 本机应用程序
若要针对永久性卷声明 (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
。若要运行此 .yaml 文件,请运行以下命令:
kubectl apply -f "configPod.yaml"
使用
kubectl get pods
查找 Pod 的名称。 复制此名称,因为下一步需要它。运行以下命令,并将
POD_NAME_HERE
替换为上一步复制的值:kubectl exec -it POD_NAME_HERE -- bash
将目录更改为
configPod.yaml
指定的/mnt/blob
装载路径。例如,若要写入文件,请运行
touch file.txt
。在 Azure 门户中,导航到存储帐户并找到容器。 此容器与
pv.yaml
文件中指定的容器相同。 选择容器时,会看到容器中已填充file.txt
。
后续步骤
完成这些步骤后,开始使用 Azure Monitor 和 Kubernetes 监视功能来监视部署,或者使用 Prometheus 和 Grafana 进行第三方监视: