kubeadm 配置 (v1beta3)

概述

v1beta3 包定義了 kubeadm 配置檔案格式的 v1beta3 版本。此版本透過修復一些小問題並新增一些新欄位來改進 v1beta2 格式。

自 v1beta2 以來的變更列表

  • 已刪除已棄用的“ClusterConfiguration.useHyperKubeImage”欄位。Kubeadm 不再支援 hyperkube 映象。
  • 已刪除“ClusterConfiguration.dns.type”欄位,因為 CoreDNS 是 kubeadm 支援的唯一 DNS 伺服器型別。
  • 在包含敏感資訊的欄位上新增“datapolicy”標籤。這將導致在列印 API 結構時省略欄位值(使用 klog)。
  • 新增“InitConfiguration.skipPhases”、“JoinConfiguration.skipPhases”以允許在 kubeadm init/join 命令執行期間跳過一系列階段。
  • 新增“InitConfiguration.nodeRegistration.imagePullPolicy”和“JoinConfiguration.nodeRegistration.imagePullPolicy”以允許在 kubeadm "init" 和 "join" 期間指定映象的拉取策略。值必須是 "Always"、"Never" 或 "IfNotPresent" 之一。"IfNotPresent" 是預設值,這也是在此新增之前的現有行為。
  • 新增“InitConfiguration.patches.directory”、“JoinConfiguration.patches.directory”以允許使用者配置一個目錄,從中獲取 kubeadm 部署的元件的補丁。
  • 將 BootstrapToken* API 和相關實用程式從“kubeadm”API 組移至新組“bootstraptoken”。kubeadm API 版本 v1beta3 不再包含 BootstrapToken* 結構。

從舊的 kubeadm 配置版本遷移

  • kubeadm v1.15.x 及更高版本可用於從 v1beta1 遷移到 v1beta2。
  • kubeadm v1.22.x 及更高版本不再支援 v1beta1 及更早的 API,但可用於將 v1beta2 遷移到 v1beta3。
  • kubeadm v1.27.x 及更高版本不再支援 v1beta2 及更早的 API。

基礎知識

配置 kubeadm 的首選方法是透過 --config 選項傳遞 YAML 配置檔案。kubeadm 配置檔案中定義的某些配置選項也可作為命令列標誌使用,但此方法僅支援最常用/最簡單的用例。

kubeadm 配置檔案可以透過三個連字元 (---) 分隔,其中包含多種配置型別。

kubeadm 支援以下配置型別

apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration

apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration

apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration

apiVersion: kubeadm.k8s.io/v1beta3
kind: JoinConfiguration

要列印 "init" 和 "join" 操作的預設值,請使用以下命令

kubeadm config print init-defaults
kubeadm config print join-defaults

配置檔案中必須包含的配置型別列表取決於您要執行的操作(initjoin)以及您將使用的配置選項(預設值或高階自定義)。

如果未提供某些配置型別,或僅部分提供,kubeadm 將使用預設值;kubeadm 提供的預設值還包括在需要時強制元件之間值的 {0}(例如,控制器管理器上的 --cluster-cidr 標誌和 kube-proxy 上的 clusterCIDR)。

使用者始終可以覆蓋預設值,但安全相關的一小部分設定除外(例如,在 API 伺服器上強制執行 authorization-mode Node 和 RBAC)。

如果使用者提供的配置型別不是執行操作所預期的,kubeadm 將忽略這些型別併發出警告。

Kubeadm init 配置型別

當使用 --config 選項執行 kubeadm init 時,可以使用以下配置型別:InitConfiguration、ClusterConfiguration、KubeProxyConfiguration、KubeletConfiguration,但 InitConfiguration 和 ClusterConfiguration 中只有一種是必需的。

apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
bootstrapTokens:
  ...
nodeRegistration:
  ...

