Kubernetes ConfigMap 查看与修改操作文档(运维版)
Kubernetes ConfigMap 查看与修改操作指南
一、背景说明
在 Kubernetes 环境中,应用程序的配置通常通过 ConfigMap 进行管理。
ConfigMap 可以将配置文件、环境变量等信息与容器镜像解耦,使应用配置可以在 不重新构建镜像的情况下进行修改和更新。
例如 Nginx 配置:
ConfigMap
↓
Volume
↓
Pod
↓
容器内部配置文件
典型挂载示例:
ConfigMap: ape-web
↓
volume: conf
↓
subPath
↓
/etc/nginx/nginx.conf
/etc/nginx/vhosts/ape-web.conf
二、查看 ConfigMap
1 查看当前 Namespace 下所有 ConfigMap
kubectl get configmap
示例输出:
NAME DATA AGE
ape-web 2 30d
kube-root-ca 1 180d
2 查看指定 ConfigMap 内容
kubectl get configmap ape-web -o yaml
示例:
apiVersion: v1
kind: ConfigMap
metadata:
name: ape-web
data:
nginx.conf: |
worker_processes 1;
ape-web.conf: |
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
3 查看指定 Namespace 的 ConfigMap
如果资源不在 default namespace:
kubectl get configmap -n <namespace>
例如:
kubectl get configmap -n ape
查看内容:
kubectl get configmap ape-web -n ape -o yaml
三、查看 ConfigMap 被哪个 Pod 使用
1 查看 Pod 配置
kubectl get pod <pod-name> -o yaml
查找:
volumeMounts
volumes
示例:
volumeMounts:
- mountPath: /etc/nginx/nginx.conf
name: conf
subPath: nginx.conf
- mountPath: /etc/nginx/vhosts/ape-web.conf
name: conf
subPath: ape-web.conf
volumes:
- name: conf
configMap:
name: ape-web
说明:
ConfigMap ape-web
↓
volume conf
↓
容器配置文件
2 快速查看 Pod 挂载信息
kubectl describe pod <pod-name>
查看:
Mounts
Volumes
四、修改 ConfigMap
方法一:在线编辑(推荐)
直接编辑 ConfigMap:
kubectl edit configmap ape-web
系统会打开默认编辑器:
vi
nano
示例:
data:
ape-web.conf: |
server {
listen 80;
server_name new.example.com;
}
保存退出即可。
方法二:导出 YAML 修改后重新应用
1 导出 ConfigMap
kubectl get configmap ape-web -o yaml > ape-web-configmap.yaml
2 修改 YAML 文件
例如:
data:
ape-web.conf: |
server {
listen 80;
server_name new.example.com;
}
3 重新应用配置
kubectl apply -f ape-web-configmap.yaml
五、配置更新后重启 Pod
注意:
如果 ConfigMap 使用 subPath 挂载:
subPath: nginx.conf
Kubernetes 不会自动刷新配置。
必须重启 Pod。
方法一:重启 Deployment
kubectl rollout restart deployment <deployment-name>
示例:
kubectl rollout restart deployment ape-web
方法二:删除 Pod(自动重建)
kubectl delete pod <pod-name>
Deployment 会自动创建新 Pod。
六、验证配置是否生效
进入容器检查配置:
kubectl exec -it <pod-name> -- bash
查看文件:
cat /etc/nginx/nginx.conf
cat /etc/nginx/vhosts/ape-web.conf
测试 nginx 配置:
nginx -t
重新加载 nginx:
nginx -s reload
七、常见问题
1 修改 ConfigMap 后配置没有生效
原因:
subPath 挂载不会自动更新
解决:
重启 Pod
2 找不到 ConfigMap
可能原因:
Namespace 不一致
查看:
kubectl get configmap -A
3 ConfigMap 被 Helm 管理
如果资源包含:
meta.helm.sh
说明是 Helm 发布,需要通过 Helm 修改。
八、推荐运维排查命令
查看 Pod 使用的 ConfigMap
kubectl describe pod <pod-name> | grep -A 10 Mounts
查看所有 ConfigMap
kubectl get configmap -A
查看 ConfigMap 内容
kubectl get configmap <name> -o yaml
九、最佳实践
建议:
所有配置通过 ConfigMap 管理
使用 Git 版本管理 ConfigMap YAML
修改配置后通过 CI/CD 自动发布
避免直接在生产环境手动编辑
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu