k8s configmap错乱解决

现象

@#kubectl get cm/kubernetes-event-exporter -n kube-system  -o yaml
apiVersion: v1
data:
  config.yaml: "leaderElection: {}\nlogFormat: json\nlogLevel: debug\nreceivers:\n-
    loki:\n    url: http://10.x.x.x:3100/loki/api/v1/push\n    streamLabels:\n
    \     container: event-exporter\n  name: loki      \nroute:\n  routes:\n  - match:\n
    \   - receiver: loki\n"
kind: ConfigMap
...

原因

配置中存在制表符和行尾有空格导致

解决 

#kubectl get cm/kubernetes-event-exporter -n kube-system  -o jsonpath='{.data.config\.yaml}' > kubernetes-event-exporter.cm
#sed -i -E  -e 's/[[:space:]]+$//g' -e 's/\t/    /g' kubernetes-event-exporter.cm
#kubectl -n kube-system create cm kubernetes-event-exporter --from-file=config.yaml=kubernetes-event-exporter.cm --dry-run=client  -o yaml |kubectl replace -f -

### Kubernetes ConfigMap 配置和使用教程 #### 创建 ConfigMap 的方式 可以通过多种方式来创建 ConfigMap。一种常见的方式是从文件夹中创建 ConfigMap: ```bash kubectl create configmap game-config --from-file=configure-pod-container/configmap/ ``` 这会将指定路径下的所有键值对加入到名为 `game-config` 的 ConfigMap 中[^2]。 如果只需要基于单一文件创建,则可以执行如下命令: ```bash $ kubectl create configmap game-config-2 \ --from-file=docs/user-guide/configmap/kubectl/game.properties ``` 此操作将会把给定文件的内容作为数据源,构建名称为 `game-config-2` 的 ConfigMap,并可通过 YAML 查看其详情: ```bash $ kubectl get configmaps game-config-2 -o yaml ``` 上述指令展示了如何从本地文件创建 ConfigMap 并查看其结构[^3]。 #### 将 ConfigMap 应用于 Pod 为了让应用程序能够访问这些配置项,在定义Pod时需将其挂载至容器内部或设置环境变量。以下是两种典型的应用场景: 1. **作为环境变量** 可以直接在 pod 定义里引用 ConfigMap 来设定环境变量: ```yaml apiVersion: v1 kind: Pod metadata: name: dapi-test-pod spec: containers: - name: test-container image: gcr.io/google_containers/test- configMapRef: name: special-config ``` 2. **作为卷的形式挂载** 或者也可以像下面这样,将整个 ConfigMap 映射成一个目录供程序读取: ```yaml apiVersion: v1 kind: Pod metadata: name: dapi-test-pod spec: containers: - name: test-container image: gcr.io/google_containers/test-webserver volumeMounts: - name: config-volume mountPath: /etc/config volumes: - name: config-volume configMap: # 提供的 ConfigMap 名称 name: special-config ``` 这两种方法都可以让运行于 Pod 内部的服务轻松获取所需的外部参数,而无需硬编码入镜像之中[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值