K8S Strore3:ConfigMap

K8S Strore3:ConfigMap

1. 简介

抽取应用配置,并且可以自动更新。
比如Reids配置文件,适合使用ConfigMap

2. Redis示例

2.1 创建文件

创建redis.conf ,这句话代表redis数据需要持久化存储。
appendonly yes

2.2 制作配置集

配置文件创建为配置集,将redis.conf 这个文件做成redis-conf 配置集
# 创建配置集,redis保存到k8s的etcd root@docker01:/home# kubectl create cm redis-conf --from-file=redis.conf configmap/redis-conf created

2.3 查看

root@docker01:/home# kubectl get cm NAME DATA AGE kube-root-ca.crt 1 2d4h redis-conf 1 2m5s # 查看yaml信息 root@docker01:/home# kubectl get cm redis-conf -oyaml
notion image
apiVersion: v1 data: redis.conf: | appendonly yes kind: ConfigMap metadata: name: redis-conf namespace: default
  • data中是所有真正的数据,key:默认是文件名,value:配置文件内容
 
 

2.4 创建Pod

2.4.1 创建文件redis.yaml文件

apiVersion: v1 kind: Pod metadata: name: redis spec: containers: - name: redis image: redis command: - redis-server - "/redis-master/redis.conf" #指的是redis容器内部的位置 ports: - containerPort: 6379 volumeMounts: - mountPath: /data name: data - mountPath: /redis-master name: config volumes: - name: data emptyDir: {} - name: config configMap: name: redis-conf items: - key: redis.conf path: redis.conf

2.4.2 运行

root@docker01:/home# kubectl apply -f redis.yaml pod/redis created

2.4.3 可视化查看

notion image
查看redis这个Pod中/redis-master/redis.conf文件
notion image
 

2.4.4 主机中修改配置集内容测试

# 1. 查看配置集 root@docker01:/home# kubectl get cm NAME DATA AGE kube-root-ca.crt 1 2d5h redis-conf 1 45m # 2. 修改配置集 root@docker01:/home# kubectl edit cm redis-conf
notion image
等一会儿,信息同步
notion image
 
检查redis是否生效
# 1. 使用redis-cli客户端连接redis root@redis:/redis-master# redis-cli # 2. 使用命令检查appendonly,发现生效 127.0.0.1:6379> CONFIG GET appendonly 1) "appendonly" 2) "yes" # 监测requrepass是否生效,由于修改还没有重启,故没生效 127.0.0.1:6379> CONFIG GET requirepass 1) "requirepass" 2) "" 127.0.0.1:6379>
notion image
由于redis自身没有热更新能力,所以需要重新启动这个redis的Pod才可以使配置生效。

3. 总结

  • 配置文件推荐使用ConfigMap