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