kubernetes存储-configmap

目录

一、字面值创建

二、通过文件创建

三、通过目录创建

四、通过yaml文件创建

五、使用configmap设置环境变量

六、使用conigmap设置命令行参数

七、通过数据卷使用configmap

八、configmap热更新


      在Kubernetes中,ConfigMap是一种存储配置数据的对象。它允许将配置数据分离出来,以便在不改变应用程序容器镜像的情况下进行修改。ConfigMap可以存储以键值对形式表示的配置数据,比如环境变量、命令行参数、配置文件等。

一、字面值创建

kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2
kubectl get cm
kubectl describe cm my-config

二、通过文件创建

kubectl create configmap my-config-2 --from-file=/etc/resolv.conf

kubectl describe cm my-config-2

三、通过目录创建

mkdir test
cp /etc/passwd test/
cp /etc/fstab  test/
ls test/
kubectl create configmap my-config-3 --from-file=test
kubectl describe cm my-config-3

四、通过yaml文件创建

vim cm1.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: cm1-config
data:
  db_host: "172.25.0.250"
  db_port: "3306"

kubectl apply -f cm1.yaml
kubectl describe cm cm1-config

五、使用configmap设置环境变量

vim pod1.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod1
spec:
  containers:
    - name: pod1
      image: busybox
      command: ["/bin/sh", "-c", "env"]
      env:
        - name: key1
          valueFrom:
            configMapKeyRef:
              name: cm1-config
              key: db_host
        - name: key2
          valueFrom:
            configMapKeyRef:
              name: cm1-config
              key: db_port
  restartPolicy: Never

kubectl apply -f pod1.yaml
kubectl logs pod1
kubectl delete  pod pod1

vim pod2.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod2
spec:
  containers:
    - name: pod2
      image: busybox
      command: ["/bin/sh", "-c", "env"]
      envFrom:
        - configMapRef:
            name: cm1-config
  restartPolicy: Never

kubectl apply -f pod2.yaml
kubectl logs pod2
kubectl delete  pod pod2

六、使用conigmap设置命令行参数

vim pod3.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod3
spec:
  containers:
    - name: pod3
      image: busybox
      command: ["/bin/sh", "-c", "echo $(db_host) $(db_port)"]
      envFrom:
        - configMapRef:
            name: cm1-config
  restartPolicy: Never

kubectl apply -f pod3.yaml
kubectl logs  pod3
kubectl delete  pod pod3

 

七、通过数据卷使用configmap

vim pod4.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod4
spec:
  containers:
    - name: pod4
      image: busybox
      command: ["/bin/sh", "-c", "cat /config/db_host"]
      volumeMounts:
      - name: config-volume
        mountPath: /config
  volumes:
    - name: config-volume
      configMap:
        name: cm1-config
  restartPolicy: Never

kubectl apply -f pod4.yaml
kubectl logs  pod4
kubectl delete pod pod4

八、configmap热更新

vim nginx.conf

server {
    listen       8000;
    server_name  _;

    location / {
        root /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

kubectl create configmap nginxconf --from-file=nginx.conf
kubectl describe cm nginxconf

vim my-nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx
          volumeMounts:
          - name: config-volume
            mountPath: /etc/nginx/conf.d
      volumes:
        - name: config-volume
          configMap:
            name: nginxconf

kubectl apply -f my-nginx.yaml
kubectl get pod -o wide

kubectl exec my-nginx-85fb986977-mqtl9 -- cat /etc/nginx/conf.d/nginx.conf
curl 10.244.109.75:8000

编辑cm,修改端口

kubectl edit  cm nginxconf

修改cm后,过上几秒配置信息会同步到容器,但是容器内运行的服务并不会加载生效,需要手动刷新

方式一:(推荐)

kubectl delete  pod my-nginx-85fb986977-mqtl9
kubectl get pod -o wide

方式二:(手动触发版本更新,会新建一个replicaset)

kubectl patch deployments.apps my-nginx --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20230312"}}}}}'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值