Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 如何在一个pod中运行多个无状态容器?_Docker_Kubernetes_Openshift - Fatal编程技术网

Docker 如何在一个pod中运行多个无状态容器?

Docker 如何在一个pod中运行多个无状态容器?,docker,kubernetes,openshift,Docker,Kubernetes,Openshift,我有两个小容器,内存占用很小,流量也很小。我认为为他们每个人单独设置一个豆荚太过分了,太昂贵了 目前,我只需将Docker映像推送到OpenShift在线容器注册表,即可部署容器。OpenShift会在新映像到达后立即重建和部署应用程序。它工作得很好,但我就是找不到一种方法让OpenShift为同一个应用程序/pod接受多个图像/容器 有人知道如何在一个应用程序/pod中运行多个容器吗?我不知道在创建多个pod时,您会想到哪些缺点。吊舱和集装箱的开销可以忽略不计 但将多个应用程序放在一个pod中

我有两个小容器,内存占用很小,流量也很小。我认为为他们每个人单独设置一个豆荚太过分了,太昂贵了

目前,我只需将Docker映像推送到OpenShift在线容器注册表,即可部署容器。OpenShift会在新映像到达后立即重建和部署应用程序。它工作得很好,但我就是找不到一种方法让OpenShift为同一个应用程序/pod接受多个图像/容器


有人知道如何在一个应用程序/pod中运行多个容器吗?

我不知道在创建多个pod时,您会想到哪些缺点。吊舱和集装箱的开销可以忽略不计

但将多个应用程序放在一个pod中显然有缺点:

  • 如果要重新启动单个容器,则需要重新启动所有容器
  • 不能单独缩放容器,因此不能有不同的服务计数(对于HA或负载分布)
  • 您必须按端口标识服务,因为服务发现在每个Pod中都有效
    • 例如,拥有多个HTTP服务,您可以将它们全部映射到端口80并使用
      http://fooservice
      http://barservice
      而不是
      http://uberpod:8001
      http://uberpod:8002
同样,拥有多个吊舱几乎没有开销

我不知道OpenShift中的Kubernetes集成是如何工作的,但是使用普通的Kubernetes YAML文件,您可以将另一个容器添加到容器列表中:

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
同样,拥有多个吊舱几乎没有开销

我不知道OpenShift中的Kubernetes集成是如何工作的,但是使用普通的Kubernetes YAML文件,您可以将另一个容器添加到容器列表中:

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?活度检查可以帮你解决这个问题。。。我认为这是在容器级别。
  • 升级容器映像时,触发器可以重新启动pod,在就绪检查的帮助下,pod对应用程序的用户是透明的。
    因此,我认为这不是要求1个pod/容器的充分理由。

    鉴于每个pod或服务使用一个IP,并且在kubernetes中,每个CPU核心有10个pod的建议限制,因此为微服务每个pod使用多个容器绝对是一个好主意 在Openshift Online中,您的命名空间将限制POD的数量 此外,您可以为一个吊舱提供多种服务。。。但我不推荐它,因为它也使用IP。。。。如果你需要的话,还有一张证书 您可以通过对容器进行请求和限制来管理其内存。我猜如果不设置限制,容器将使用默认值配置自身。但如果您设置了限制,容器初始化应该考虑到这一点。(这是Redhat提供的容器的情况)。 对于缩放:您应该根据您的缩放需要以智能方式将容器分组到pod中。在某些情况下,它可能意味着一个容器装一个吊舱。但如果仅消耗0.0001%的CPU,则不会。如果需要缩放, 这意味着您需要的CPU比一个核心的10%多得多。

    要重新启动容器,您可能需要重新启动POD。不总是这样,而且它可以是透明的:为什么要重新启动容器? 容器中的Bug?活度检查可以帮你解决这个问题。。。我认为这是在容器级别。
  • 升级容器映像时,触发器可以重新启动pod,在就绪检查的帮助下,pod对应用程序的用户是透明的。
    因此,我认为这不是要求1个吊舱/容器的充分理由。

    我认为吊舱和节点之间有轻微的混淆。我认为吊舱和节点之间有轻微的混淆。这是有效的。我可以复制并调整
    容器下的零件:
    。但是你的权利对我没有多大帮助