Partilhar via


Anexe a sua candidatura (pré-visualização)

Este artigo pressupõe que você criou um Volume Persistente (PV) e uma Declaração de Volume Persistente (PVC). Para obter informações sobre como criar um PV, consulte Criar um volume persistente. Para obter informações sobre como criar um PVC, consulte Criar uma declaração de volume persistente.

Configurar o processador de dados do Azure IoT Operations

Quando você usa o Azure IoT Operations (AIO), o Processador de Dados é gerado sem nenhuma montagem para o Edge Storage Accelerator. Você pode executar as seguintes tarefas:

  • Adicione um suporte para o PVC do Edge Storage Accelerator criado anteriormente.
  • Reconfigure o estágio de saída de todos os pipelines para a saída para a montagem do Edge Storage Accelerator que você acabou de criar.

Adicione o Edge Storage Accelerator aos seus pods aio-dp-runner-worker-0

Esses pods fazem parte de um statefulSet. Não é possível editar o statefulSet no local para adicionar pontos de montagem. Em vez disso, siga este procedimento:

  1. Despeje o statefulSet para yaml:

    kubectl get statefulset -o yaml -n azure-iot-operations aio-dp-runner-worker > stateful_worker.yaml
    
  2. Edite o statefulSet para incluir as novas montagens para ESA em 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. Exclua o statefulSet existente:

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

    Isso exclui todos os aio-dp-runner-worker-n pods. Este é um evento de nível de interrupção.

  4. Crie um novo statefulSet de aio-dp-runner-worker(s) com as montagens ESA:

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

    Quando os aio-dp-runner-worker-n pods começam, incluem montagens para a ESA. O PVC deve transmitir isso no estado.

  5. Depois de reconfigurar os trabalhadores do processador de dados para ter acesso aos volumes do ESA, você deve atualizar manualmente a configuração do pipeline para usar um caminho local que corresponda ao local montado do volume do ESA nos PODs de trabalho.

    Para modificar o pipeline, use kubectl edit pipeline <name of your pipeline>. Nesse pipeline, substitua o estágio de saída pelo seguinte 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
    

Configurar um aplicativo nativo do Kubernetes

  1. Para configurar um pod único genérico (aplicativo nativo do Kubernetes) em relação à Declaração de Volume Persistente (PVC), crie um arquivo nomeado configPod.yaml com o seguinte conteúdo:

    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 você estiver usando seu próprio namespace, todos os comandos futuros kubectl precisarão -n YOUR_NAMESPACE ser anexados ao comando. Por exemplo, você deve usar kubectl get pods -n YOUR_NAMESPACE em vez do padrão kubectl get pods.

  2. Para aplicar esse arquivo .yaml, execute o seguinte comando:

    kubectl apply -f "configPod.yaml"
    
  3. Use kubectl get pods para encontrar o nome do seu pod. Copie este nome, conforme necessário para a próxima etapa.

  4. Execute o seguinte comando e substitua POD_NAME_HERE pelo valor copiado da etapa anterior:

    kubectl exec -it POD_NAME_HERE -- bash
    
  5. Altere os diretórios para o /mnt/blob caminho de montagem conforme especificado no .configPod.yaml

  6. Por exemplo, para escrever um ficheiro, execute touch file.txt.

  7. No portal do Azure, navegue até sua conta de armazenamento e localize o contêiner. Este é o mesmo contêiner que você especificou em seu pv.yaml arquivo. Quando você seleciona seu contêiner, você vê file.txt preenchido dentro do contêiner.

Próximos passos

Depois de concluir essas etapas, comece a monitorar sua implantação usando o Azure Monitor e o Kubernetes Monitoring ou o monitoramento de terceiros com o Prometheus e o Grafana:

Monitoramento de terceiros