Kubernetes ConfigMap 查看与修改操作文档(运维版)

AI摘要
本文是一篇关于Kubernetes ConfigMap操作的技术指南,属于知识分享。文章系统性地介绍了ConfigMap的查看、修改、更新生效及问题排查方法,重点说明了通过`kubectl`命令行工具进行管理、使用`subPath`挂载时需重启Pod的注意事项,并给出了运维最佳实践建议。

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 

九、最佳实践

建议:

  1. 所有配置通过 ConfigMap 管理

  2. 使用 Git 版本管理 ConfigMap YAML

  3. 修改配置后通过 CI/CD 自动发布

  4. 避免直接在生产环境手动编辑


本作品采用《CC 协议》,转载必须注明作者和本文链接
每天一点小知识,到那都是大佬,哈哈
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!