文章目录
前言
ConfigMap是Kubernetes中一个关键的配置管理资源,它使得配置文件和参数的管理与容器化应用解耦,从而实现配置的动态调整与应用的无缝更新。通过ConfigMap,开发者可以将配置数据存储在Kubernetes集群中,供应用在运行时访问和使用。
在实际应用中,ConfigMap的更新常常是不可避免的,而如何保证这些更新能够快速且无缝地反映到应用中,成为了一个关键问题。特别是在Env变量和Volume挂载的场景中,ConfigMap的热更新机制是否能够顺利应用,直接影响到系统的稳定性与灵活性。
本文将通过实际的测试与案例分析,探讨ConfigMap在Env变量和Volume挂载场景下的热更新效果,重点关注如何在不重启容器的情况下实现配置的即时生效,确保应用能够持续稳定运行。同时,本文还将对Kubernetes的热更新策略进行深入分析,为运维提供切实可行的技术方案和最佳实践。
一、环境准备
一套k8s集群,版本是1.28
1、configmap创建
[root@k8s-master YamlTest]# cat test_cfg.yml
username: "ops"
password: "123"
[root@k8s-master YamlTest]# kubectl create configmap test-cfg -n middleware --from-file ./test_cfg.yml
[root@k8s-master YamlTest]# kubectl get configmaps -n middleware test-cfg
NAME DATA AGE
test-cfg 1 15m
2、deployment文件准备
[root@k8s-master YamlTest]# kubectl create deployment test-nginx -n middleware \
--image=swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:stable \
--replicas 2 --dry-run=client -oyaml >./test_nginx.yml
[root@k8s-master YamlTest]# cat test_nginx.yml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: test-nginx
name: test-nginx
namespace: middleware
spec:
replicas: 2
selector:
matchLabels:
app: test-nginx
template:
metadata:
labels:
app: test-nginx
spec:
containers:
- image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:stable
name: nginx
二、Env变量使用Configmap
1.更新yaml文件,绑定configmap
代码如下(示例):
[root@k8s-master YamlTest]# cat test_nginx.yml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: test-nginx
name: test-nginx
namespace: middleware
spec:
replicas: 2
selector:
matchLabels:
app: test-nginx
template:
metadata:
labels:
app: test-nginx
spec:
containers:
- image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:stable
name: nginx
envFrom: ###使用envFrom挂载使用configmap
- configMapRef:
name: test-cfg
创建pod
[root@k8s-master YamlTest]