Поделиться через


Присоединение приложения

В этой статье предполагается, что вы создали постоянный том (PV) и утверждение постоянного тома (ПВХ). Сведения о создании ПВ см. в разделе "Создание постоянного тома". Сведения о создании ПВХ см. в разделе "Создание утверждения постоянного тома".

Добавление томов кэша в модули pod aio-dp-runner-worker-0

Эти модули pod являются частью statefulSet. Невозможно изменить statefulSet на месте, чтобы добавить точки подключения. Вместо этого выполните следующую процедуру:

  1. Дамп состоянияfulSet в yaml:

    kubectl get statefulset -o yaml -n azure-iot-operations aio-dp-runner-worker > stateful_worker.yaml
    
  2. Измените состояние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
    
  3. Удалите существующий набор состояний:

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

    При этом удаляются все aio-dp-runner-worker-n модули pod. Это событие уровня сбоя.

  4. Создайте новый набор с отслеживанием состояния aio-dp-runner-worker(s) с подключением томов кэша:

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

    aio-dp-runner-worker-n При запуске модулей pod они включают подключение к томам кэша. ПВХ должен передать это в состоянии.

  5. После перенастройки рабочих ролей обработчика данных для доступа к томам кэша необходимо вручную обновить конфигурацию конвейера, чтобы использовать локальный путь, соответствующий подключенному расположению тома кэша на рабочих 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

  1. Чтобы настроить универсальное одно 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.

  2. Чтобы применить этот YAML-файл, выполните следующую команду:

    kubectl apply -f "configPod.yaml"
    
  3. Используется kubectl get pods для поиска имени модуля pod. Скопируйте это имя, так как вам потребуется для следующего шага.

  4. Выполните следующую команду и замените POD_NAME_HERE скопированное значение на предыдущем шаге:

    kubectl exec -it POD_NAME_HERE -- bash
    
  5. Измените каталоги в /mnt/blob путь подключения, как указано из вашего configPod.yaml.

  6. Например, чтобы написать файл, выполните команду touch file.txt.

  7. В портал Azure перейдите к учетной записи хранения и найдите контейнер. Это тот же контейнер, который вы указали в pv.yaml файле. При выборе контейнера в контейнере отображается file.txt заполнение.

Следующие шаги

После выполнения этих действий начните мониторинг развертывания с помощью Azure Monitor и Мониторинга Kubernetes или мониторинга сторонних производителей с помощью Prometheus и Grafana:

Сторонний мониторинг