首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相似容器的多个部署或单个部署

相似容器的多个部署或单个部署
EN

Stack Overflow用户
提问于 2017-10-23 09:16:22
回答 2查看 560关注 0票数 0

我正在运行一些Docker容器,它们共享相同的基础镜像,但几个环境变量的值略有不同(以及一些共享值)。我的设置如下所示:

代码语言:javascript
复制
# Run 2 containers for client 123
docker run --net=host -e CLIENT_ID=123 -e LOCATION=A -e SHARED_VALUE=ONE -ti myregistry.com/app:0.1.0
docker run --net=host -e CLIENT_ID=123 -e LOCATION=A -e SHARED_VALUE=ONE -ti myregistry.com/app:0.1.0

# Run 2 containers for client 456
docker run --net=host -e CLIENT_ID=456 -e LOCATION=B  -e SHARED_VALUE=ONE -ti myregistry.com/app:0.1.0
docker run --net=host -e CLIENT_ID=456 -e LOCATION=B  -e SHARED_VALUE=ONE -ti myregistry.com/app:0.1.0

... etc

我非常确定这将转化为多个配置映射,例如

配置映射

1)

代码语言:javascript
复制
# config map for the first set containers
apiVersion: v1
kind: ConfigMap
metadata:
  name: config-1
  namespace: default
data:
  CLIENT_ID: 123
  LOCATION: A

2)

代码语言:javascript
复制
# config map for the second set of containers
apiVersion: v1
kind: ConfigMap
metadata:
  name: config-2
  namespace: default
data:
  CLIENT_ID: 456
  LOCATION: B

3)

代码语言:javascript
复制
# shared configmap
apiVersion: v1
kind: ConfigMap
metadata:
  name: config-shared
  namespace: default
data:
  SHARED_VALUE=ONE

但我不确定的是,我是否应该为这些稍有不同的容器集创建单独的部署,或者是否应该在单个部署中包含这两组容器。我倾向于将这些组合到一个部署中,如下所示:

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:

    - name: container-1
      ...
      env:
        - name: CLIENT_ID
          valueFrom:
            configMapKeyRef:
              name: config-1
              key: CLIENT_ID
        - name: LOCATION
          valueFrom:
            configMapKeyRef:
              name: config-1
              key: LOCATION
        - name: SHARED_VALUE
          valueFrom:
            configMapKeyRef:
              name: config-shared
              key: SHARED_VALUE


    - name: container-2
      ...
      env:
        - name: CLIENT_ID
          valueFrom:
            configMapKeyRef:
              name: config-2
              key: CLIENT_ID
        - name: LOCATION
          valueFrom:
            configMapKeyRef:
              name: config-2
              key: LOCATION
        - name: SHARED_VALUE
          valueFrom:
            configMapKeyRef:
              name: config-shared
              key: SHARED_VALUE

无论如何,在决定是否在单个部署中包含多个容器时,我应该考虑哪些事情?我在这里采取的方法有什么缺点吗?

EN

回答 2

Stack Overflow用户

发布于 2017-10-23 19:24:51

在我看来,在这种情况下,每个客户端的单独部署肯定是可行的。

票数 0
EN

Stack Overflow用户

发布于 2017-10-23 19:36:53

您可以使用configMap填充环境变量的值,并在pod定义中引用它。你的方法很好。

关于在一个实例中部署多个容器,这取决于您的容器之间的相互依赖程度。Kubernetes文档写得很好,是关于How Pods manage multiple Containers的。

注如果您想在单个pod中耦合容器,我建议您使用Kubernetes Deployments对象来共同利用ReplicaSets和pod。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46880722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档