Kubernetes练习<9>---储存管理(Configmap配置管理)

Configmap配置管理
ConfigMap API资源提供了将配置注入容器的机制,ConfigMap可用于存储细粒度信息如单个属性,或粗粒度信息如整个配置文件或JSON对象。
用于保存配置数据,以键对形式储存。
ConfigMap API资源存储键/值对配置数据,这些数据可以在pods里使用。ConfigMap跟Secrets类似,但是ConfigMap可以更方便的处理不包含敏感信息的字符串。

ConfigMap有以下几种使用方式:

填充环境变量的值
设置容器内的命令行参数
填充卷的配置文件

1、 创建configmap
创建ConfigMap的方式有4种:

直接在命令行中指定configmap参数创建,即--from-literal
指定文件创建,即将一个配置文件创建为一个ConfigMap--from-file=<文件>
指定目录创建,即将一个目录下的所有配置文件创建为一个ConfigMap,--from-file=<目录>
先写好标准的configmap的yaml文件,然后kubectl create -f 创建

(1)直接在命令行中指定configmap参数创建

[wjjk8s@server1 manifest]$ kubectl create configmap cm1 --from-literal=key1=vules1
[wjjk8s@server1 manifest]$ kubectl get cm
NAME   DATA   AGE
cm1    1      9s
[wjjk8s@server1 manifest]$ kubectl describe cm cm1
[wjjk8s@server1 manifest]$ kubectl get cm -o yaml

在这里插入图片描述
在这里插入图片描述

(2)指定文件创建
文件名称为key,内容为vules

[wjjk8s@server1 manifest]$ kubectl create configmap cm2 --from-file=/etc/resolv.conf

在这里插入图片描述

(3)指定目录创建

[wjjk8s@server1 manifest]$ kubectl create configmap cm3 --from-file=cm

在这里插入图片描述

(4)configmap的yaml文件

[wjjk8s@server1 cm]$ cat cm4.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: cm4
data:
  db_host: "172.25.1.250"
  db_port: "3306"
[wjjk8s@server1 cm]$ kubectl create -f cm4.yaml 

在这里插入图片描述

2、使用ConfigMap

使用ConfigMap有三种方式:

第一种是通过环境变量的方式,直接传递给pod 
    使用configmap中指定的key
    使用configmap中所有的key
第二种是通过在pod的命令行下运行的方式(启动命令中)
第三种是作为volume的方式挂载到pod内

(1)通过环境变量的方式,直接传递给pod
1.1:定义容器内名称

[wjjk8s@server1 cm]$ vim pod.yaml
[wjjk8s@server1 cm]$ kubectl create -f pod.yaml
[wjjk8s@server1 cm]$ kubectl logs pod1
KUBERNETES_PORT_443_TCP_PORT=443
key1=172.25.1.250
KUBERNETES_PORT_443_TCP_PROTO=tcp
key2=3306

在这里插入图片描述
在这里插入图片描述
1.2:直接导入cm4

envFrom:
        - configMapRef:
            name: cm4
[wjjk8s@server1 cm]$ kubectl create -f pod1.yaml 
[wjjk8s@server1 cm]$ kubectl logs pod1 			#查看

在这里插入图片描述

在这里插入图片描述

(2)通过在pod的命令行下运行的方式

command: ["/bin/sh", "-c", "echo $(db_host) $(db_port)"]

在这里插入图片描述

(3)作为volume的方式挂载到pod内

 command: ["/bin/sh", "-c", "cat /config/db_host"]
      volumeMounts:
      - name: config-volume
        mountPath: /config
  volumes:
    - name: config-volume
      configMap:
        name: cm4
[wjjk8s@server1 cm]$ kubectl logs pod2 
172.25.1.250

在这里插入图片描述

3、configmap热更新

[wjjk8s@server1 cm]$ kubectl exec -it my-nginx-7b55b857-5k4b9 -- bash
root@my-nginx-7b55b857-5k4b9:/# cd /config/
root@my-nginx-7b55b857-5k4b9:/config# ls
db_host  db_port
root@my-nginx-7b55b857-5k4b9:/config# cat db_host 
172.25.1.250

在这里插入图片描述

在这里插入图片描述

更新:删除pod重新创建更新

[wjjk8s@server1 cm]$ kubectl get cm cm4 -o yaml		#查看
[wjjk8s@server1 cm]$ kubectl edit cm cm4		#更改内容
[wjjk8s@server1 cm]$ kubectl delete pod my-nginx-7b55b857-5k4b9		#删除会自动更新
[wjjk8s@server1 cm]$ kubectl exec -it my-nginx-7b55b857-5k4b9 -- bash
root@my-nginx-7b55b857-5k4b9:/# cd config/
root@my-nginx-7b55b857-5k4b9:/config# cat db_host 
172.25.1.100

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

更新:指令热更新

[wjjk8s@server1 cm]$ kubectl patch deployments.apps my-nginx --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20200502"}}}}}'
[[wjjk8s@server1 cm]$ vim pod5.yaml 

在这里插入图片描述

4、创建nginx

[wjjk8s@server1 cm]$ vim pod5.yaml 
[wjjk8s@server1 cm]$ vim nginx.conf
[wjjk8s@server1 cm]$ kubectl create configmap nginxconf --from-file=nginx.conf 
[wjjk8s@server1 cm]$ kubectl create -f pod5.yaml 
[wjjk8s@server1 cm]$ kubectl get pod -o wide
NAME                       READY   STATUS    RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
my-nginx-9f4f65995-zzl84   1/1     Running   0          20s   10.244.2.93   server4   <none>           <none>
[wjjk8s@server1 cm]$ curl 10.244.2.93:8000

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

更新:指令热更新

[wjjk8s@server1 cm]$ kubectl patch deployments.apps my-nginx --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20200502"}}}}}'		#pod名称更改
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值