Adjuntar la aplicación
En este artículo se supone que ha creado un volumen persistente (PV) y una notificación de volumen persistente (PVC). Para obtener información sobre cómo crear un PV, consulte Creación de un volumen persistente. Para obtener información sobre cómo crear una PVC, vea Crear una notificación de volumen persistente.
Agregar volúmenes de caché a los pods aio-dp-runner-worker-0
Estos pods forman parte de un statefulSet. No se puede editar statefulSet en su lugar para agregar puntos de montaje. En su lugar, siga este procedimiento:
Volcar statefulSet en yaml:
kubectl get statefulset -o yaml -n azure-iot-operations aio-dp-runner-worker > stateful_worker.yaml
Edite statefulSet para incluir los nuevos montajes de volúmenes de caché en volumeMounts y volúmenes:
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
Elimine el statefulSet existente:
kubectl delete statefulset -n azure-iot-operations aio-dp-runner-worker
Esto elimina todos los pods de
aio-dp-runner-worker-n
. Se trata de un evento de nivel de interrupción.Cree un nuevo statefulSet de aio-dp-runner-worker(s) con los montajes de volúmenes de caché:
kubectl apply -f stateful_worker.yaml -n azure-iot-operations
Cuando se inician los pods de
aio-dp-runner-worker-n
, incluyen montajes en volúmenes de caché. El PVC debe transmitir esto en el estado.Una vez que vuelva a configurar los trabajos del procesador de datos para que tengan acceso a los volúmenes de caché, debe actualizar manualmente la configuración de canalización para usar una ruta de acceso local que corresponda a la ubicación montada del volumen de caché en los POD de trabajo.
Para modificar la canalización, use
kubectl edit pipeline <name of your pipeline>
. En esa canalización, reemplace la fase de salida por el siguiente 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
Configuración de una aplicación nativa de Kubernetes
Para configurar un único pod genérico (aplicación nativa de Kubernetes) en la notificación de volumen persistente (PVC), cree un archivo denominado
configPod.yaml
con el siguiente contenido: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
Nota:
Si usa su propio espacio de nombres, todos los comandos de
kubectl
futuros requieren anexarse-n YOUR_NAMESPACE
al comando. Por ejemplo, debe usarkubectl get pods -n YOUR_NAMESPACE
en lugar del estándarkubectl get pods
.Para aplicar este archivo .yaml, ejecute el siguiente comando:
kubectl apply -f "configPod.yaml"
Use
kubectl get pods
para buscar el nombre del pod. Copie este nombre, ya que lo necesita para el paso siguiente.Ejecute el siguiente comando y reemplace
POD_NAME_HERE
por el valor copiado del paso anterior:kubectl exec -it POD_NAME_HERE -- bash
Cambie los directorios a la
/mnt/blob
ruta de acceso de montaje tal como se especifica en elconfigPod.yaml
.Por ejemplo, para escribir un archivo, ejecute
touch file.txt
.En Azure Portal, vaya a la cuenta de almacenamiento y busque el contenedor. Este es el mismo contenedor que especificó en el
pv.yaml
archivo. Al seleccionar el contenedor, veráfile.txt
rellenado dentro del contenedor.
Pasos siguientes
Después de completar estos pasos, comience a supervisar la implementación mediante Azure Monitor y Supervisión de Kubernetes o supervisión de terceros con Prometheus y Grafana: