我们可以在 Kubernetes 的 Pod 中拥有相同类型的多个容器吗?
Posted
技术标签:
【中文标题】我们可以在 Kubernetes 的 Pod 中拥有相同类型的多个容器吗?【英文标题】:Can we have same kind of multiple containers in a Pod in Kubernetes? 【发布时间】:2016-01-22 22:03:42 【问题描述】:例如,我可以使用以下 yaml 来生成具有多个容器的 pod:
apiVersion: v1
kind: Pod
metadata:
name: lampapp
labels:
app: app
spec:
containers:
- name: lampdb
image: mysql_test
- name: app
image: php-app-db-url-env
env:
- name: DB_URL
value: 127.0.0.1:3306
- name: app2
image: php-app-db-url-env
env:
- name: DB_URL
value: 127.0.0.1:3306
【问题讨论】:
检查这个以更好地理解如何编写规范文件:cloud.google.com/container-engine/docs/spec-schema @cristi 链接现已断开。一定会喜欢追逐 Google 和他们过时的文档! 最新文档在这里:kubernetes.io/docs/api-reference/v1.5。使用所需的 kube 集群版本更改“1.5”。 【参考方案1】:是的,您可以添加多个具有相同图像的容器。
容器对象必须包含:
-
名称: 容器的名称。它必须是 DNS_LABEL 并且是 pod 中的
unique
。无法更新。
图像: Docker 图像名称。
您必须使容器名称唯一
您可以执行以下操作:
- name: app
image: php-app-db-url-env ---
- name: app2 |> same image
image: php-app-db-url-env ---
但不是这个:
- name: app
image: php-app-db-url-env
- name: app
image: <any image>
容器规范也应该在 Pod 中包含一个唯一的端口号
【讨论】:
谢谢。我尝试了上述结构,但它所做的是:它启动了第一个容器,但在几秒钟内终止了第二个容器。并且它不断地重新启动它。 可能他们正在尝试监听同一个端口。检查一下kubectl describe
应该会为您提供有关问题所在的线索【参考方案2】:
可以有相同种类的容器,但它们的端口会不同。
【讨论】:
是的,这是一句好话。如果您有 2 个具有相同图像和不同名称的容器,请注意容器参数。如果容器具有相同的端口选项,则只有最后一个容器会运行。【参考方案3】:嗯,这正是 Pod 的含义:多个容器共享一些命名空间和卷。
【讨论】:
以上是关于我们可以在 Kubernetes 的 Pod 中拥有相同类型的多个容器吗?的主要内容,如果未能解决你的问题,请参考以下文章
#yyds干货盘点# Kubernetes 如何高效调度 Pod?(23)