Docker 如何在一个pod中运行多个无状态容器?
我有两个小容器,内存占用很小,流量也很小。我认为为他们每个人单独设置一个豆荚太过分了,太昂贵了 目前,我只需将Docker映像推送到OpenShift在线容器注册表,即可部署容器。OpenShift会在新映像到达后立即重建和部署应用程序。它工作得很好,但我就是找不到一种方法让OpenShift为同一个应用程序/pod接受多个图像/容器Docker 如何在一个pod中运行多个无状态容器?,docker,kubernetes,openshift,Docker,Kubernetes,Openshift,我有两个小容器,内存占用很小,流量也很小。我认为为他们每个人单独设置一个豆荚太过分了,太昂贵了 目前,我只需将Docker映像推送到OpenShift在线容器注册表,即可部署容器。OpenShift会在新映像到达后立即重建和部署应用程序。它工作得很好,但我就是找不到一种方法让OpenShift为同一个应用程序/pod接受多个图像/容器 有人知道如何在一个应用程序/pod中运行多个容器吗?我不知道在创建多个pod时,您会想到哪些缺点。吊舱和集装箱的开销可以忽略不计 但将多个应用程序放在一个pod中
有人知道如何在一个应用程序/pod中运行多个容器吗?我不知道在创建多个pod时,您会想到哪些缺点。吊舱和集装箱的开销可以忽略不计 但将多个应用程序放在一个pod中显然有缺点:
- 如果要重新启动单个容器,则需要重新启动所有容器
- 不能单独缩放容器,因此不能有不同的服务计数(对于HA或负载分布)
- 您必须按端口标识服务,因为服务发现在每个Pod中都有效
- 例如,拥有多个HTTP服务,您可以将它们全部映射到端口80并使用
和http://fooservice
而不是http://barservice
和http://uberpod:8001
http://uberpod:8002
- 例如,拥有多个HTTP服务,您可以将它们全部映射到端口80并使用
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: foo
image: busybox
command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']
- name: bar
image: mycontainer:latest
我不知道你在创建多个豆荚时会有什么缺点。吊舱和集装箱的开销可以忽略不计 但将多个应用程序放在一个pod中显然有缺点:
- 如果要重新启动单个容器,则需要重新启动所有容器
- 不能单独缩放容器,因此不能有不同的服务计数(对于HA或负载分布)
- 您必须按端口标识服务,因为服务发现在每个Pod中都有效
- 例如,拥有多个HTTP服务,您可以将它们全部映射到端口80并使用
和http://fooservice
而不是http://barservice
和http://uberpod:8001
http://uberpod:8002
- 例如,拥有多个HTTP服务,您可以将它们全部映射到端口80并使用
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: foo
image: busybox
command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']
- name: bar
image: mycontainer:latest
考虑到每个pod或服务消耗一个IP,并且在kubernetes中,每个CPU核心的建议限制为10个pod,因此每个pod为微服务提供多个容器绝对是一个好主意 在Openshift Online中,您的命名空间将限制POD的数量 此外,您可以为一个吊舱提供多种服务。。。但我不推荐它,因为它也使用IP。。。。如果你需要的话,还有一张证书 您可以通过对容器进行请求和限制来管理其内存。我猜如果不设置限制,容器将使用默认值配置自身。但如果您设置了限制,容器初始化应该考虑到这一点。(这是Redhat提供的容器的情况)。 对于缩放:您应该根据您的缩放需要以智能方式将容器分组到pod中。在某些情况下,它可能意味着一个容器装一个吊舱。但如果仅消耗0.0001%的CPU,则不会。如果需要缩放, 这意味着您需要的CPU比一个核心的10%多得多。 要重新启动容器,您可能需要重新启动POD。不总是这样,而且它可以是透明的:为什么要重新启动容器? 容器中的Bug?活度检查可以帮你解决这个问题。。。我认为这是在容器级别。
因此,我认为这不是要求1个pod/容器的充分理由。鉴于每个pod或服务使用一个IP,并且在kubernetes中,每个CPU核心有10个pod的建议限制,因此为微服务每个pod使用多个容器绝对是一个好主意 在Openshift Online中,您的命名空间将限制POD的数量 此外,您可以为一个吊舱提供多种服务。。。但我不推荐它,因为它也使用IP。。。。如果你需要的话,还有一张证书 您可以通过对容器进行请求和限制来管理其内存。我猜如果不设置限制,容器将使用默认值配置自身。但如果您设置了限制,容器初始化应该考虑到这一点。(这是Redhat提供的容器的情况)。 对于缩放:您应该根据您的缩放需要以智能方式将容器分组到pod中。在某些情况下,它可能意味着一个容器装一个吊舱。但如果仅消耗0.0001%的CPU,则不会。如果需要缩放, 这意味着您需要的CPU比一个核心的10%多得多。 要重新启动容器,您可能需要重新启动POD。不总是这样,而且它可以是透明的:为什么要重新启动容器? 容器中的Bug?活度检查可以帮你解决这个问题。。。我认为这是在容器级别。
因此,我认为这不是要求1个吊舱/容器的充分理由。我认为吊舱和节点之间有轻微的混淆。我认为吊舱和节点之间有轻微的混淆。这是有效的。我可以复制并调整
容器下的零件:
。但是你的权利对我没有多大帮助