Kubelet 配置目錄合併

當使用 kubelet 的 --config-dir 旗標來指定配置的下拉式目錄時,關於不同類型如何合併有一些特定的行為。

以下是一些關於不同資料類型在配置合併期間如何運作的範例

結構欄位

YAML 結構中有兩種結構欄位類型:單數(或純量類型)和嵌入式(包含純量類型的結構)。配置合併程序處理單數和嵌入式結構欄位的覆寫,以建立產生的 kubelet 配置。

例如,您可能想要所有節點的基本 kubelet 配置,但您可能想要自訂 addressauthorization 欄位。這可以透過以下方式完成

主要 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,與特定欄位關聯的整個清單都會被覆寫。讓我們透過一個範例更好地理解這一點,特別是關於 featureGatesstaticPodURLHeader 等欄位

主要 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)