大多数情况下,当你将一个pod部署到Kubernetes集群时,它将包含一个容器。但有些情况下,你可能需要部署一个包含多个容器的pod。部署多容器pod的两个非常有用的原因是:
Sidecar容器:帮助或增强应用程序功能的实用工具容器(Sidecar容器的示例包括日志托运人/监视者和监视代理)
代理/桥/适配器:将主容器连接到外部世界
你部署多容器pod的主要原因是当一个容器无法照顾到应用程序的每个方面时。例如,假设你为NGINX部署了一个pod,但需要一些东西来监控该容器的日志。要做到这一点,你可以部署一个多pod容器。
这里将引导你完成将多容器pod部署到Kubernetes集群的过程。具体来说,我们要创建一个有两个容器的pod,其中一个运行NGINX Web服务器,与第二个容器共享一个卷。然后第二个容器将向第一个容器写入数据,以展示多容器pod如何交互。
完成这项工作所需的唯一的一件事就是需要一个正在运行的Kubernetes集群。集群启动并运行后,就可以部署多容器Pod。
一、如何定义多容器容器
与Kubernetes领域中的所有内容一样,我们在YAML文件中定义我们的多容器容器。因此,使用以下命令创建新文件:
nano multi-pod.yml
在该文件中,粘贴以下内容:
apiVersion: v1
kind: Pod
metadata:
name: multi-pod
spec:

restartPolicy: Never

volumes:

  • name: shared-data
    emptyDir: {}

    containers:

  • name: nginx-container
    image: nginx
    volumeMounts:

    • name: shared-data
      mountPath: /usr/share/nginx/html
  • name: ubuntu-container
    image: ubuntu
    volumeMounts:
    • name: shared-data
      mountPath: /pod-data
      command: ["/bin/sh"]
      args: ["-c", "echo Hello, A5idc > /pod-data/index.html"]
      看一下YAML文件。你会看到我们已经部署了一个基于NGINX镜像的容器,作为我们的Web服务器。第二个容器名为ubuntu-container,部署了一个基于Ubuntu镜像的容器,并将 "Hello, A5idc"的文字写入第一个容器提供的index.html文件中。
      保存并关闭该文件。
      二、如何部署多容器pod
      要部署此多容器容器,请发出以下命令:
      kubectl apply -f multi-pod.yml
      一旦pod部署完毕,给容器一点时间,让其真正变为运行状态(虽然只有第一个容器会继续运行),然后使用以下命令访问nginx-container shell:
      kubectl exec -it multi-pod -c nginx-container -- /bin/bash
      现在你应该发现自己处于nginx容器的bash提示符下。为了确保我们的第二个容器完成了任务,请发出以下命令:
      curl localhost
      您应该看到打印出“ Hello,A5idc”文本。
      这就是你如何将一个多容器pod部署到你的Kubernetes集群中。虽然这是一个非常基本的例子,但它向你展示了容器如何在单个pod中进行交互。
      A5互联https://www.a5idc.net/