如何查看Kubernetes ConfigMap关联DaemonSet部署后的字段实际值
Kubernetes 本身不会对ConfigMap的内容做模板解析,你配置的#{ENV['MY_SOURCE']}是Fluentd自身的配置插值语法,只会在Fluentd进程启动、加载配置时,根据容器内的环境变量完成求值,所以直接查询ConfigMap资源只能看到原始的模板内容。
你可以按照以下步骤拿到实际生效的值:
- 第一步:获取DaemonSet调度出的Fluentd Pod名称,示例命令如下,注意替换标签为你实际DaemonSet配置的标签:
kubectl get pods -n fluentd -l app=fluentd
- 第二步:执行以下任一操作获取结果:
- 直接打印Pod内
MY_SOURCE环境变量的值,就是最终插值会用到的实际结果,替换为你上一步拿到的Pod名即可:
kubectl exec -n fluentd <你的Pod名称> -- printenv MY_SOURCE- 如果你需要确认Fluentd实际加载的完整配置,可以查看ConfigMap挂载到容器内的对应配置文件,替换为你实际的挂载路径即可:
kubectl exec -n fluentd <你的Pod名称> -- cat <ConfigMap挂载的配置文件路径> - 直接打印Pod内
如果你的需求是在资源提交到Kubernetes之前就完成插值、让ConfigMap里直接存储最终值,需要使用Helm、Kustomize这类部署工具在提交前完成模板渲染,Kubernetes原生不支持ConfigMap内容的自动插值。
内容的提问来源于stack exchange,提问作者Johnny Metz
相关产品推荐
相关产品推荐

