K8S之存储ConfigMap概述与说明,并详解常用ConfigMap示例
主机配置规划
服务器名称(hostname) | 系统版本 | 配置 | 内网IP | 外网IP(模拟) |
---|---|---|---|---|
k8s-master | CentOS7.7 | 2C/4G/20G | 172.16.1.110 | 10.0.0.110 |
k8s-node01 | CentOS7.7 | 2C/4G/20G | 172.16.1.111 | 10.0.0.111 |
k8s-node02 | CentOS7.7 | 2C/4G/20G | 172.16.1.112 | 10.0.0.112 |
ConfigMap概述
ConfigMap 是一种 API 对象,用来将非机密性的数据保存到健值对中。使用时可以用作环境变量、命令行参数或者存储卷中的配置文件。
ConfigMap 将环境配置信息和容器镜像解耦,便于应用配置的修改。当你需要储存机密信息时可以使用 Secret 对象。
备注:ConfigMap 并不提供保密或者加密功能。如果你想存储的数据是机密的,请使用 Secret;或者使用其他第三方工具来保证数据的私密性,而不是用 ConfigMap。
ConfigMap创建方式
通过目录创建
配置文件目录
1 | [root@k8s-master storage]# pwd |
创建ConfigMap并查看状态
1 | [root@k8s-master storage]# kubectl create configmap game-config --from-file=/root/k8s_practice/storage/configmap |
查看ConfigMap有哪些数据
1 | [root@k8s-master storage]# kubectl get configmap -o yaml ##### 查看方式1 |
通过文件创建
配置文件位置
1 | [root@k8s-master storage]# pwd |
创建ConfigMap并查看状态
1 | [root@k8s-master storage]# kubectl create configmap game-config-2 --from-file=/root/k8s_practice/storage/configmap/game.properties |
查看ConfigMap有哪些数据
1 | [root@k8s-master storage]# kubectl get configmap game-config-2 -o yaml ##### 查看方式1 |
通过命令行创建
创建ConfigMap并查看状态
1 | [root@k8s-master storage]# pwd |
查看ConfigMap有哪些数据
1 | [root@k8s-master storage]# kubectl get configmap special-config -o yaml ##### 查看方式1 |
通过yaml文件创建
yaml文件
1 | [root@k8s-master storage]# pwd |
创建ConfigMap并查看状态
1 | [root@k8s-master storage]# kubectl apply -f configmap.yaml |
查看ConfigMap有哪些数据
1 | [root@k8s-master storage]# kubectl get configmap configmap-demo -o yaml ##### 查看方式1 |
Pod中使用ConfigMap
如何在Pod中使用上述的ConfigMap信息。
当前存在的ConfigMap
1 | [root@k8s-master storage]# kubectl get configmap |
使用ConfigMap来替代环境变量
yaml文件
1 | [root@k8s-master storage]# pwd |
启动pod并查看状态
1 | [root@k8s-master storage]# kubectl apply -f pod_configmap_env.yaml |
查看打印日志
1 | [root@k8s-master storage]# kubectl logs pod-configmap-env |
使用ConfigMap设置命令行参数
yaml文件
1 | [root@k8s-master storage]# pwd |
启动pod并查看状态
1 | [root@k8s-master storage]# kubectl apply -f pod_configmap_cmd.yaml |
查看打印日志
1 | [root@k8s-master storage]# kubectl logs pod-configmap-cmd |
通过数据卷插件使用ConfigMap【推荐】
在数据卷里面使用ConfigMap,最基本的就是将文件填入数据卷,在这个文件中,键就是文件名【第一层级的键】,键值就是文件内容。
yaml文件
1 | [root@k8s-master storage]# pwd |
启动pod并查看状态
1 | [root@k8s-master storage]# kubectl apply -f pod_configmap_volume.yaml |
进入pod并查看
1 | [root@k8s-master storage]# kubectl exec -it pod-configmap-volume sh |
ConfigMap热更新
准备工作
yaml文件
1 | [root@k8s-master storage]# pwd |
应用yaml文件并查看状态
1 | [root@k8s-master storage]# kubectl apply -f pod_configmap_hot.yaml |
查看ConfigMap信息
1 | [root@k8s-master storage]# kubectl get configmap log-config -o yaml |
查看pod中的ConfigMap信息
1 | [root@k8s-master storage]# kubectl exec -it myapp-deploy-58ff9c997-drhwk -- cat /etc/config/log_level |
热更新
修改ConfigMap
1 | [root@k8s-master storage]# kubectl edit configmap log-config ### 将 INFO 改为了 DEBUG |
查看ConfigMap信息
1 | [root@k8s-master storage]# kubectl get configmap log-config -o yaml |
稍后10秒左右,再次查看pod中的ConfigMap信息
1 | [root@k8s-master storage]# kubectl exec -it myapp-deploy-58ff9c997-drhwk -- cat /etc/config/log_level |
由此可见,完成了一次热更新
相关阅读
2、Kubernetes K8S之通过yaml创建pod与pod文件常用字段详解