Anfügen Ihrer Anwendung
In diesem Artikel wird davon ausgegangen, dass Sie ein persistentes Volume (PV) und einen persistenten Volumeanspruch (PVC) erstellt haben. Informationen zum Erstellen eines PV finden Sie unter Erstellen eines persistenten Volumes. Informationen zum Erstellen eines PV finden Sie unter Erstellen eines persistenten Volumeanspruchs.
Hinzufügen von Cachevolumes zu Ihren aio-dp-runner-worker-0-Pods
Diese Pods sind Teil eines statefulSet. Sie können das statefulSet nicht bearbeiten, um Bereitstellungspunkte hinzuzufügen. Gehen Sie stattdessen folgendermaßen vor:
Übertragen Sie das statefulSet in yaml:
kubectl get statefulset -o yaml -n azure-iot-operations aio-dp-runner-worker > stateful_worker.yaml
Bearbeiten Sie das statefulSet so, dass die neuen Einbindungen für Cachevolumes in volumeMounts und volumes enthalten sind:
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
Löschen Sie das vorhandene statefulSet:
kubectl delete statefulset -n azure-iot-operations aio-dp-runner-worker
Dadurch werden alle
aio-dp-runner-worker-n
Pods gelöscht. Dies ist ein Ereignis auf Ausfallebene.Erstellen Sie ein neues statefulSet von aio-dp-runner-workern mit den Einbindungen für Cachevolumes:
kubectl apply -f stateful_worker.yaml -n azure-iot-operations
Wenn die
aio-dp-runner-worker-n
-Pods starten, enthalten sie die Einbindungen für Cachevolumes. Das PVC sollte dies im Status vermitteln.Nachdem Sie Ihre Datenprozessorworker neu konfiguriert haben, um Zugriff auf die Cachevolumes zu erhalten, müssen Sie die Pipelinekonfiguration manuell aktualisieren, um einen lokalen Pfad zu verwenden, der dem Bereitstellungsort Ihres Cachevolumes in den Worker-PODs entspricht.
Verwenden Sie
kubectl edit pipeline <name of your pipeline>
, um die Pipeline zu ändern. Ersetzen Sie in dieser Pipeline Ihre Ausgabestufe durch das folgende 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
Konfigurieren einer systemeigenen Kubernetes-Anwendung
Erstellen Sie zum Konfigurieren eines generischen einzelnen Pods (Kubernetes native Anwendung) für den persistenten Volumeanspruch (PVC) eine Datei mit dem Namen
configPod.yaml
mit folgendem Inhalt: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
Hinweis
Wenn Sie Ihren eigenen Namespace verwenden, müssen alle zukünftigen
kubectl
Befehle-n YOUR_NAMESPACE
an den Befehl angefügt werden. Sie müssen z. B.kubectl get pods -n YOUR_NAMESPACE
anstelle des Standardskubectl get pods
verwenden.Führen Sie den folgenden Befehl aus, um diese YAML-Datei anzuwenden:
kubectl apply -f "configPod.yaml"
Verwenden Sie
kubectl get pods
, um den Namen Ihres Pods zu finden. Kopieren Sie diesen Namen, da Sie ihn für den nächsten Schritt benötigen.Führen Sie den folgenden Befehl aus, und ersetzen Sie
POD_NAME_HERE
durch ihren kopierten Wert aus dem vorherigen Schritt:kubectl exec -it POD_NAME_HERE -- bash
Ändern Sie Verzeichnisse in den
/mnt/blob
Bereitstellungspfad, wie in IhremconfigPod.yaml
angegeben.Führen Sie beispielsweise zum Schreiben einer Datei
touch file.txt
aus.Navigieren Sie im Azure-Portal zu Ihrem Speicherkonto, und suchen Sie den Container. Dies ist derselbe Container, den Sie in Ihrer
pv.yaml
Datei angegeben haben. Wenn Sie Ihren Container auswählen, wirdfile.txt
im Container aufgefüllt.
Nächste Schritte
Nachdem Sie diese Schritte ausgeführt haben, beginnen Sie mit der Überwachung Ihrer Bereitstellung mit Azure Monitor und Kubernetes Monitoring oder Überwachung von Drittanbietern mit Prometheus und Grafana: