Присоединение приложения
В этой статье предполагается, что вы создали постоянный том (PV) и утверждение постоянного тома (ПВХ). Сведения о создании ПВ см. в разделе "Создание постоянного тома". Сведения о создании ПВХ см. в разделе "Создание утверждения постоянного тома".
Добавление томов кэша в модули pod aio-dp-runner-worker-0
Эти модули pod являются частью statefulSet. Невозможно изменить statefulSet на месте, чтобы добавить точки подключения. Вместо этого выполните следующую процедуру:
Дамп состоянияfulSet в yaml:
kubectl get statefulset -o yaml -n azure-iot-operations aio-dp-runner-worker > stateful_worker.yaml
Измените состояниеfulSet, чтобы включить новые подключения для томов кэша в томах и томах:
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
Удалите существующий набор состояний:
kubectl delete statefulset -n azure-iot-operations aio-dp-runner-worker
При этом удаляются все
aio-dp-runner-worker-n
модули pod. Это событие уровня сбоя.Создайте новый набор с отслеживанием состояния aio-dp-runner-worker(s) с подключением томов кэша:
kubectl apply -f stateful_worker.yaml -n azure-iot-operations
aio-dp-runner-worker-n
При запуске модулей pod они включают подключение к томам кэша. ПВХ должен передать это в состоянии.После перенастройки рабочих ролей обработчика данных для доступа к томам кэша необходимо вручную обновить конфигурацию конвейера, чтобы использовать локальный путь, соответствующий подключенному расположению тома кэша на рабочих POD.
Чтобы изменить конвейер, используйте
kubectl edit pipeline <name of your pipeline>
. В этом конвейере замените выходной этап следующим 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
Настройка собственного приложения Kubernetes
Чтобы настроить универсальное одно pod (собственное приложение Kubernetes) для утверждения постоянного тома (PVC), создайте файл с именем
configPod.yaml
со следующим содержимым: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
Примечание.
Если вы используете собственное пространство имен, все будущие
kubectl
команды должны-n YOUR_NAMESPACE
быть добавлены в команду. Например, вместоkubectl get pods -n YOUR_NAMESPACE
стандартногоkubectl get pods
.Чтобы применить этот YAML-файл, выполните следующую команду:
kubectl apply -f "configPod.yaml"
Используется
kubectl get pods
для поиска имени модуля pod. Скопируйте это имя, так как вам потребуется для следующего шага.Выполните следующую команду и замените
POD_NAME_HERE
скопированное значение на предыдущем шаге:kubectl exec -it POD_NAME_HERE -- bash
Измените каталоги в
/mnt/blob
путь подключения, как указано из вашегоconfigPod.yaml
.Например, чтобы написать файл, выполните команду
touch file.txt
.В портал Azure перейдите к учетной записи хранения и найдите контейнер. Это тот же контейнер, который вы указали в
pv.yaml
файле. При выборе контейнера в контейнере отображаетсяfile.txt
заполнение.
Следующие шаги
После выполнения этих действий начните мониторинг развертывания с помощью Azure Monitor и Мониторинга Kubernetes или мониторинга сторонних производителей с помощью Prometheus и Grafana: