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:
Despeje o statefulSet para yaml:
kubectl get statefulset -o yaml -n azure-iot-operations aio-dp-runner-worker > stateful_worker.yaml
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
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.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.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
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 usarkubectl get pods -n YOUR_NAMESPACE
em vez do padrãokubectl get pods
.Para aplicar esse arquivo .yaml, execute o seguinte comando:
kubectl apply -f "configPod.yaml"
Use
kubectl get pods
para encontrar o nome do seu pod. Copie este nome, conforme necessário para a próxima etapa.Execute o seguinte comando e substitua
POD_NAME_HERE
pelo valor copiado da etapa anterior:kubectl exec -it POD_NAME_HERE -- bash
Altere os diretórios para o
/mnt/blob
caminho de montagem conforme especificado no .configPod.yaml
Por exemplo, para escrever um ficheiro, execute
touch file.txt
.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: