k8s---存储之Configmap配置管理

清理实验环境

[root@server2 ~]# kubectl delete pod --all -n test --force 
[root@server2 ~]# kubectl delete ns test 
[root@server2 ~]# kubectl delete pod --all -n demo --force
[root@server2 ~]# kubectl delete ns demo 
[root@server2 ~]# kubectl get ns

k8s---存储之Configmap配置管理_第1张图片

[root@server2 ~]# kubectl delete pod nginx --force 
[root@server2 ~]# kubectl delete deployments.apps deployment 
[root@server2 ~]# kubectl delete pod demo --force 
[root@server2 ~]# kubectl delete svc nginx-svc 
[root@server2 ~]# kubectl delete ingress ingress-demo 
[root@server2 ~]# kubectl delete networkpolicies. --all

Conflgmap配置管理

k8s---存储之Configmap配置管理_第2张图片
在这里插入图片描述

一.创建ConfigMap的方式

四种

1.使用字面值创建

[root@server2 ~]# kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2
[root@server2 ~]# kubectl describe cm my-config 

k8s---存储之Configmap配置管理_第3张图片

2.使用文件创建

key的名称是文件名称,value的值是这个文件的内容

[root@server2 ~]# kubectl create configmap my-config-2 --from-file=/etc/resolv.conf
[root@server2 ~]# cat /etc/resolv.conf
[root@server2 ~]# kubectl describe cm my-config-2 

k8s---存储之Configmap配置管理_第4张图片

3.使用目录创建

目录中的文件名为key,文件内容是value

[root@server2 ~]# mkdir congfigmap
[root@server2 ~]# cd congfigmap/
[root@server2 congfigmap]# mkdir test
[root@server2 congfigmap]# cp /etc/resolv.conf test/
[root@server2 congfigmap]# cp /etc/fstab test/

在这里插入图片描述

[root@server2 congfigmap]# kubectl create configmap my-config-3 --from-file=test
[root@server2 congfigmap]# kubectl describe cm my-config-3 

k8s---存储之Configmap配置管理_第5张图片

4.编写configmap的yaml文件创建

[root@server2 congfigmap]# vim cm1.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: cm1-config
data:
  db_host: "192.168.3.250"
  db_port: "3306"
[root@server2 congfigmap]# kubectl apply -f cm1.yaml 
[root@server2 congfigmap]# kubectl describe cm cm1-config

k8s---存储之Configmap配置管理_第6张图片

如何使用configmap

k8s---存储之Configmap配置管理_第7张图片

通过环境变量的方式直接传递给pod

[root@server2 congfigmap]# vim pod1.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod1
spec:
  containers:
    - name: pod1
      image: busyboxplus
      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
[root@server2 congfigmap]# kubectl apply -f pod1.yaml 
[root@server2 congfigmap]# kubectl logs pod1 
[root@server2 congfigmap]# kubectl describe cm cm1-config 

k8s---存储之Configmap配置管理_第8张图片

[root@server2 congfigmap]# vim pod2.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod2
spec:
  containers:
    - name: pod2
      image: busyboxplus
      command: ["/bin/sh", "-c", "env"]
      envFrom:
        - configMapRef:
            name: cm1-config
  restartPolicy: Never
[root@server2 congfigmap]# kubectl apply -f pod2.yaml
[root@server2 congfigmap]# kubectl get pod
[root@server2 congfigmap]# kubectl logs pod2

k8s---存储之Configmap配置管理_第9张图片

使用configmap设置命令行参数

[root@server2 congfigmap]# kubectl delete pod --all
[root@server2 congfigmap]# vim pod2.yaml

k8s---存储之Configmap配置管理_第10张图片

[root@server2 congfigmap]# kubectl apply -f pod2.yaml 
[root@server2 congfigmap]# kubectl get pod
[root@server2 congfigmap]# kubectl logs pod2 

k8s---存储之Configmap配置管理_第11张图片

[root@server2 congfigmap]# vim pod3.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod3
spec:
  containers:
    - name: pod3
      image: busyboxplus
      command: ["/bin/sh", "-c", "cat /config/*"]
      volumeMounts:
      - name: config-volume
        mountPath: /config
  volumes:
    - name: config-volume
      configMap:
        name: cm1-config
[root@server2 congfigmap]# kubectl apply -f pod3.yaml
[root@server2 congfigmap]# kubectl get pod
[root@server2 congfigmap]# kubectl logs pod3

k8s---存储之Configmap配置管理_第12张图片

configmap热更新

[root@server2 congfigmap]# kubectl delete pod --all
[root@server2 congfigmap]# vim pod3.yaml 

k8s---存储之Configmap配置管理_第13张图片

[root@server2 congfigmap]# kubectl apply -f pod3.yaml
[root@server2 congfigmap]# kubectl get pod
[root@server2 congfigmap]# kubectl attach pod3 -it

k8s---存储之Configmap配置管理_第14张图片

[root@server2 congfigmap]# kubectl edit cm cm1-config 

k8s---存储之Configmap配置管理_第15张图片

[root@server2 congfigmap]# kubectl describe cm cm1-config 
[root@server2 congfigmap]# kubectl attach pod3 -it

k8s---存储之Configmap配置管理_第16张图片

k8s---存储之Configmap配置管理_第17张图片

[root@server2 congfigmap]# vim demo.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:v1
        volumeMounts:
        - name: config-volume
          mountPath: /etc/nginx/conf.d
      volumes:
        - name: config-volume
          configMap:
            name: nginx-config
[root@server2 congfigmap]# vim default.conf 
server {
    listen       8080;
    server_name  _;

    location / {
        root /usr/share/nginx/html;
        index  index.html index.htm;
    }
}
[root@server2 congfigmap]# kubectl create configmap nginx-config --from-file=default.conf
[root@server2 congfigmap]# kubectl get cm
[root@server2 congfigmap]# kubectl describe cm nginx-config 

k8s---存储之Configmap配置管理_第18张图片

[root@server2 congfigmap]# kubectl apply -f demo.yml 
[root@server2 congfigmap]# kubectl get pod
[root@server2 congfigmap]# kubectl describe pod demo-75679c99b4-4v8mj 

k8s---存储之Configmap配置管理_第19张图片
k8s---存储之Configmap配置管理_第20张图片

[root@server2 congfigmap]# kubectl get pod -o wide
[root@server2 congfigmap]# curl 10.244.22.17:8080

在这里插入图片描述

[root@server2 congfigmap]# kubectl exec  -it demo-75679c99b4-4v8mj -- sh

k8s---存储之Configmap配置管理_第21张图片

修改端口为80

[root@server2 congfigmap]# kubectl edit cm nginx-config

k8s---存储之Configmap配置管理_第22张图片

[root@server2 congfigmap]# kubectl describe cm nginx-config 

k8s---存储之Configmap配置管理_第23张图片
configmap热更新后,并不会触发相关pod的滚动更新,需要手动触发
或者可以自己手动删除原有的pod,也会自动生成一个新的pod

[root@server2 congfigmap]# kubectl patch deployments.apps demo --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "2021031501"}}}}}'
[root@server2 congfigmap]# kubectl get pod -o wide

在这里插入图片描述
此时会关闭旧的pod,生成一个新的pod,可以访问80端口

[root@server2 congfigmap]# curl 10.244.141.204

在这里插入图片描述

你可能感兴趣的:(Linux企业级,kubernetes)