Compartir a través de


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:

  1. Volcar statefulSet en yaml:

    kubectl get statefulset -o yaml -n azure-iot-operations aio-dp-runner-worker > stateful_worker.yaml
    
  2. 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
    
  3. 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.

  4. 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.

  5. 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

  1. 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 usar kubectl get pods -n YOUR_NAMESPACE en lugar del estándar kubectl get pods.

  2. Para aplicar este archivo .yaml, ejecute el siguiente comando:

    kubectl apply -f "configPod.yaml"
    
  3. Use kubectl get pods para buscar el nombre del pod. Copie este nombre, ya que lo necesita para el paso siguiente.

  4. Ejecute el siguiente comando y reemplace POD_NAME_HERE por el valor copiado del paso anterior:

    kubectl exec -it POD_NAME_HERE -- bash
    
  5. Cambie los directorios a la /mnt/blob ruta de acceso de montaje tal como se especifica en el configPod.yaml.

  6. Por ejemplo, para escribir un archivo, ejecute touch file.txt.

  7. 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:

Supervisión de terceros