Kubernetes-使用ConfigMap抽取配置

ConfigMap
抽取应用配置,并且可以自动更新
1、redis示例
1、把之前的配置文件创建为配置集

# 创建配置,redis保存到k8s的etcd;
kubectl create cm redis-conf --from-file=redis.conf
[root@bigdata01 k8s]# vi redis.conf
[root@bigdata01 k8s]# cat redis.conf 
appendonly yes
[root@bigdata01 k8s]# kubectl create cm redis-conf --from-file=redis.conf 
configmap/redis-conf created
[root@bigdata01 k8s]# kubectl get cm
NAME               DATA   AGE
kube-root-ca.crt   1      10d
redis-conf         1      7s
[root@bigdata01 k8s]# kubectl get cm redis-conf -oyaml
apiVersion: v1
data:
  redis.conf: |
    appendonly yes
kind: ConfigMap
metadata:
  creationTimestamp: "2022-03-05T07:47:52Z"
  managedFields:
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
      f:data:
        .: {}
        f:redis.conf: {}
    manager: kubectl-create
    operation: Update
    time: "2022-03-05T07:47:52Z"
  name: redis-conf
  namespace: default
  resourceVersion: "195660"
  uid: 187c182d-eedc-49da-b498-207a9ffbed3e


精简一下就是这样啦~

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

在这里插入图片描述
创建pod

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
[root@bigdata01 k8s]# vi redis.yaml
[root@bigdata01 k8s]# ls
calico.yaml  dash.yaml  images.sh  ingress.yaml  origin_store.yaml  redis.conf  redis.yaml
[root@bigdata01 k8s]# kubectl apply -f redis.yaml 
pod/redis created
[root@bigdata01 k8s]# 

[root@bigdata01 k8s]# kubectl edit cm  redis-conf
configmap/redis-conf edited
[root@bigdata01 k8s]# kubectl apply -f redis.yaml 
pod/redis created

在这里插入图片描述修改ConfigMap

kubectl exec -it redis -- redis-cli

127.0.0.1:6379> CONFIG GET appendonly
127.0.0.1:6379> CONFIG GET requirepass

检查配置是否更新

kubectl exec -it redis -- redis-cli

127.0.0.1:6379> CONFIG GET maxmemory
127.0.0.1:6379> CONFIG GET maxmemory-policy

检查指定文件内容是否已经更新
修改了CM。Pod里面的配置文件会跟着变

配置值未更改,因为需要重新启动 Pod 才能从关联的 ConfigMap 中获取更新的值。
原因:我们的Pod部署的中间件自己本身没有热更新能力

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunywz

~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值