Condividi tramite


Allegare l'applicazione

Questo articolo presuppone che siano stati creati un volume permanente (PV) e un'attestazione di volume permanente (PVC). Per informazioni sulla creazione di un PV, vedere Creare un volume permanente. Per informazioni sulla creazione di una PVC, vedere Creare un'attestazione di volume permanente.

Aggiungere Volumi di cache ai pod aio-dp-runner-worker-0

Questi pod fanno parte di un statefulSet. Non è possibile modificare statefulSet sul posto per aggiungere punti di montaggio. Seguire invece questa procedura:

  1. Creare un dump di statefulSet in yaml:

    kubectl get statefulset -o yaml -n azure-iot-operations aio-dp-runner-worker > stateful_worker.yaml
    
  2. Modificare statefulSet per includere i nuovi montaggi per Volumi di cache in volumeMounts e volumes:

    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. Eliminare l'istanza di statefulSet esistente:

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

    In questo modo vengono eliminati tutti i pod aio-dp-runner-worker-n. Si tratta di un evento di livello interruzione.

  4. Creare un nuovo statefulSet di aio-dp-runner-worker con i montaggi di Volumi di cache:

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

    All'avvio, i pod aio-dp-runner-worker-n includono i montaggi nei per Volumi di cache. La PVC deve comunicare questa condizione nello stato.

  5. Dopo aver riconfigurato i ruoli di lavoro del processore di dati per avere accesso a Volumi di cache, è necessario aggiornare manualmente la configurazione della pipeline per usare un percorso locale corrispondente alla posizione montata di Volumi di cache nei pod del ruolo di lavoro.

    Per modificare la pipeline, usare kubectl edit pipeline <name of your pipeline>. In tale pipeline sostituire la fase di output con il codice YAML seguente:

    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
    

Configurare un'applicazione nativa Kubernetes

  1. Per configurare un singolo pod generico (applicazione nativa Kubernetes) in base all'attestazione di volume permanente (PVC), creare un file denominato configPod.yaml con il contenuto seguente:

    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

    Se si usa uno spazio dei nomi personalizzato, tutti i comandi kubectl futuri richiedono -n YOUR_NAMESPACE per essere accodati al comando. Ad esempio, è necessario usare kubectl get pods -n YOUR_NAMESPACE anziché il comando kubectl get pods standard.

  2. Per applicare questo file YAML, eseguire il comando seguente:

    kubectl apply -f "configPod.yaml"
    
  3. Usare kubectl get pods per trovare il nome del pod. Copiare questo nome, perché è necessario per il passaggio successivo.

  4. Eseguire il comando seguente e sostituire POD_NAME_HERE con il valore copiato dal passaggio precedente:

    kubectl exec -it POD_NAME_HERE -- bash
    
  5. Cambiare directory impostando il percorso di montaggio /mnt/blob specificato da configPod.yaml.

  6. Ad esempio, per scrivere un file, eseguire touch file.txt.

  7. Nel portale di Azure passare all'account di archiviazione e trovare il contenitore. Si tratta dello stesso contenitore specificato nel file pv.yaml. Quando si seleziona il contenitore, file.txt sarà popolato all'interno del contenitore.

Passaggi successivi

Dopo aver completato questi passaggi, è possibile iniziare a monitorare la distribuzione usando Monitoraggio di Azure e il monitoraggio di Kubernetes o il monitoraggio di terze parti con Prometheus e Grafana:

Monitoraggio di terze parti