K8s---存储(一)Configmap配置管理
目录Configmap简介Configmap创建方式使用字面值创建:使用文件创建:使用目录创建:编写configmap的yaml文件创建使用configmap使用configmap设置环境变量使用conigmap设置命令行参数通过数据卷使用configmapconfigmap热更新Configmap简介Configmap用于保存配置数据,以键值对形式存储。configMap 资源提供了向 Pod
·
目录
Configmap简介
Configmap用于保存配置数据,以键值对形式存储。
configMap 资源提供了向 Pod 注入配置数据的方法。
旨在让镜像和配置文件解耦,以便实现镜像的可移植性和可复用性。
典型的使用场景:
- 填充环境变量的值
- 设置容器内的命令行参数
- 填充卷的配置文件
创建ConfigMap的4种方式:
- 使用字面值创建
- 使用文件创建
- 使用目录创建
- 编写configmap的yaml文件创建
Configmap创建方式
使用字面值创建:
kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2
kubectl describe cm my-config
使用文件创建:
kubectl create configmap my-config-2 --from-file=/etc/resolv.conf
kubectl describe cm my-config-2
文件在创建的时候可以看到key是文件名
使用目录创建:
cd
mkdir configmap
cd configmap/
mkdir test
cp /etc/resolv.conf /etc/fstab test/
ls test/
kubectl create configmap my-config-3 --from-file=test
kubectl describe cm my-config-3
读取目录里所有文件,文件名就是key,文件内容就是值
编写configmap的yaml文件创建
vim cm.yml
kubectl apply -f cm.yml
kubectl describe cm cm1-config
使用configmap
使用configmap设置环境变量
vim pod1.yaml
kubectl apply -f pod1.yaml
【删掉多余的pod】
kubectl delete deployments.apps --all
kubectl delete ingress ingress-myservicea
kubectl delete svc web1
kubectl delete svc web2
kubectl get pod
kubectl logs pod1
【可以看到改变了之前key的名称】
kubectl describe cm cm1-config
vim pod1.yaml 【设置不改变key的方式】
kubectl apply -f pod1.yaml
kubectl logs pod1
可以看到没有重新指定key
kubectl delete -f pod1.yaml
使用conigmap设置命令行参数
vim pod1.yaml
kubectl apply -f pod1.yaml
kubectl logs pod1
执行的是指定输出内容
kubectl delete -f pod1.yaml
通过数据卷使用configmap
vim pod1.yaml
kubectl apply -f pod1.yaml
kubectl logs pod2
可以看到输出的是db_host的ip地址
kubectl get pod
kubectl describe pod pod2
可以看到已经挂接了
kubectl describe cm cm1-config
存的key会变成config目录地下的文件名
kubectl get pod
kubectl delete -f pod1.yaml
vim pod1.yaml
kubectl apply -f pod1.yaml
kubectl logs pod2
看到目录里有两个文件,挂接的时候key变成了文件名,值是文件内的内容
kubectl delete -f pod1.yaml
kubectl get cm
(回收不要的资源):
kubectl delete -f cm.yml
kubectl delete cm my-config
kubectl delete cm my-config-2
kubectl delete cm my-config-3
kubectl get cm
configmap热更新
ls
vim nginx.conf
kubectl create configmap nginxconf --from-file=nginx.conf
kubectl describe cm nginxconf
vim pod1.yaml
kubectl apply -f pod1.yaml
kubectl get pod -o wide
curl 10.244.22.9
不能使用这种方式访问,因为里面的端口是8000
curl 10.244.22.9:8000
可以访问到
kubectl describe cm nginxconf
把cm配置挂接到了默认发布目录
kubectl edit cm nginxconf
编辑:【 listen 80;】
kubectl get pod
kubectl exec my-nginx-7b84dc948c-pgvw4 -- ls /etc/nginx/conf.d
可以看到有文件
kubectl exec my-nginx-7b84dc948c-pgvw4 -- cat /etc/nginx/conf.d/nginx.conf
可以看到修改的已经变了,没有生效,因为是纯文本的(相当于改了配置文件没有重启)
curl 10.244.22.9
不能访问(端口还是8000)
kubectl patch deployments.apps my-nginx --patch '{"spec": {"template": {"metadata": {"annotations": {"version/config": "20220114"}}}}}'
手动触发Pod滚动更新, 这样才能再次加载nginx.conf配置文件
kubectl get all
可以看到多了一个rs(之前是7b现在是67)
kubectl get pod -o wide
rs变了,pod的id也变了
curl 10.244.141.200
现在就可以访问得到
【可以不用滚动更新的方法是删除pod,控制器会重新建立】:
kubectl edit cm nginxconf
编辑:端口改为8080
kubectl delete pod my-nginx-676dbf5b5-5cp8m
kubectl get pod -o wide
curl 10.244.22.10 //不能访问
curl 10.244.22.10:8080 //8080可以访问
更多推荐
已为社区贡献8条内容
所有评论(0)