InitConfiguration 型別用於配置執行時設定,在 kubeadm init 的情況下,這些設定是引導令牌的配置以及執行 kubeadm 的節點特有的所有設定,包括

  • NodeRegistration,它包含與將新節點註冊到叢集相關的欄位;使用它來自定義節點名稱、要使用的 CRI 套接字或應僅適用於此節點的任何其他設定(例如,節點 IP)。

  • LocalAPIEndpoint,它代表在此節點上部署的 API 伺服器例項的端點;例如,使用它來自定義 API 伺服器的廣告地址。

apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
networking:
  ...
etcd:
  ...
apiServer:
  extraArgs:
    ...
  extraVolumes:
    ...
...

ClusterConfiguration 型別用於配置叢集範圍的設定,包括

  • networking,它包含叢集網路拓撲的配置;例如,使用它來自定義 Pod 子網或服務子網。

  • etcd:例如,使用它來自定義本地 etcd 或配置 API 伺服器以使用外部 etcd 叢集。

  • kube-apiserver、kube-scheduler、kube-controller-manager 配置;使用它透過新增自定義設定或覆蓋 kubeadm 預設設定來定製控制平面元件。

apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
  ...

KubeProxyConfiguration 型別用於更改傳遞給叢集中部署的 kube-proxy 例項的配置。如果未提供此物件或僅部分提供,kubeadm 將應用預設值。

有關 kube-proxy 的官方文件,請參閱 https://kubernetes.club.tw/docs/reference/command-line-tools-reference/kube-proxy/ 或 https://pkg.go.dev/k8s.io/kube-proxy/config/v1alpha1#KubeProxyConfiguration。

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
  ...

KubeletConfiguration 型別用於更改將傳遞給叢集中所有 kubelet 例項的配置。如果未提供此物件或僅部分提供,kubeadm 將應用預設值。

有關 kubelet 的官方文件,請參閱 https://kubernetes.club.tw/docs/reference/command-line-tools-reference/kubelet/ 或 https://pkg.go.dev/k8s.io/kubelet/config/v1beta1#KubeletConfiguration。

以下是一個完全填充的示例,其中包含在 kubeadm init 執行時使用的多種配置型別的單個 YAML 檔案。

apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
bootstrapTokens:
  - token: "9a08jv.c0izixklcxtmnze7"
    description: "kubeadm bootstrap token"
    ttl: "24h"
  - token: "783bde.3f89s0fje9f38fhf"
    description: "another bootstrap token"
    usages:
      - authentication
      - signing
    groups:
      - system:bootstrappers:kubeadm:default-node-token
nodeRegistration:
  name: "ec2-10-100-0-1"
  criSocket: "/var/run/dockershim.sock"
  taints:
    - key: "kubeadmNode"
      value: "someValue"
      effect: "NoSchedule"
  kubeletExtraArgs:
    v: 4
  ignorePreflightErrors:
    - IsPrivilegedUser
  imagePullPolicy: "IfNotPresent"
localAPIEndpoint:
  advertiseAddress: "10.100.0.1"
  bindPort: 6443
certificateKey: "e6a2eb8581237ab72a4f494f30285ec12a9694d750b9785706a83bfcbbbd2204"
skipPhases:
  - addon/kube-proxy
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
etcd:
  # one of local or external
  local:
    imageRepository: "registry.k8s.io"
    imageTag: "3.2.24"
    dataDir: "/var/lib/etcd"
    extraArgs:
      listen-client-urls: "http://10.100.0.1:2379"
    serverCertSANs:
      -  "ec2-10-100-0-1.compute-1.amazonaws.com"
    peerCertSANs:
      - "10.100.0.1"
  # external:
    # endpoints:
    # - "10.100.0.1:2379"
    # - "10.100.0.2:2379"
    # caFile: "/etcd/kubernetes/pki/etcd/etcd-ca.crt"
    # certFile: "/etcd/kubernetes/pki/etcd/etcd.crt"
    # keyFile: "/etcd/kubernetes/pki/etcd/etcd.key"
networking:
  serviceSubnet: "10.96.0.0/16"
  podSubnet: "10.244.0.0/24"
  dnsDomain: "cluster.local"
kubernetesVersion: "v1.21.0"
controlPlaneEndpoint: "10.100.0.1:6443"
apiServer:
  extraArgs:
    authorization-mode: "Node,RBAC"
  extraVolumes:
    - name: "some-volume"
      hostPath: "/etc/some-path"
      mountPath: "/etc/some-pod-path"
      readOnly: false
      pathType: File
  certSANs:
    - "10.100.1.1"
    - "ec2-10-100-0-1.compute-1.amazonaws.com"
  timeoutForControlPlane: 4m0s
controllerManager:
  extraArgs:
    "node-cidr-mask-size": "20"
  extraVolumes:
    - name: "some-volume"
      hostPath: "/etc/some-path"
      mountPath: "/etc/some-pod-path"
      readOnly: false
      pathType: File
scheduler:
  extraArgs:
    bind-address: "10.100.0.1"
  extraVolumes:
    - name: "some-volume"
      hostPath: "/etc/some-path"
      mountPath: "/etc/some-pod-path"
      readOnly: false
      pathType: File
certificatesDir: "/etc/kubernetes/pki"
imageRepository: "registry.k8s.io"
clusterName: "example-cluster"
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
# kubelet specific options here
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
# kube-proxy specific options here

Kubeadm join 配置型別

當使用 --config 選項執行 kubeadm join 時,應提供 JoinConfiguration 型別。

apiVersion: kubeadm.k8s.io/v1beta3
kind: JoinConfiguration
  ...

JoinConfiguration 型別用於配置執行時設定,在 kubeadm join 的情況下,這些設定是用於訪問叢集資訊的發現方法以及執行 kubeadm 的節點特有的所有設定,包括

  • nodeRegistration,它包含與將新節點註冊到叢集相關的欄位;使用它來自定義節點名稱、要使用的 CRI 套接字或應僅適用於此節點的任何其他設定(例如,節點 IP)。

  • apiEndpoint,它代表將在該節點上部署的 API 伺服器例項的端點。

資源型別

BootstrapToken

出現在

BootstrapToken 描述一個引導令牌,該令牌儲存在叢集中的 Secret 中

欄位描述
token [必填]
BootstrapTokenString

token 用於在節點和控制平面之間建立雙向信任。用於將節點加入叢集。

description
string

description 設定一個易於理解的訊息,說明此令牌存在的原因及其用途,以便其他管理員瞭解其目的。

ttl
meta/v1.Duration

ttl 定義此令牌的生存期。預設為 24hexpiresttl 是互斥的。

expires
meta/v1.Time

expires 指定此令牌過期的戳。預設為在執行時根據 ttl 動態設定。expiresttl 是互斥的。

usages
[]string

usages 描述了此令牌可以使用的途徑。預設情況下,可用於建立雙向信任,但這可以在此處更改。

groups
[]string

groups 指定此令牌在進行身份驗證時將作為哪些額外組進行身份驗證。

BootstrapTokenString

出現在

BootstrapTokenString 是一個格式為 abcdef.abcdef0123456789 的令牌,它用於從加入節點的角度驗證 API 伺服器的可用性,並且是在“kubeadm join”引導階段中節點的一種身份驗證方法。此令牌是並且應該是短暫的。

欄位描述
- [必填]
string
未提供描述。
- [必填]
string
未提供描述。

ClusterConfiguration

ClusterConfiguration 包含 kubeadm 叢集的叢集範圍配置。

欄位描述
apiVersion
string
kubeadm.k8s.io/v1beta3
kind
string
ClusterConfiguration
etcd
Etcd

etcd 包含 etcd 的配置。

networking
網路

networking 包含叢集網路拓撲的配置。

kubernetesVersion
string

kubernetesVersion 是控制平面的目標版本。

controlPlaneEndpoint
string

controlPlaneEndpoint 為控制平面設定一個穩定的 IP 地址或 DNS 名稱。它可以是有效的 IP 地址或 RFC-1123 DNS 子域,兩者都帶有可選的 TCP 埠。如果未指定 controlPlaneEndpoint,則使用 advertiseAddress + bindPort;如果指定了 controlPlaneEndpoint 但沒有 TCP 埠,則使用 bindPort。可能的用法包括

  • 在具有多個控制平面例項的叢集中,此欄位應分配給控制平面例項前面的外部負載均衡器的地址。
  • 在強制節點回收的環境中,controlPlaneEndpoint 可用於為控制平面分配穩定的 DNS。
apiServer
APIServer

apiServer 包含 API 伺服器的額外設定。

controllerManager
ControlPlaneComponent

controllerManager 包含控制器管理器的額外設定。

scheduler
ControlPlaneComponent

scheduler 包含排程器的額外設定。

dns
DNS

dns 定義了叢集中安裝的 DNS 外掛的選項。

certificatesDir
string

certificatesDir 指定儲存或查詢所有必需證書的位置。

imageRepository
string

imageRepository 設定要從中拉取映象的容器登錄檔。如果為空,則預設使用 registry.k8s.io。如果 Kubernetes 版本是 CI 構建(Kubernetes 版本以 ci/ 開頭),則 gcr.io/k8s-staging-ci-images 將用作控制平面元件和 kube-proxy 的預設值,而 registry.k8s.io 將用於所有其他映象。

featureGates
map[string]bool

featureGates 包含使用者啟用的功能門。

clusterName
string

叢集名稱。

InitConfiguration

InitConfiguration 包含僅限 "kubeadm init" 的執行時資訊列表。kubeadm init 專有的資訊。這些欄位僅在首次執行 kubeadm init 時使用。之後,欄位中的資訊**不會**上傳到 kubeadm-config ConfigMap,該 ConfigMap 用於 kubeadm upgrade 等。這些欄位必須是 omitempty。

欄位描述
apiVersion
string
kubeadm.k8s.io/v1beta3
kind
string
InitConfiguration
bootstrapTokens
[]BootstrapToken

bootstrapTokenskubeadm init 時受到尊重,並描述了一組要建立的 Bootstrap Tokens。此資訊**不會**上傳到 kubeadm 叢集 ConfigMap,部分原因是其敏感性。

nodeRegistration
NodeRegistrationOptions

nodeRegistration 包含與將新的控制平面節點註冊到叢集相關的欄位。

localAPIEndpoint
APIEndpoint

localAPIEndpoint 代表在此控制平面節點上部署的 API 伺服器例項的端點。在 HA 設定中,這與 ClusterConfiguration.controlPlaneEndpoint 不同,因為 controlPlaneEndpoint 是叢集的全域性端點,然後將請求負載均衡到每個單獨的 API 伺服器。此配置物件允許您自定義本地 API 伺服器聲稱可訪問的 IP/DNS 名稱和埠。預設情況下,kubeadm 嘗試自動檢測預設介面的 IP 並使用它,但如果該過程失敗,您可以在此處設定所需的值。

certificateKey
string

certificateKey 設定在將證書和金鑰上傳到叢集的 Secret 中(在 uploadcerts init 階段)之前用於加密它們。證書金鑰是一個十六進位制編碼的字串,是一個 32 位元組大小的 AES 金鑰。

skipPhases
[]string

skipPhases 是在命令執行期間要跳過的階段列表。可以透過 kubeadm init --help 命令獲取階段列表。“--skip-phases”標誌優先於此欄位。

patches
Patches

patches 包含與在 kubeadm init 期間應用 kubeadm 部署的元件的補丁相關的選項。

JoinConfiguration

JoinConfiguration 包含描述特定節點的元素。

欄位描述
apiVersion
string
kubeadm.k8s.io/v1beta3
kind
string
JoinConfiguration
nodeRegistration
NodeRegistrationOptions

