configmap
2022-09-01
官方文档地址:https://kubernetes.io/zh-cn/docs/concepts/configuration/configmap/
configmap 自动更新
当卷中使用的 ConfigMap 被更新时,所投射的键最终也会被更新。 kubelet 组件会在每次周期性同步时检查所挂载的 ConfigMap 是否为最新。 不过,kubelet 使用的是其本地的高速缓存来获得 ConfigMap 的当前值。 高速缓存的类型可以通过 KubeletConfiguration 结构. 的 ConfigMapAndSecretChangeDetectionStrategy 字段来配置。
ConfigMap 既可以通过 watch 操作实现内容传播(默认形式),也可实现基于 TTL 的缓存,还可以直接经过所有请求重定向到 API 服务器。 因此,从 ConfigMap 被更新的那一刻算起,到新的主键被投射到 Pod 中去, 这一时间跨度可能与 kubelet 的同步周期加上高速缓存的传播延迟相等。 这里的传播延迟取决于所选的高速缓存类型 (分别对应 watch 操作的传播延迟、高速缓存的 TTL 时长或者 0)。
以环境变量方式使用的 ConfigMap 数据不会被自动更新。 更新这些数据需要重新启动 Pod。
说明: 使用 ConfigMap 作为 subPath 卷挂载的容器将不会收到 ConfigMap 的更新。
例子
映射文件
pod 信息
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: logstash-logstash
release: logstash
name: logstash-logstash
namespace: monitoring
spec:
replicas: 1
selector:
matchLabels:
app: logstash-logstash
release: logstash
serviceName: logstash-logstash-headless
template:
metadata:
labels:
app: logstash-logstash
release: logstash
name: logstash-logstash
spec:
containers:
image: logstash:7.17.5
imagePullPolicy: IfNotPresent
name: logstash
volumeMounts:
- mountPath: /usr/share/logstash/config/
name: logstash-yml
volumes:
- name: logstash-yml
configMap:
name: logstash-yml
items:
- key: "logstash.yml"
path: "logstash.yml"
configmap
apiVersion: v1
data:
logstash.yml: |
config.reload.automatic: true
#检查配置文件更改的时间间隔,默认3s
config.reload.interval: 3s
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]
kind: ConfigMap
metadata:
name: logstash-yml
namespace: monitoring
在pod中样式
它会将该目录下的所有文件全都清除,只留 logstash.yml 文件;