我正试图在库伯内特斯部署红色哨兵。我已经完成了这一任务,但希望使用ConfigMaps来允许我们更改sentinel.conf文件中主服务器的IP地址。我启动了它,但是redis不能写入配置文件,因为configMaps的挂载点是readOnly。
我希望运行一个init容器,并将redis conf复制到一个不同的dir中。但是init容器找不到conf文件。
我有什么选择?集装箱?不是ConfigMap?
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发布于 2019-05-17 09:09:41
根据@P Ekambaram的提议,你可以试试这个:
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中的数据将被永久删除。
发布于 2019-05-15 18:29:35
创建一个启动脚本。在该副本中,在卷中挂载到可写位置的configMap文件。然后运行容器进程。
https://stackoverflow.com/questions/56155495
复制相似问题