Anexar seu aplicativo
Este artigo pressupõe que você criou um Volume Persistente (PV) e uma Declaração de Volume Persistente (PVC). Para informações sobre como criar um PV, veja Criar um volume persistente. Para informações sobre como criar uma PVC, veja Criar uma Declaração de Volume Persistente.
Adicionar o Cache Volumes aos seus pods aio-dp-runner-worker-0
Esses pods são parte de um statefulSet. Você não pode editar o statefulSet diretamente para adicionar pontos de montagem. Em vez disso, siga este procedimento:
Faça o backup o statefulSet para um arquivo yaml:
kubectl get statefulset -o yaml -n azure-iot-operations aio-dp-runner-worker > stateful_worker.yaml
Edite o statefulSet para incluir os novos pontos de montagem para o Cache Volumes 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 pods
aio-dp-runner-worker-n
. Este é um evento de nível de interrupção do serviço.Crie um novo statefulSet de aio-dp-runner-worker(s) com montagens do Cache Volumes:
kubectl apply -f stateful_worker.yaml -n azure-iot-operations
Quando os pods
aio-dp-runner-worker-n
iniciarem, eles incluirão as montagens para o Cache Volumes. A PVC deve refletir isso no estado.Após reconfigurar os trabalhos do Processador de Dados para acessar o Cache Volumes, atualize manualmente a configuração do pipeline para usar um caminho local que corresponda ao local montado do seu Cache Volumes nos PODs de trabalho.
Para modificar o pipeline, use
kubectl edit pipeline <name of your pipeline>
. Nesse pipeline, substitua a fase 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 aplicativo nativo do Kubernetes genérico em um único pod em relação à Declaração de Volume Persistente (PVC), crie um arquivo chamado
configPod.yaml
com os seguintes conteúdos: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
Observação
Se você estiver usando seu próprio namespace, todos os comandos
kubectl
futuros precisarão que-n YOUR_NAMESPACE
seja adicionado ao comando. Por exemplo, você deve usarkubectl get pods -n YOUR_NAMESPACE
em vez do padrãokubectl get pods
.Para aplicar este arquivo .yaml, execute o comando a seguir:
kubectl apply -f "configPod.yaml"
Use
kubectl get pods
para localizar o nome do seu pod. Copie esse nome, pois você precisará dele na próxima etapa.Execute o comando a seguir e substitua
POD_NAME_HERE
pelo valor copiado da etapa anterior:kubectl exec -it POD_NAME_HERE -- bash
Altere os diretórios para o caminho de montagem
/mnt/blob
conforme especificado no seuconfigPod.yaml
.Por exemplo, para gravar um arquivo, execute
touch file.txt
.No portal do Azure, navegue até sua conta de armazenamento e encontre o contêiner. Esse é o mesmo contêiner que você especificou no seu arquivo
pv.yaml
. Ao selecionar seu contêiner, você veráfile.txt
preenchido dentro do contêiner.
Próximas etapas
Depois de concluir estas etapas, comece a monitorar sua implantação usando o Azure Monitor e o Monitoramento do Kubernetes, ou opte por um serviço de monitoramento de terceiros com Prometheus e Grafana: