kubeadm 配置 (v1beta4)

概述

Package v1beta4 定义了 kubeadm 配置文件格式的 v1beta4 版本。此版本通过修复一些小问题和添加一些新字段,改进了 v1beta3 格式。

v1beta3 以来更改列表

v1.33

  • UpgradeConfiguration.plan 添加 EtcdUpgrade 字段,可用于控制是否显示 etcd 升级计划。

v1.31

  • ClusterConfiguration 下支持控制平面组件中的自定义环境变量。使用 apiServer.extraEnvscontrollerManager.extraEnvsscheduler.extraEnvsetcd.local.extraEnvs
  • v1beta4 现在支持 ResetConfiguration API 类型。用户可以通过向 kubeadm reset 传递 --config 文件来重置节点。
  • 现在可以在 InitConfigurationJoinConfigurationB 中配置试运行模式。
  • 将现有的字符串/字符串额外参数映射替换为支持重复项的结构化额外参数。此更改适用于 ClusterConfiguration - apiServer.extraArgscontrollerManager.extraArgsscheduler.extraArgsetcd.local.extraArgs。也适用于 nodeRegistration.kubeletExtraArgs
  • 添加 ClusterConfiguration.encryptionAlgorithm,可用于设置此集群密钥和证书使用的非对称加密算法。可以是 "RSA-2048"(默认)、"RSA-3072""RSA-4096""ECDSA-P256" 之一。
  • 添加 ClusterConfiguration.dns.disabledClusterConfiguration.proxy.disabled,可用于在集群初始化期间禁用 CoreDNS 和 kube-proxy 插件。跳过与集群创建相关的插件阶段会将相同的字段设置为 true
  • InitConfigurationJoinConfiguration 中添加 nodeRegistration.imagePullSerial 字段,可用于控制 kubeadm 是串行还是并行拉取镜像。
  • 现在 v1beta4 支持 UpgradeConfiguration kubeadm API,通过向 kubeadm upgrade 子命令传递 --config。对于 kubeletkube-proxyInitConfigurationClusterConfiguration 的组件配置用法已被弃用,在向 upgrade 子命令传递 --config 时将被忽略。
  • InitConfigurationJoinConfigurationResetConfigurationUpgradeConfiguration 添加 Timeouts 结构,可用于配置各种超时。ClusterConfiguration.timeoutForControlPlane 字段被 Timeouts.controlPlaneComponentHealthCheck 替换。JoinConfiguration.discovery.timeouttimeouts.Discovery 替换。
  • ClusterConfiguration 添加 certificateValidityPeriodcaCertificateValidityPeriod 字段。这些字段可用于控制 kubeadm 在 initjoinupgradecerts 等子命令期间生成的证书的有效期。默认值继续为非 CA 证书为 1 年,CA 证书为 10 年。只有非 CA 证书可以继续通过 kubeadm certs renew 更新。

从旧的 kubeadm 配置版本迁移

  • kubeadm v1.15.x 及更高版本可用于从 v1beta1 迁移到 v1beta2。
  • kubeadm v1.22.x 及更高版本不再支持 v1beta1 及更早的 API,但可用于将 v1beta2 迁移到 v1beta3。
  • kubeadm v1.27.x 及更高版本不再支持 v1beta2 及更早的 API。
  • kubeadm v1.31.x 及更高版本可用于从 v1beta3 迁移到 v1beta4。

基础知识

配置 kubeadm 的首选方式是通过 --config 选项传递 YAML 配置文件。kubeadm 配置文件中定义的一些配置选项也可作为命令行标志使用,但只有最常见/简单的用例才支持这种方式。

kubeadm 配置文件可以包含多个配置类型,用三个连字符 (---) 分隔。

kubeadm 支持以下配置类型

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

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

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

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

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

apiVersion: kubeadm.k8s.io/v1beta4
kind: ResetConfiguration

apiVersion: kubeadm.k8s.io/v1beta4
kind: UpgradeConfiguration

要打印 initjoin 操作的默认值,请使用以下命令

kubeadm config print init-defaults
kubeadm config print join-defaults
kubeadm config print reset-defaults
kubeadm config print upgrade-defaults

需要包含在配置文件中的配置类型列表取决于您执行的操作(initjoin)以及您将使用的配置选项(默认值或高级自定义)。

如果某些配置类型未提供,或仅部分提供,kubeadm 将使用默认值;kubeadm 提供的默认值还包括强制执行组件之间的一致性(例如,控制器管理器上的 --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/v1beta4
kind: InitConfiguration
bootstrapTokens:
...
nodeRegistration:
...

InitConfiguration 类型应用于配置运行时设置,对于 kubeadm init 来说,这些设置包括引导令牌的配置以及 kubeadm 执行所在的节点的所有特定设置,包括:

  • NodeRegistration,包含与将新节点注册到集群相关的字段;用于自定义节点名称、要使用的 CRI 套接字或仅适用于此节点的任何其他设置(例如,节点 IP)。

  • LocalAPIEndpoint,代表将在此节点上部署的 API 服务器实例的端点;例如,用于自定义 API 服务器的广告地址。

apiVersion: kubeadm.k8s.io/v1beta4
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.ac.cn/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.ac.cn/docs/reference/command-line-tools-reference/kubelet/ 或 https://pkg.go.dev/k8s.io/kubelet/config/v1beta1#KubeletConfiguration。

以下是一个包含多个配置类型用于 kubeadm init 运行的单个 YAML 文件的完整填充示例。

apiVersion: kubeadm.k8s.io/v1beta4
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: "unix:///var/run/containerd/containerd.sock"
  taints:
    - key: "kubeadmNode"
      value: "someValue"
      effect: "NoSchedule"
  kubeletExtraArgs:
    - name: v
      value: "5"
  ignorePreflightErrors:
    - IsPrivilegedUser
  imagePullPolicy: "IfNotPresent"
  imagePullSerial: true

localAPIEndpoint:
  advertiseAddress: "10.100.0.1"
  bindPort: 6443
certificateKey: "e6a2eb8581237ab72a4f494f30285ec12a9694d750b9785706a83bfcbbbd2204"
skipPhases:
  - preflight
timeouts:
  controlPlaneComponentHealthCheck: "60s"
  kubenetesAPICall: "40s"
---
apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
etcd:

  # one of local or external
  local:
    imageRepository: "registry.k8s.io"
    imageTag: "3.2.24"
    dataDir: "/var/lib/etcd"
    extraArgs:
      - name: listen-client-urls
        value: http://10.100.0.1:2379
    extraEnvs:
      - name: SOME_VAR
        value: SOME_VALUE
    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:
    - name: authorization-mode
      value: Node,RBAC
  extraEnvs:
    - name: SOME_VAR
      value: SOME_VALUE
  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"

controllerManager:
  extraArgs:
    - name: node-cidr-mask-size
      value: "20"
  extraVolumes:
    - name: "some-volume"
      hostPath: "/etc/some-path"
      mountPath: "/etc/some-pod-path"
      readOnly: false
      pathType: File

scheduler:
  extraArgs:
    - name: address
      value: 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"
encryptionAlgorithm: ECDSA-P256
dns:
  disabled: true  # disable CoreDNS
proxy:
  disabled: true   # disable kube-proxy

---
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 配置类型

执行 kubeadm join 并使用 --config 选项时,应提供 JoinConfiguration 类型。

apiVersion: kubeadm.k8s.io/v1beta4
kind: JoinConfiguration
discovery:
  bootstrapToken:
    apiServerEndpoint: some-address:6443
    token: abcdef.0123456789abcdef
    unsafeSkipCAVerification: true
  tlsBootstrapToken: abcdef.0123456789abcdef

JoinConfiguration 类型应用于配置运行时设置,对于 kubeadm join 来说,这些设置是用于访问集群信息的发现方法以及 kubeadm 执行所在的节点的所有特定设置,包括:

  • nodeRegistration,包含与将新节点注册到集群相关的字段;用于自定义节点名称、要使用的 CRI 套接字或仅适用于此节点的任何其他设置(例如,节点 IP)。

  • apiEndpoint,代表将在该节点上部署的 API 服务器实例的端点。

Kubeadm reset 配置类型

当使用 --config 选项执行 kubeadm reset 时,应提供 ResetConfiguration 类型。

apiVersion: kubeadm.k8s.io/v1beta4
kind: ResetConfiguration
...

Kubeadm upgrade 配置类型

当使用 --config 选项执行 kubeadm upgrade 时,应提供 UpgradeConfiguration 类型。

apiVersion: kubeadm.k8s.io/v1beta4
kind: UpgradeConfiguration
apply:
  ...
diff:
  ...
node:
  ...
plan:
  ...

UpgradeConfiguration 结构包含一些子结构,这些子结构仅适用于 kubeadm upgrade 的不同子命令。例如,apply 子结构将与 kubeadm upgrade apply 子命令一起使用,并且在这种情况下会忽略所有其他子结构。

资源类型

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/v1beta4
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 插件的选项。

proxy [必填]
Proxy

proxy 定义了集群中安装的代理插件的选项。

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

集群名称。

encryptionAlgorithm
EncryptionAlgorithmType

encryptionAlgorithm 包含用于密钥和证书的非对称加密算法类型。可以是 "RSA-2048"(默认)、"RSA-3072""RSA-4096""ECDSA-P256" 之一。

certificateValidityPeriod
meta/v1.Duration

certificateValidityPeriod 指定了 kubeadm 生成的非 CA 证书的有效期。默认值:8760h(365 天 * 24 小时 = 1 年)

caCertificateValidityPeriod
meta/v1.Duration

caCertificateValidityPeriod 指定了 kubeadm 生成的 CA 证书的有效期。默认值:87600h(365 天 * 24 小时 * 10 = 10 年)

InitConfiguration

InitConfiguration 包含一组仅在“kubeadm init”期间使用的运行时信息。kubeadm init 专用信息。这些字段仅在首次运行 kubeadm init 时使用。此后,字段中的信息**不会**上传到 kubeadm-config ConfigMap,因为 kubeadm upgrade 等工具会使用该 ConfigMap。这些字段必须是可选的。

字段描述
apiVersion
string
kubeadm.k8s.io/v1beta4
kind
string
InitConfiguration
bootstrapTokens
[]BootstrapToken

bootstrapTokenskubeadm init 时生效,描述了一组要创建的引导令牌。由于其敏感性,此信息**不会**上传到 kubeadm 集群 ConfigMap。

dryRun [必填]
bool

dryRun 告知是否启用了试运行模式,在试运行模式下不进行任何更改,仅输出将要执行的操作。

nodeRegistration
NodeRegistrationOptions

nodeRegistration 包含与将新控制平面节点注册到集群相关的字段。

localAPIEndpoint
APIEndpoint

localAPIEndpoint 代表部署在此控制平面节点上的 API 服务器实例的端点。在 HA 设置中,这与 ClusterConfiguration.controlPlaneEndpoint 不同,因为 controlPlaneEndpoint 是集群的全局端点,然后将请求负载均衡到每个单独的 API 服务器。此配置对象允许您自定义本地 API 服务器广告的 IP/DNS 名称和端口。默认情况下,kubeadm 会尝试自动检测默认接口的 IP 并使用它,但如果该过程失败,您可以在此处设置所需的值。

certificateKey
string

certificateKeyuploadcerts init 阶段将证书和密钥上传到集群中的 Secret 之前,用于加密它们的密钥。证书密钥是一个十六进制编码的字符串,是 32 字节大小的 AES 密钥。

skipPhases
[]string

skipPhases 是在命令执行期间要跳过的阶段列表。可以通过 kubeadm init --help 命令获取阶段列表。--skip-phases 标志的优先级高于此字段。

patches
Patches

patches 包含与在 kubeadm init 期间应用到 kubeadm 部署的组件的补丁相关的选项。

timeouts
Timeouts

timeouts 包含适用于 kubeadm 命令的各种超时。

JoinConfiguration

JoinConfiguration 包含描述特定节点的元素。

字段描述
apiVersion
string
kubeadm.k8s.io/v1beta4
kind
string
JoinConfiguration
dryRun
bool

dryRun 告知是否启用了试运行模式,如果已设置,则不应用任何更改,仅输出将要执行的操作。

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 部署的组件的补丁相关的选项。

timeouts
Timeouts

timeouts 包含适用于 kubeadm 命令的各种超时。

ResetConfiguration

ResetConfiguration 包含一组仅在“kubeadm reset”期间使用的运行时信息。

字段描述
apiVersion
string
kubeadm.k8s.io/v1beta4
kind
string
ResetConfiguration
cleanupTmpDir
bool

cleanupTmpDir 指定在重置过程中是否应清理 "/etc/kubernetes/tmp" 目录。

certificatesDir
string

certificatesDir 指定证书存储目录。如果指定,将在重置过程中进行清理。

criSocket
string

criSocket 用于检索容器运行时信息,并用于移除容器。如果 criSocket 未通过标志或配置文件指定,kubeadm 将尝试检测一个有效的 CRI 套接字。

dryRun
bool

dryRun 告知是否启用了试运行模式,如果已设置,则不应用任何更改,仅输出将要执行的操作。

force
bool

force 标志指示 kubeadm 在不提示确认的情况下重置节点。

ignorePreflightErrors
[]string

ignorePreflightErrors 提供了一系列要在重置过程中忽略的预检错误,例如 IsPrivilegedUser,Swap。值 all 会忽略所有检查的错误。

skipPhases
[]string

skipPhases 是在命令执行期间要跳过的阶段列表。可以通过 kubeadm reset phase --help 命令获取阶段列表。

unmountFlags
[]string

unmountFlags 是 kubeadm 在“reset”期间挂载目录时可以使用的一组 unmount2() 系统调用标志。此标志可以是:"MNT_FORCE""MNT_DETACH""MNT_EXPIRE""UMOUNT_NOFOLLOW"。默认此列表为空。

timeouts
Timeouts

Timeouts 包含适用于 kubeadm 命令的各种超时。

UpgradeConfiguration

UpgradeConfiguration 包含一组仅适用于 kubeadm upgrade 子命令的选项。

字段描述
apiVersion
string
kubeadm.k8s.io/v1beta4
kind
string
UpgradeConfiguration
apply
UpgradeApplyConfiguration

apply 包含一组仅适用于 kubeadm upgrade apply 命令的选项。

diff
UpgradeDiffConfiguration

diff 包含一组仅适用于 kubeadm upgrade diff 命令的选项。

node
UpgradeNodeConfiguration

node 包含一组仅适用于 kubeadm upgrade node 命令的选项。

plan
UpgradePlanConfiguration

plan 包含一组仅适用于 kubeadm upgrade plan 命令的选项。

timeouts
Timeouts

timeouts 包含适用于 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)。

Arg

出现在

Arg 表示一个带有名称和值的参数。

字段描述
name [必填]
string

参数名称。

value [必填]
string

参数值。

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
[]Arg

extraArgs 是传递给控制平面组件的额外标志集。此列表中的参数名称是命令行中出现的标志名称,但不带前导破折号。额外参数将覆盖现有的默认参数。允许重复的额外参数。

extraVolumes
[]HostPathMount

extraVolumes 是一个额外的宿主机卷集,挂载到控制平面组件。

extraEnvs
[]EnvVar

extraEnvs 是传递给控制平面组件的额外环境变量集。使用 extraEnvs 传递的环境变量将覆盖 kubeadm 默认添加的任何现有环境变量或 *_proxy 环境变量。

DNS

出现在

DNS 定义了集群中应使用的 DNS 插件

字段描述
ImageMeta [必填]
ImageMeta
(ImageMeta 的成员已嵌入到此类型中。)

imageMeta 允许自定义 DNS 插件使用的镜像。

disabled [必填]
bool

disabled 指定是否在此集群中禁用此插件。

发现

出现在

Discovery 指定了 kubelet 在 TLS 引导过程中使用的选项

字段描述
bootstrapToken
BootstrapTokenDiscovery

bootstrapToken 用于设置基于引导令牌的发现选项。bootstrapTokenfile 是互斥的。

file
FileDiscovery

file 用于指定一个 kubeconfig 文件(或 URL),从中加载集群信息。bootstrapTokenfile 是互斥的。

tlsBootstrapToken
string

tlsBootstrapToken 是用于 TLS 引导的令牌。如果设置了 bootstrapToken,则此字段默认为 bootstrapToken.token,但可以被覆盖。如果设置了 file,则在 KubeConfigFile 不包含任何其他身份验证信息的情况下,此字段**必须设置**。

EncryptionAlgorithmType

(string 的别名)

出现在

EncryptionAlgorithmType 可以定义非对称加密算法类型。

EnvVar

出现在

EnvVar 表示容器中的环境变量。

字段描述
EnvVar [必填]
core/v1.EnvVar
(EnvVar 的成员已嵌入到此类型中。) 未提供描述。

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 用于指定一个 kubeconfig 文件(或 URL),从中加载集群信息。

字段描述
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 [必填]
[]Arg

extraArgs 是在 etcd 在静态 Pod 中运行时提供的额外参数。此列表中的参数名称是命令行中出现的标志名称,但不带前导破折号。额外参数将覆盖现有的默认参数。允许重复的额外参数。

extraEnvs
[]EnvVar

extraEnvs 是传递给控制平面组件的额外环境变量集。使用 extraEnvs 传递的环境变量将覆盖 kubeadm 默认添加的任何现有环境变量或 *_proxy 环境变量。

serverCertSANs
[]string

serverCertSANs 为 etcd 服务器签名证书设置额外的备用名称 (SAN)。

peerCertSANs
[]string

peerCertSANs 为 etcd peer 签名证书设置额外的备用名称 (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: []。此字段仅用于节点注册。

kubeletExtraArgs
[]Arg

kubeletExtraArgs 将额外的参数传递给 kubelet。此处的参数通过 kubeadm 在运行时写入的用于 kubelet 源的配置文件传递给 kubelet 命令行。这会覆盖 kubelet-config ConfigMap 中的通用基本级别配置。解析时,标志具有更高的优先级。这些值是局部的,特定于 kubeadm 执行的节点。此列表中的参数名称是命令行中出现的标志名称,但不带前导破折号。额外参数将覆盖现有的默认参数。允许重复的额外参数。

ignorePreflightErrors
[]string

ignorePreflightErrors 提供了一系列要在当前节点注册时忽略的预检错误,例如 'IsPrivilegedUser,Swap'。值 'all' 会忽略所有检查的错误。

imagePullPolicy
core/v1.PullPolicy

imagePullPolicy 指定了在 kubeadm initjoin 操作期间拉取镜像的策略。此字段的值必须是 "Always"、"IfNotPresent" 或 "Never" 之一。如果此字段未设置,kubeadm 将默认设置为 "IfNotPresent",或在镜像不存在于宿主机时拉取所需镜像。

imagePullSerial
bool

imagePullSerial 指定了 kubeadm 执行的镜像拉取是串行还是并行。默认值:true

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”、“kubeletconfiguration”、“corednsdeployment”之一。“patchtype”可以是“strategic”、“merge”或“json”之一,并且与 kubectl 支持的补丁格式匹配。默认的“patchtype”是“strategic”。“extension”必须是“json”或“yaml”。“suffix”是一个可选字符串,可用于确定哪些补丁按字母数字顺序首先应用。

Proxy

出现在

Proxy 定义了集群中应使用的代理插件。

字段描述
disabled [必填]
bool

disabled 指定是否在此集群中禁用此插件。

Timeouts

出现在

Timeouts 包含适用于 kubeadm 命令的各种超时。

字段描述
controlPlaneComponentHealthCheck
meta/v1.Duration

controlPlaneComponentHealthCheck 是在 kubeadm initkubeadm join 期间等待控制平面组件(例如 API 服务器)健康的超时时间。默认值:4m

kubeletHealthCheck
meta/v1.Duration

kubeletHealthCheck 是在 kubeadm initkubeadm join 期间等待 kubelet 健康的超时时间。默认值:4m

kubernetesAPICall
meta/v1.Duration

kubernetesAPICall 是 kubeadm 客户端完成对 API 服务器请求的超时时间。这适用于所有类型的方法(GET、POST 等)。默认值:1m

etcdAPICall
meta/v1.Duration

etcdAPICall 是 kubeadm etcd 客户端完成对 etcd 集群请求的超时时间。默认值:2m

tlsBootstrap
meta/v1.Duration

tlsBootstrap 是等待 kubelet 完成加入节点的 TLS 引导的超时时间。默认值:5m

discovery
meta/v1.Duration

discovery 是 kubeadm 等待验证加入节点的 API 服务器身份的超时时间。默认值:5m

upgradeManifests [必填]
meta/v1.Duration

upgradeManifests 是升级静态 Pod 清单的超时时间。默认值:5m

UpgradeApplyConfiguration

出现在

UpgradeApplyConfiguration 包含一组仅适用于“kubeadm upgrade apply”命令的可配置选项。

字段描述
kubernetesVersion
string

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

allowExperimentalUpgrades
bool

allowExperimentalUpgrades 指示 kubeadm 将不稳定的 Kubernetes 版本显示为升级选项,并允许升级到 Kubernetes 的 alpha/beta/release candidate 版本。默认值:false

allowRCUpgrades
bool

启用 allowRCUpgrades 将显示 Kubernetes 的 release candidate 版本作为升级选项,并允许升级到 Kubernetes 的 release candidate 版本。

certificateRenewal
bool

certificateRenewal 指示 kubeadm 在升级期间执行证书续订。默认值为 true。

dryRun
bool

dryRun 告知是否启用了试运行模式,如果已设置,则不应用任何更改,仅输出将要执行的操作。

etcdUpgrade
bool

etcdUpgrade 指示 kubeadm 在升级期间执行 etcd 升级。默认值为 true。

forceUpgrade
bool

forceUpgrade 标志指示 kubeadm 在不提示确认的情况下升级集群。

ignorePreflightErrors
[]string

ignorePreflightErrors 提供了一系列要在升级过程中忽略的预检错误,例如 IsPrivilegedUser,Swap。值 all 会忽略所有检查的错误。

patches
Patches

patches 包含与在 kubeadm upgrade 期间应用到 kubeadm 部署的组件的补丁相关的选项。

printConfig
bool

printConfig 指定是否应打印升级中使用的配置文件。

skipPhases [必填]
[]string

skipPhases 是在命令执行期间要跳过的阶段列表。注意:此字段目前被 kubeadm upgrade apply 忽略,但将来会得到支持。

imagePullPolicy
core/v1.PullPolicy

imagePullPolicy 指定了在 kubeadm upgrade apply 操作期间拉取镜像的策略。此字段的值必须是 "Always"、"IfNotPresent" 或 "Never" 之一。如果此字段未设置,kubeadm 将默认设置为 "IfNotPresent",或在镜像不存在于宿主机时拉取所需镜像。

imagePullSerial
bool

imagePullSerial 指定了 kubeadm 执行的镜像拉取是串行还是并行。默认值:true

UpgradeDiffConfiguration

出现在

UpgradeDiffConfiguration 包含一组仅适用于 kubeadm upgrade diff 命令的可配置选项。

字段描述
kubernetesVersion
string

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

contextLines
int

diffContextLines 是 diff 中的上下文行数。

UpgradeNodeConfiguration

出现在

UpgradeNodeConfiguration 包含一组仅适用于“kubeadm upgrade node”命令的可配置选项。

字段描述
certificateRenewal
bool

certificateRenewal 指示 kubeadm 在升级期间执行证书续订。默认值为 true。

dryRun
bool

dryRun 告知是否启用了试运行模式,如果已设置,则不应用任何更改,仅输出将要执行的操作。

etcdUpgrade
bool

etcdUpgrade 指示 kubeadm 在升级期间执行 etcd 升级。默认值为 true。

ignorePreflightErrors
[]string

ignorePreflightErrors 提供了一系列要在升级过程中忽略的预检错误,例如 'IsPrivilegedUser,Swap'。值 'all' 会忽略所有检查的错误。

skipPhases
[]string

skipPhases 是在命令执行期间要跳过的阶段列表。可以通过 kubeadm upgrade node phase --help 命令获取阶段列表。

patches
Patches

patches 包含与在 kubeadm upgrade 期间应用到 kubeadm 部署的组件的补丁相关的选项。

imagePullPolicy
core/v1.PullPolicy

imagePullPolicy 指定了在 kubeadm upgrade node 操作期间拉取镜像的策略。此字段的值必须是 "Always"、"IfNotPresent" 或 "Never" 之一。如果此字段未设置,kubeadm 将默认设置为 "IfNotPresent",或在镜像不存在于宿主机时拉取所需镜像。

imagePullSerial
bool

imagePullSerial 指定了 kubeadm 执行的镜像拉取是串行还是并行。默认值:true

UpgradePlanConfiguration

出现在

UpgradePlanConfiguration 包含一组仅适用于“kubeadm upgrade plan”命令的可配置选项。

字段描述
kubernetesVersion [必填]
string

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

allowExperimentalUpgrades
bool

allowExperimentalUpgrades 指示 kubeadm 将不稳定的 Kubernetes 版本显示为升级选项,并允许升级到 Kubernetes 的 alpha/beta/release candidate 版本。默认值:false

allowRCUpgrades
bool

启用 allowRCUpgrades 将显示 Kubernetes 的 release candidate 版本作为升级选项,并允许升级到 Kubernetes 的 release candidate 版本。

dryRun
bool

dryRun 告知是否启用了试运行模式,如果已设置,则不应用任何更改,仅输出将要执行的操作。

ignorePreflightErrors
[]string

ignorePreflightErrors 提供了一系列要在升级过程中忽略的预检错误,例如 'IsPrivilegedUser,Swap'。值 'all' 会忽略所有检查的错误。

printConfig
bool

printConfig 指定是否应打印升级中使用的配置文件。

本页面是自动生成的。

如果你打算报告此页面存在的问题,请在问题描述中提及此页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。

最后修改日期:2025 年 6 月 7 日上午 11:24 PST:docs: 修正 `advertiseAddress` 拼写错误 (654ca19b6f)