繁体   English   中英

多个初始化容器的部署模板 azure 物联网边缘

[英]Deployment template for multiple init containers azure iot edge

我有 2 个初始容器和 1 个容器,想部署到 azure 物联网边缘。 要求是这 2 个初始容器应该在主容器启动之前先按顺序运行。

我能够在 kube.netes pod 和 docker 中执行此操作(使用取决于)不确定如何在 azure 物联网边缘的部署清单中执行此操作。 azure iot-edge 是否支持 init 容器?

apiVersion: v1
kind: Pod
metadata:
  name: <<sample>>
spec:
  containers:
  - env:
    image: <<image_path>>
    imagePullPolicy: IfNotPresent
    name: <<image name>>
    ports:
    - containerPort: 443
      hostPort: 443
      name: https
      protocol: TCP
    resources: {}
    volumeMounts:
    - mountPath: "/shared/path"
      name: data
      subPath: v1/data
  imagePullSecrets:
  - name: <<imagePull_name>>
  initContainers:
  - image: <<image-init-path1>>
    imagePullPolicy: IfNotPresent
    name: <<image_name>>
    volumeMounts:
    - mountPath: "/shared/path"
      name: data
      subPath: v1/data
  - image: <<image-init-path2>>
    imagePullPolicy: IfNotPresent
    name: <<image_name>>
    volumeMounts:
    - mountPath: "/shared/path"
      name: data
      subPath: v1/data
  nodeName: test-name
  volumes:
  - name: data
    persistentVolumeClaim:
      claimName: pvc-data

虽然可以在 IoT Edge 上指定容器的启动顺序,但运行时不会等待模块启动或运行后再启动下一个。 Azure IoT Edge 不为您的方案提供任何功能。

解决此问题的一种方法是编写主容器以检查其他两个容器是否已完成运行。 实现这一目标的可能方法:

  1. 从主容器发送一个直接方法到 init 容器,并让它们在完成时以特定代码响应。
  2. 当初始化容器完成作业时,将消息从主容器发送到主容器。
  3. 容器可以通过 HTTP 相互通信,实现相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM