애플리케이션 연결
이 문서에서는 PV(영구 볼륨) 및 PVC(영구 볼륨 클레임)를 만들었다고 가정합니다. PV 만들기에 대한 자세한 내용은 영구 볼륨 만들기를 참조하세요. PVC 만들기에 대한 자세한 내용은 영구 볼륨 클레임 만들기를 참조하세요.
aio-dp-runner-worker-0 Pod에 캐시 볼륨 추가
이러한 Pod는 statefulSet의 일부입니다. 탑재 지점을 추가하도록 statefulSet를 편집할 수는 없습니다. 대신 다음 절차를 따릅니다.
statefulSet을 yaml에 덤프합니다.
kubectl get statefulset -o yaml -n azure-iot-operations aio-dp-runner-worker > stateful_worker.yaml
volumeMounts 및 volumes의 캐시 볼륨에 대한 새 탑재를 포함하도록 statefulSet을 편집합니다.
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
기존 statefulSet를 삭제합니다.
kubectl delete statefulset -n azure-iot-operations aio-dp-runner-worker
그러면 모든
aio-dp-runner-worker-n
Pod가 삭제됩니다. 이는 가동 중단 수준 이벤트입니다.캐시 볼륨 탑재를 사용하여 aio-dp-runner-worker의 새로운 statefulSet을 만듭니다.
kubectl apply -f stateful_worker.yaml -n azure-iot-operations
aio-dp-runner-worker-n
Pod가 시작되면 캐시 볼륨에 탑재가 포함됩니다. PVC는 이를 상태로 전달해야 합니다.데이터 프로세서 작업자가 캐시 볼륨에 액세스할 수 있도록 다시 구성한 후에는 작업자 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 네이티브 애플리케이션 구성
PVC(영구 볼륨 클레임)에 대해 제네릭 단일 Pod(Kubernetes 네이티브 애플리케이션)를 구성하려면 다음 내용이 포함된
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
대신kubectl get pods -n YOUR_NAMESPACE
를 사용해야 합니다.이 .yaml 파일을 적용하려면 다음 명령을 실행합니다.
kubectl apply -f "configPod.yaml"
Pod의 이름을 확인하려면
kubectl get pods
를 사용합니다. 다음 단계에서 필요하므로 이 이름을 복사합니다.다음 명령을 실행하고
POD_NAME_HERE
를 이전 단계에서 복사한 값으로 바꿉니다.kubectl exec -it POD_NAME_HERE -- bash
configPod.yaml
에 지정된 대로 디렉터리를/mnt/blob
탑재 경로로 변경합니다.예를 들어 파일을 작성하려면
touch file.txt
을 실행합니다.Azure Portal에서 스토리지 계정으로 이동하고 컨테이너를 찾습니다. 이는
pv.yaml
파일에 지정한 것과 동일한 컨테이너입니다. 컨테이너를 선택하면 컨테이너 내에 채워진file.txt
가 표시됩니다.
다음 단계
이러한 단계를 완료한 후 Prometheus 및 Grafana와 함께 Azure Monitor 및 Kubernetes 모니터링 또는 타사 모니터링을 사용하여 배포 모니터링을 시작합니다.