k8s:Two 个图像,但单个容器

k8s:Two images but single container

以下是在线测试中出现的问题的确切词句。

Create an single container app running in a pod named "bla-bla" with any 3 of the four images listed below. Images: nginx + redis+ memcached.

我不确定这是文字游戏还是打字错误,但我想知道是否有任何语法可以在单个容器中启动多个图像?我知道这可以通过在单个 pod 中放置多个容器来完成,但根据问题中的措辞,我认为这不是他们所期望的。我在 Kubernetes 官方论坛上看到了同样的问题,但也没有答案。因此将它张贴在这里,以便它可以覆盖更广泛的受众。

论坛问题: https://discuss.kubernetes.io/t/can-we-have-a-single-container-with-multiple-image-like-nginx-redis-alpine/12017

如果您正在寻找像“kubectl 运行 bla-bla --image xyz”这样的单个命令,我认为没有。

我认为最简单的方法就是做类似的事情。

  1. kubectl 运行 bla-blah --image nginx --dry-运行=client -o yaml > multi-container-pod.yaml.
  2. 编辑 yaml 和 运行 kubectl apply -f

我看不出这个问题有什么问题。它要求在 pod 中创建单个 “容器应用程序 运行”,而不是 “单个容器”.

因此,具有多个容器的单个 pod 就是答案。这里是 example.

apiVersion: v1
kind: Pod
metadata:
  name: two-containers
spec:

  restartPolicy: Never

  volumes:
  - name: shared-data
    emptyDir: {}

  containers:

  - name: nginx-container
    image: nginx
    volumeMounts:
    - name: shared-data
      mountPath: /usr/share/nginx/html

  - name: debian-container
    image: debian
    volumeMounts:
    - name: shared-data
      mountPath: /pod-data
    command: ["/bin/sh"]
    args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]