07-Kubernetes中的ConfigMap

本文详细介绍了如何在Kubernetes中使用ConfigMap管理Redis和RabbitMQ的配置文件,包括创建ConfigMap、应用到Pod中的步骤,以及配置变更对Pod的影响和操作实践。

在 Kubernetes 中,挂载目录可以用 PV&PVC,但挂载配置文件,比如挂载 Redis、RabbitMQ等中间件的配置文件,却是推荐使用 ConfigMap(配置集)。

使用 ConfigMap 主要有两个步骤:

  • 将原有的配置文件,创建为配置集
  • 引用配置集进行使用

下面以 Redis 为例,进行实践。

1. 创建配置集

方式一:使用命令行方式

# 创建配置,redis保存到k8s的etcd;
kubectl create cm redis-conf-map --from-file=redis.conf

方式二:使用yaml文件方式

(1)新建一个 redis-config.yaml 文件,内容如下

apiVersion: v1
data:    #data是所有真正的数据,key:默认是文件名   value:配置文件的内容
  redis.conf: |
    appendonly yes
kind: ConfigMap
metadata:
  name: redis-conf-map
  namespace: default

(2)应用上面的文件

kubectl apply -f redis-config.yaml

(3)查看结果

kubectl get cm

2. 创建 Pod

(1)新建一个 redis-pod.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 # Pod内部要挂载的目录
      name: data
    - mountPath: /redis-master 
      name: config  # 映射到volumes下面的 name
  volumes:
    - name: data
      emptyDir: {} # k8s自动分配目录
    - name: config
      configMap: # 配置集方式
        name: redis-conf-map # 通过名称查找对应配置集
        items:
        - key: redis.conf
          path: redis.conf # 映射到Pod里面的/redis-master/redis.conf文件

(2)应用一下

kubectl apply -f redis-pod.yaml

(3)查看创建结果

kubectl get pod

3. 测试一下

(1)在 master 结点,更改配置文件

# 查看cm信息
kubectl get cm
# 更改cm信息,往里面加入新的配置信息,并保存退出
kubectl edit cm redis-conf-map

(2)进入到对应的 Redis 的 Pod 内部,查看是否将变更信息更新到配置文件中

cd /redis-master/

cat redis.conf

(3)如果配置文件中有变更信息,证明成功。

总结:修改了 ConfigMap,Pod 里面的配置文件也会跟着变更;但如果配置文件没有生效,则需要重启 Pod,以应用到最新的配置文件信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值