Kubelet 配置目录合并
当使用 kubelet 的 --config-dir
标志指定用于配置的插入目录时,不同类型合并的方式有一些特定行为。
以下是一些关于不同数据类型在配置合并过程中如何表现的示例
结构字段
YAML 结构中有两种类型的结构字段:单一(或标量类型)和嵌入(包含标量类型的结构)。配置合并过程处理对单一和嵌入结构字段的覆盖,以创建最终的 kubelet 配置。
例如,您可能希望为所有节点设置一个基线 kubelet 配置,但您可能希望自定义 address
和 authorization
字段。这可以通过以下方式完成
主 kubelet 配置文件内容
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
port: 20250
authorization:
mode: Webhook
webhook:
cacheAuthorizedTTL: "5m"
cacheUnauthorizedTTL: "30s"
serializeImagePulls: false
address: "192.168.0.1"
--config-dir
目录中文件的内容
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
authorization:
mode: AlwaysAllow
webhook:
cacheAuthorizedTTL: "8m"
cacheUnauthorizedTTL: "45s"
address: "192.168.0.8"
最终配置如下所示
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
port: 20250
serializeImagePulls: false
authorization:
mode: AlwaysAllow
webhook:
cacheAuthorizedTTL: "8m"
cacheUnauthorizedTTL: "45s"
address: "192.168.0.8"
列表
您可以覆盖 kubelet 配置的切片/列表值。但是,整个列表在合并过程中会被覆盖。例如,您可以覆盖 clusterDNS
列表,如下所示
主 kubelet 配置文件内容
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
port: 20250
serializeImagePulls: false
clusterDNS:
- "192.168.0.9"
- "192.168.0.8"
--config-dir
目录中文件的内容
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
clusterDNS:
- "192.168.0.2"
- "192.168.0.3"
- "192.168.0.5"
最终配置如下所示
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
port: 20250
serializeImagePulls: false
clusterDNS:
- "192.168.0.2"
- "192.168.0.3"
- "192.168.0.5"
映射,包括嵌套结构
映射中的各个字段,无论其值类型(布尔值、字符串等),都可以选择性地覆盖。但是,对于 map[string][]string
,与特定字段关联的整个列表会被覆盖。让我们用一个例子更好地理解这一点,特别是关于 featureGates
和 staticPodURLHeader
之类的字段
主 kubelet 配置文件内容
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
port: 20250
serializeImagePulls: false
featureGates:
AllAlpha: false
MemoryQoS: true
staticPodURLHeader:
kubelet-api-support:
- "Authorization: 234APSDFA"
- "X-Custom-Header: 123"
custom-static-pod:
- "Authorization: 223EWRWER"
- "X-Custom-Header: 456"
--config-dir
目录中文件的内容
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
featureGates:
MemoryQoS: false
KubeletTracing: true
DynamicResourceAllocation: true
staticPodURLHeader:
custom-static-pod:
- "Authorization: 223EWRWER"
- "X-Custom-Header: 345"
最终配置如下所示
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
port: 20250
serializeImagePulls: false
featureGates:
AllAlpha: false
MemoryQoS: false
KubeletTracing: true
DynamicResourceAllocation: true
staticPodURLHeader:
kubelet-api-support:
- "Authorization: 234APSDFA"
- "X-Custom-Header: 123"
custom-static-pod:
- "Authorization: 223EWRWER"
- "X-Custom-Header: 345"
最后修改于 2024 年 3 月 8 日太平洋标准时间下午 10:41: docs: Update KubeletConfigDropinDir doc information (c306367734)