nodeRegistration 包含與將新的控制平面節點註冊到叢集相關的欄位。

caCertPath
string

caCertPath 是用於保護節點和控制平面之間通訊的 SSL 證書頒發機構的路徑。預設為“/etc/kubernetes/pki/ca.crt”。

discovery [必填]
發現

discovery 指定 kubelet 在 TLS 引導過程中使用的選項。

controlPlane
JoinControlPlane

controlPlane 定義了將在加入節點上部署的附加控制平面例項。如果為 nil,則不會部署附加的控制平面例項。

skipPhases
[]string

skipPhases 是在命令執行期間要跳過的階段列表。可以透過 kubeadm join --help 命令獲取階段列表。“--skip-phases”標誌優先於此欄位。

patches
Patches

patches 包含與在 kubeadm join 期間應用 kubeadm 部署的元件的補丁相關的選項。

APIEndpoint

出現在

APIEndpoint 結構包含部署在節點上的 API 伺服器例項的元素。

欄位描述
advertiseAddress
string

advertiseAddress 設定 API 伺服器要宣傳的 IP 地址。

bindPort
int32

bindPort 設定 API 伺服器要繫結的安全埠。預設為 6443。

APIServer

出現在

APIServer 包含叢集中 API 伺服器部署所需的設定

欄位描述
ControlPlaneComponent [必填]
ControlPlaneComponent
(ControlPlaneComponent 的成員已嵌入到此型別中。) 未提供描述。
certSANs
[]string

certSANs 為 API 伺服器簽名證書設定額外的備用名稱 (SAN)。

timeoutForControlPlane
meta/v1.Duration

timeoutForControlPlane 控制等待 API 伺服器出現的時間。

BootstrapTokenDiscovery

出現在

BootstrapTokenDiscovery 用於設定基於引導令牌的發現的選項。

欄位描述
token [必填]
string

token 是用於驗證從控制平面獲取的叢集資訊的令牌。

apiServerEndpoint
string

apiServerEndpoint 是用於獲取資訊的 API 伺服器的 IP 或域名。

caCertHashes
[]string

caCertHashes 指定一組要在使用基於令牌的發現時驗證的公鑰固定。在發現期間找到的根 CA 必須匹配其中一個值。指定一個空集將停用根 CA 固定,這可能不安全。每個雜湊都指定為 <type>:<value>,目前唯一支援的型別是 "sha256"。這是 DER 編碼的 ASN.1 主題公鑰資訊 (SPKI) 物件的十六進位制編碼的 SHA-256 雜湊。這些雜湊可以使用例如 OpenSSL 來計算。

unsafeSkipCAVerification
bool

unsafeSkipCAVerification 允許在不進行 CA 驗證(透過 caCertHashes)的情況下進行基於令牌的發現。這會削弱 kubeadm 的安全性,因為其他節點可以冒充控制平面。

ControlPlaneComponent

出現在

ControlPlaneComponent 包含叢集控制平面元件的通用設定

欄位描述
extraArgs
map[string]string

extraArgs 是傳遞給控制平面元件的額外標誌。此對映中的鍵是命令列上出現的標誌名稱,但省略了前導破折號。

extraVolumes
[]HostPathMount

extraVolumes 是額外的宿主機卷列表,掛載到控制平面元件。

DNS

出現在

DNS 定義了叢集中應使用的 DNS 附加元件

欄位描述
ImageMeta [必填]
ImageMeta
(ImageMeta 的成員已嵌入到此型別中。)

imageMeta 允許自定義用於 DNS 元件的映象。

發現

出現在

Discovery 指定 kubelet 在 TLS 引導過程中使用的選項。

欄位描述
bootstrapToken
BootstrapTokenDiscovery

bootstrapToken 用於設定基於引導令牌的發現的選項。bootstrapTokenfile 是互斥的。

file
FileDiscovery

