在一个Single Pod Kubernetes中运行多个容器

我是Kubernetes的新手,并决定将它用于目前正在进行的一个小项目的POC。

我有一个bash脚本是集装箱化的,它是用参数执行的。

Kubernetes库存文件如下所示:

--- apiVersion: v1 kind: Pod metadata: name: device-pod labels: name: device-pod spec: containers: - image: azurecr.io/device:1.02 name: device-0 args: ["0"] containers: - image: azurecr.io/device:1.02 name: device-1 args: ["1"] containers: - image: azurecr.io/device:1.02 name: device-2 args: ["2"] containers: - image: azurecr.io/device:1.02 name: device-3 args: ["3"] 

从上面的清单文件中可以看到,我正在创build一个名为“device-pod”的容器,它假设主机和名称分别为4的容器:device-n(其中n是0..4)

我部署的pod,它工作正常,但问题是部署后,我不知何故只能看到容器“设备-3”运行,我似乎无法find任何其他正在运行的容器在吊舱。 我会假设在Pod中会有4个容器运行。

 Events: FirstSeen LastSeen Count From SubObjectPath Type Reason Message --------- -------- ----- ---- ------------- -------- ------ ------- 18m 18m 1 default-scheduler Normal Scheduled Successfully assigned device-pod to k8s-agent-abe168bc-3 18m 18m 1 kubelet, k8s-agent-abe168bc-3 spec.containers{device-3} Normal Created Created container with id 770ce7568a7dfe73bacdcd5232e8961fd3098486c82cce56465c04c1c4434659 18m 18m 1 kubelet, k8s-agent-abe168bc-3 spec.containers{device-3} Normal Started Started container with id 770ce7568a7dfe73bacdcd5232e8961fd3098486c82cce56465c04c1c4434659 13m 13m 1 kubelet, k8s-agent-abe168bc-3 spec.containers{device-3} Normal Started Started container with id 17c1ae7caa8f017a0ca81925962ecf229ff42a498af7de0dfe93a11fdaa9f43e 13m 13m 1 kubelet, k8s-agent-abe168bc-3 spec.containers{device-3} Normal Created Created container with id 17c1ae7caa8f017a0ca81925962ecf229ff42a498af7de0dfe93a11fdaa9f43e 9m 9m 1 kubelet, k8s-agent-abe168bc-3 Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "device-3" with CrashLoopBackOff: "Back-off 10s restarting failed container=device-3 pod=device-pod_default(922476fb-a4fb-11e7-8ca8-000d3a25fb55)" 9m 9m 1 kubelet, k8s-agent-abe168bc-3 spec.containers{device-3} Normal Created Created container with id 5f4db92d4318537eb541dbf11b5b4e4cb7eaa93fcc26061c2e7b970505f27d5e 9m 9m 1 kubelet, k8s-agent-abe168bc-3 spec.containers{device-3} Normal Started Started container with id 5f4db92d4318537eb541dbf11b5b4e4cb7eaa93fcc26061c2e7b970505f27d5e 

我似乎没有看到容器的任何事件:device-0,device-1和device-2

我在这里做错了什么? 任何想法,将不胜感激。

这个问题可能是由于在你的规范中你有“容器”被多重定义的事实,而不是一个具有多个容器声明的“容器”规范。 它确实打算成为一个数组/列表,如下所示:

 --- apiVersion: v1 kind: Pod metadata: name: device-pod labels: name: device-pod spec: containers: - image: azurecr.io/device:1.02 name: device-0 args: ["0"] - image: azurecr.io/device:1.02 name: device-1 args: ["1"] - image: azurecr.io/device:1.02 name: device-2 args: ["2"] - image: azurecr.io/device:1.02 name: device-3 args: ["3"] 

您遇到的行为的一个可能的解释可能是顺序parsing和执行所有“容器”声明,只应该有一个运行。 所以你有多个容器由于顺序而开始/运行/终止,但只有最后一个(最后一个声明)保持运行。