首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Kubernetes结构映射复制到一个已启用写入的吊舱区域?

如何将Kubernetes结构映射复制到一个已启用写入的吊舱区域?
EN

Stack Overflow用户
提问于 2019-05-15 18:21:35
回答 2查看 7.4K关注 0票数 0

我正试图在库伯内特斯部署红色哨兵。我已经完成了这一任务,但希望使用ConfigMaps来允许我们更改sentinel.conf文件中主服务器的IP地址。我启动了它,但是redis不能写入配置文件,因为configMaps的挂载点是readOnly。

我希望运行一个init容器,并将redis conf复制到一个不同的dir中。但是init容器找不到conf文件。

我有什么选择?集装箱?不是ConfigMap?

代码语言:javascript
复制
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: redis-sentinel
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: redis-sentinel
    spec:
      hostNetwork: true
      containers:
      - name: redis-sentinel
        image: IP/redis-sentinel
        ports:
          - containerPort: 63790
          - containerPort: 26379
        volumeMounts:
          - mountPath: /redis-master-data
            name: data
          - mountPath: /usr/local/etc/redis/conf
            name: config
      volumes:
        - name: data
          emptyDir: {}
        - name: config
          configMap:
            name: sentinel-redis-config
            items:
            - key: redis-config-sentinel
              path: sentinel.conf
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-17 09:09:41

根据@P Ekambaram的提议,你可以试试这个:

代码语言:javascript
复制
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: redis-sentinel
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: redis-sentinel
    spec:
      hostNetwork: true
      containers:
      - name: redis-sentinel
        image: redis:5.0.4
        ports:
          - containerPort: 63790
          - containerPort: 26379
        volumeMounts:
          - mountPath: /redis-master-data
            name: data
          - mountPath: /usr/local/etc/redis/conf
            name: config
      initContainers:
      - name: copy
        image: redis:5.0.4
        command: ["bash", "-c", "cp /redis-master/redis.conf /redis-master-data/"]
        volumeMounts:
        - mountPath: /redis-master
          name: config
        - mountPath: /redis-master-data
          name: data
     volumes:
     - name: data
       emptyDir: {}
     - name: config
       configMap:
         name: example-redis-config
         items:
         - key: redis-config
           path: redis.conf

在本例中,initContainer将文件从ConfigMap复制到可写dir中。

注意:

当将Pod分配给节点时,首先创建一个emptyDir卷,并且只要该Pod在该节点上运行,该卷就存在。顾名思义,它最初是空的。Pod中的容器都可以在emptyDir卷中读取和写入相同的文件,尽管该卷可以安装在每个容器中相同或不同的路径上。当Pod因任何原因从节点中删除时,emptyDir中的数据将被永久删除。

票数 5
EN

Stack Overflow用户

发布于 2019-05-15 18:29:35

创建一个启动脚本。在该副本中,在卷中挂载到可写位置的configMap文件。然后运行容器进程。

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

https://stackoverflow.com/questions/56155495

复制
相关文章

相似问题

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