file 用於指定一個檔案或 URL 到一個 kubeconfig 檔案,從中載入叢集資訊。bootstrapTokenfile 是互斥的。

tlsBootstrapToken
string

tlsBootstrapToken 是用於 TLS 引導的令牌。如果設定了 bootstrapToken,則此欄位預設為 .bootstrapToken.token,但可以被覆蓋。如果設定了 file,則此欄位**必須設定**,以防 KubeConfigFile 不包含任何其他身份驗證資訊。

timeout
meta/v1.Duration

timeout 修改發現超時。

Etcd

出現在

Etcd 包含描述 Etcd 配置的元素。

欄位描述
本地
LocalEtcd

local 提供用於配置本地 etcd 例項的配置選項。localexternal 是互斥的。

external
ExternalEtcd

external 描述如何連線到外部 etcd 叢集。localexternal 是互斥的。

ExternalEtcd

出現在

ExternalEtcd 描述了一個外部 etcd 叢集。Kubeadm 對證書檔案儲存位置一無所知,必須提供這些檔案。

欄位描述
endpoints [必填]
[]string

endpoints 包含 etcd 成員列表。

caFile [必填]
string

caFile 是用於保護 etcd 通訊的 SSL 證書頒發機構 (CA) 檔案。如果使用 TLS 連線,則必需。

certFile [必填]
string

certFile 是用於保護 etcd 通訊的 SSL 證書檔案。如果使用 TLS 連線,則必需。

keyFile [必填]
string

keyFile 是用於保護 etcd 通訊的 SSL 金鑰檔案。如果使用 TLS 連線,則必需。

FileDiscovery

出現在

FileDiscovery 用於指定一個檔案或 URL 到一個 kubeconfig 檔案,從中載入叢集資訊。

欄位描述
kubeConfigPath [必填]
string

kubeConfigPath 用於指定實際檔案路徑或 URL 到 kubeconfig 檔案,從中載入叢集資訊。

HostPathMount

出現在

HostPathMount 包含描述從主機掛載的卷的元素。

欄位描述
name [必填]
string

name 是 Pod 模板內卷的名稱。

hostPath [必填]
string

hostPath 是主機中將被掛載到 Pod 內的路徑。

mountPath [必填]
string

mountPathhostPath 將被掛載到 Pod 內的路徑。

readOnly
bool

readOnly 控制對卷的寫入訪問。

pathType
core/v1.HostPathType

pathTypehostPath 的型別。

ImageMeta

出現在

ImageMeta 允許自定義 Kubernetes/Kubernetes 釋出流程以外的元件使用的映象

欄位描述
imageRepository
string

imageRepository 設定要從中拉取映象的容器登錄檔。如果未設定,則改用 ClusterConfiguration 中定義的 imageRepository

imageTag
string

imageTag 允許指定映象的標籤。如果設定了此值,kubeadm 在升級期間不會自動更改上述元件的版本。

JoinControlPlane

出現在

JoinControlPlane 包含描述將在加入節點上部署的附加控制平面例項的元素。

欄位描述
localAPIEndpoint
APIEndpoint

localAPIEndpoint 代表將在該節點上部署的 API 伺服器例項的端點。

certificateKey
string

certificateKey 是用於在加入新控制平面節點時從 Secret 下載證書後的解密金鑰。相應的加密金鑰在 InitConfiguration 中。證書金鑰是一個十六進位制編碼的字串,是一個 32 位元組大小的 AES 金鑰。

LocalEtcd

出現在

LocalEtcd 描述 kubeadm 應在本地執行 etcd 叢集。

欄位描述
ImageMeta [必填]
ImageMeta
(ImageMeta 的成員已嵌入到此型別中。)

ImageMeta 允許自定義用於 etcd 的容器。

dataDir [必填]
string

dataDir 是 etcd 放置其資料的目錄。預設為 "/var/lib/etcd"。

extraArgs
map[string]string

extraArgs 是在 etcd 在靜態 Pod 中執行時傳遞給 etcd 二進位制檔案的額外引數。此對映中的鍵是命令列上出現的標誌名稱,但省略了前導破折號。

serverCertSANs
[]string

serverCertSANs 為 etcd 伺服器簽名證書設定額外的備用名稱 (SAN)。

peerCertSANs
[]string

peerCertSANs 為 etcd 對等簽名證書設定額外的備用名稱 (SAN)。

網路

出現在

Networking 包含描述叢集網路配置的元素。

欄位描述
serviceSubnet
string

serviceSubnet 是 Kubernetes Services 使用的子網。預設為 "10.96.0.0/12"。

podSubnet
string

podSubnet 是 Pod 使用的子網。

dnsDomain
string

dnsDomain 是 Kubernetes Services 使用的 DNS 域。預設為 "cluster.local"。

NodeRegistrationOptions

出現在

NodeRegistrationOptions 包含與透過 kubeadm initkubeadm join 將新的控制平面或節點註冊到叢集相關的欄位。

欄位描述
name
string

name 是在此 kubeadm initkubeadm join 操作中建立的 Node API 物件(.metadata.name)欄位。此欄位也用於 kubelet 的客戶端證書中 API 伺服器的 CommonName 欄位。如果未提供,則預設為節點的 hostname。

criSocket
string

criSocket 用於檢索容器執行時資訊。此資訊將被註解到 Node API 物件,以便以後重用。

taints [必填]
[]core/v1.Taint

taints 指定 Node API 物件應註冊的汙點。如果此欄位未設定,即為 nil,則預設為控制平面節點的控制平面汙點。如果您不想汙點您的控制平面節點,請在 YAML 檔案中將此欄位設定為空列表,即 taints: []。此欄位僅用於 Node 註冊。

kubeletExtraArgs
map[string]string

kubeletExtraArgs 將額外的引數傳遞給 kubelet。此處設定的引數透過 kubeadm 在執行時寫入供 kubelet 源的檔案傳遞給 kubelet 命令列。這會覆蓋 kubelet-config ConfigMap 中的通用基本級別配置。解析時標誌具有更高的優先順序。這些值是本地的,並且特定於 kubeadm 執行的節點。此對映中的鍵是命令列上出現的標誌名稱,但省略了前導破折號。

ignorePreflightErrors
[]string

ignorePreflightErrors 提供了一個列表,其中包含在當前節點註冊時要忽略的預檢錯誤,例如 IsPrevilegedUser,Swap。值 all 將忽略所有檢查的錯誤。

imagePullPolicy
core/v1.PullPolicy

imagePullPolicy 指定 kubeadm "init" 和 "join" 操作期間的映象拉取策略。此欄位的值必須是 "Always"、"IfNotPresent" 或 "Never" 之一。如果未設定此欄位,kubeadm 將預設設定為 "IfNotPresent",或拉取主機上不存在的所需映象。

Patches

出現在

Patches 包含與在 kubeadm 部署的元件上應用補丁相關的選項。

欄位描述
directory
string

directory 是一個目錄路徑,其中包含名為 "target[suffix][+patchtype].extension" 的檔案。例如,“kube-apiserver0+merge.yaml”或僅“etcd.json”。"target" 可以是 "kube-apiserver"、"kube-controller-manager"、"kube-scheduler"、"etcd" 之一。"patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,它們與 kubectl 支援的補丁格式匹配。預設的 "patchtype" 是 "strategic"。"extension" 必須是 "json" 或 "yaml"。"suffix" 是一個可選字串,可用於按字母數字順序確定先應用哪些補丁。

本頁面是自動生成的。

如果你打算報告此頁面存在的問題,請在問題描述中提及此頁面是自動生成的。修復可能需要在 Kubernetes 專案的其他地方進行。

最後修改於 2025 年 4 月 24 日上午 8:56 (PST): 更新 v1.33 的配置 API (2bdd42a2f3)