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:
Creare un dump di statefulSet in yaml:
kubectl get statefulset -o yaml -n azure-iot-operations aio-dp-runner-worker > stateful_worker.yaml
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
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.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.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
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 usarekubectl get pods -n YOUR_NAMESPACE
anziché il comandokubectl get pods
standard.Per applicare questo file YAML, eseguire il comando seguente:
kubectl apply -f "configPod.yaml"
Usare
kubectl get pods
per trovare il nome del pod. Copiare questo nome, perché è necessario per il passaggio successivo.Eseguire il comando seguente e sostituire
POD_NAME_HERE
con il valore copiato dal passaggio precedente:kubectl exec -it POD_NAME_HERE -- bash
Cambiare directory impostando il percorso di montaggio
/mnt/blob
specificato daconfigPod.yaml
.Ad esempio, per scrivere un file, eseguire
touch file.txt
.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: