kubeadm 配置 (v1beta4)

概述

软件包 v1beta4 定义了 kubeadm 配置文件格式的 v1beta4 版本。此版本在 v1beta3 格式的基础上进行了改进,修复了一些小问题并添加了一些新字段。

自 v1beta3 以来的变更列表

  • 在“集群配置”下的控制平面组件中支持自定义环境变量。 使用 `apiServer.extraEnvs`、`controllerManager.extraEnvs`、`scheduler.extraEnvs`、`etcd.local.extraEnvs`。
  • v1beta4 现在支持 `ResetConfiguration` API 类型。用户可以通过向 `kubeadm reset` 传递 `--config` 文件来重置节点。
  • 现在可以在 `InitConfiguration` 和 `JoinConfiguration` 中配置试运行模式。
  • 将现有的字符串/字符串额外参数映射替换为支持重复的结构化额外参数。此更改适用于 `ClusterConfiguration` - `apiServer.extraArgs`、`controllerManager.extraArgs`、`scheduler.extraArgs`、`etcd.local.extraArgs`。 也适用于 `nodeRegistration.kubeletExtraArgs`。
  • 添加了 `ClusterConfiguration.encryptionAlgorithm`,可用于设置用于此集群的密钥和证书的非对称加密算法。可以是 `“RSA-2048”`(默认)、`“RSA-3072”`、`“RSA-4096”` 或 `“ECDSA-P256”` 之一。
  • 添加了 `ClusterConfiguration.dns.disabled` 和 `ClusterConfiguration.proxy.disabled`,可用于在集群初始化期间禁用 CoreDNS 和 kube-proxy 附加组件。在集群创建过程中跳过相关附加组件阶段会将相同的字段设置为 `true`。
  • 在 `InitConfiguration` 和 `JoinConfiguration` 中添加了 `nodeRegistration.imagePullSerial` 字段,可用于控制 kubeadm 是串行还是并行拉取镜像。
  • 将 `--config` 传递给 `kubeadm upgrade` 子命令时,v1beta4 现在支持 `UpgradeConfiguration` kubeadm API。 不推荐使用 `kubelet` 和 `kube-proxy`、`InitConfiguration` 和 `ClusterConfiguration` 的组件配置,并且在将 `--config` 传递给 `upgrade` 子命令时将忽略这些配置。
  • 向 `InitConfiguration`、`JoinConfiguration`、`ResetConfiguration` 和 `UpgradeConfiguration` 添加了一个 `Timeouts` 结构,可用于配置各种超时。 `ClusterConfiguration.timeoutForControlPlane` 字段已替换为 `Timeouts.controlPlaneComponentHealthCheck`。 `JoinConfiguration.discovery.timeout` 已替换为 `timeouts.Discovery`。
  • 向 `ClusterConfiguration` 添加了 `certificateValidityPeriod` 和 `caCertificateValidityPeriod` 字段。这些字段可用于控制 kubeadm 在 `init`、`join`、`upgrade` 和 `certs` 等子命令期间生成的证书的有效期。非 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

要打印 `init` 和 `join` 操作的默认值,请使用以下命令

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

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

如果未提供某些配置类型,或仅提供部分配置类型,kubeadm 将使用默认值;kubeadm 提供的默认值还包括在需要时强制组件之间的值一致性(例如,控制器管理器上的 `--cluster-cidr` 标志和 kube-proxy 上的 `clusterCIDR`)。

始终允许用户覆盖默认值,但与安全相关的少数设置除外(例如,在 API 服务器上强制执行授权模式 Node 和 RBAC)。

如果用户提供的配置类型不是您正在执行的操作所期望的,kubeadm 将忽略这些类型并打印警告。

Kubeadm 初始化配置类型

使用 `--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。

这是一个完整的示例,其中单个 YAML 文件包含多个配置类型,可在 `kubeadm init` 运行期间使用。

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

使用 --config 选项执行 kubeadm join 时,应提供 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 重置配置类型

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

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

Kubeadm 升级配置类型

使用 `--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` 定义此令牌的生存时间。默认为 `24h`。`expires` 和 `ttl` 互斥。

expires(过期时间)
meta/v1.Time

expires 指定此令牌的过期时间戳。默认为在运行时根据 ttl 动态设置。expiresttl 互斥。

用途
[]string

usages 描述了此令牌的用法。默认情况下可以用于建立双向信任,但可以在这里更改。


[]string

groups 指定此令牌在用于身份验证时将作为哪些额外组进行身份验证

BootstrapTokenString

出现于

BootstrapTokenString 是格式为 abcdef.abcdef0123456789 的令牌,用于验证加入节点对 API 服务器的实用性,并作为“kubeadm join”引导阶段中节点的身份验证方法。此令牌的生存期很短,并且应该很短。

字段描述
- [必填]
string(字符串)
未提供描述。
- [必填]
string(字符串)
未提供描述。

ClusterConfiguration(集群配置)

ClusterConfiguration 包含 kubeadm 集群的集群范围配置。

字段描述
API 版本
string(字符串)
kubeadm.k8s.io/v1beta4
类型
string(字符串)
ClusterConfiguration(集群配置)
etcd
Etcd

etcd 包含 etcd 的配置。

网络
网络

networking 包含集群网络拓扑的配置。

Kubernetes 版本
string(字符串)

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

控制平面端点
string(字符串)

controlPlaneEndpoint 为控制平面设置稳定的 IP 地址或 DNS 名称;它可以是有效的 IP 地址或 RFC-1123 DNS 子域,两者都可以带有可选的 TCP 端口。如果未指定 controlPlaneEndpoint,则使用 advertiseAddress + bindPort;如果指定了 controlPlaneEndpoint 但没有 TCP 端口,则使用 bindPort。可能的用法是

  • 在具有多个控制平面实例的集群中,应将此字段分配给控制平面实例前面的外部负载均衡器的地址。
  • 在强制节点回收的环境中,可以使用 controlPlaneEndpoint 为控制平面分配稳定的 DNS。
API 服务器
APIServer

apiServer 包含 API 服务器的额外设置。

控制器管理器
ControlPlaneComponent

controllerManager 包含控制器管理器的额外设置。

调度器
ControlPlaneComponent

scheduler 包含调度器的额外设置。

DNS
DNS

dns 定义集群中安装的 DNS 附加组件的选项。

proxy [必填]
Proxy

proxy 定义集群中安装的代理附加组件的选项。

证书目录
string(字符串)

certificatesDir 指定存储或查找所有必需证书的位置。

镜像仓库
string(字符串)

imageRepository 设置从中拉取镜像的容器注册表。如果为空,则默认使用 registry.k8s.io。如果 kubernetes 版本是 CI 构建(kubernetes 版本以 ci/ 开头),则 gcr.io/k8s-staging-ci-images 将用作控制平面组件和 kube-proxy 的默认值,而 registry.k8s.io 将用于所有其他镜像。

特性门控
map[string]bool

featureGates 包含用户启用的特性门控。

集群名称
string(字符串)

集群名称。

加密算法
EncryptionAlgorithmType

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

证书有效期
meta/v1.Duration

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

CA 证书有效期
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。这些字段必须为空。

字段描述
API 版本
string(字符串)
kubeadm.k8s.io/v1beta4
类型
string(字符串)
InitConfiguration(初始化配置)
引导令牌
[]BootstrapToken

kubeadm init 时会考虑 bootstrapTokens,它描述了一组要创建的引导令牌。此信息不会上传到 kubeadm 集群 configmap,部分原因是其敏感性

dryRun [必填]
bool

dryRun 指示是否启用了演练模式,在演练模式下不应用任何更改,仅输出将要执行的操作。

节点注册
NodeRegistrationOptions

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

本地 API 端点
APIEndpoint

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

证书密钥
string(字符串)

certificateKey 设置在 uploadcerts init 阶段将证书和密钥加密后上传到集群中的 Secret 之前使用的密钥。证书密钥是一个十六进制编码的字符串,是一个大小为 32 字节的 AES 密钥。

跳过阶段
[]string

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

补丁
Patches

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

超时
Timeouts

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

JoinConfiguration(加入配置)

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

字段描述
API 版本
string(字符串)
kubeadm.k8s.io/v1beta4
类型
string(字符串)
JoinConfiguration(加入配置)
演练
bool

dryRun 指示是否启用了演练模式,如果设置了该模式,则不应用任何更改,仅输出将要执行的操作。

节点注册
NodeRegistrationOptions

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

CA 证书路径
string(字符串)

caCertPath 是用于保护节点与控制平面之间通信的 SSL 证书颁发机构的路径。默认为“/etc/kubernetes/pki/ca.crt”。

discovery [必填]
Discovery

discovery 指定 kubelet 在 TLS 引导过程中使用的选项。

控制平面
JoinControlPlane

controlPlane 定义要部署在加入节点上的附加控制平面实例。如果为 nil,则不会部署其他控制平面实例。

跳过阶段
[]string

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

补丁
Patches

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

超时
Timeouts

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

ResetConfiguration(重置配置)

ResetConfiguration 包含专门针对 kubeadm reset 的运行时信息列表。

字段描述
API 版本
string(字符串)
kubeadm.k8s.io/v1beta4
类型
string(字符串)
ResetConfiguration(重置配置)
清理临时目录
bool

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

证书目录
string(字符串)

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

CRI 套接字
string(字符串)

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

演练
bool

dryRun 指示是否启用了演练模式,如果设置了该模式,则不应用任何更改,仅输出将要执行的操作。

强制
bool

force 标志指示 kubeadm 重置节点而不提示确认。

忽略预检错误
[]string

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

跳过阶段
[]string

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

卸载标志
[]string

unmountFlags 是 kubeadm 在“重置”期间卸载目录时可以使用的 unmount2() 系统调用标志列表。此标志可以是以下之一:"MNT_FORCE""MNT_DETACH""MNT_EXPIRE""UMOUNT_NOFOLLOW"。默认情况下,此列表为空。

超时
Timeouts

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

UpgradeConfiguration(升级配置)

UpgradeConfiguration 包含特定于 kubeadm upgrade 子命令的选项列表。

字段描述
API 版本
string(字符串)
kubeadm.k8s.io/v1beta4
类型
string(字符串)
UpgradeConfiguration(升级配置)
应用
UpgradeApplyConfiguration

apply 包含特定于 kubeadm upgrade apply 命令的选项列表。

差异
UpgradeDiffConfiguration

diff 包含特定于 kubeadm upgrade diff 命令的选项列表。

节点
UpgradeNodeConfiguration

node 包含特定于 kubeadm upgrade node 命令的选项列表。

计划
UpgradePlanConfiguration

plan 包含特定于 kubeadm upgrade plan 命令的选项列表。

超时
Timeouts

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

APIEndpoint

出现于

APIEndpoint 结构包含部署在节点上的 API 服务器实例的元素。

字段描述
通告地址
string(字符串)

advertiseAddress 设置 API 服务器通告的 IP 地址。

绑定端口
int32

bindPort 设置 API 服务器绑定的安全端口。默认为 6443。

APIServer

出现于

APIServer 包含集群中 API 服务器部署所需的设置

字段描述
ControlPlaneComponent [必填]
ControlPlaneComponent
ControlPlaneComponent 的成员嵌入到此类型中。) 未提供描述。
certSANs
[]string

certSANs 为 API 服务器签名证书设置额外的使用者可选名称 (SAN)。

Arg

出现于

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

字段描述
name [必填]
string(字符串)

argumento 的名称。

value [必填]
string(字符串)

argumento 的值。

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 允许在不通过 caCertHashes 进行 CA 验证的情况下进行基于令牌的发现。这可能会削弱 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

出现于

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 配置的元素。

字段描述
local
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 用于指定 kubeconfig 文件的实际文件路径或 URL,从中加载集群信息。

HostPathMount

出现于

HostPathMount 包含描述从主机挂载的卷的元素。

字段描述
name [必填]
string(字符串)

name 是 Pod 模板中卷的名称。

hostPath [必填]
string(字符串)

hostPath 是主机中将在 Pod 内部挂载的路径。

mountPath [必填]
string(字符串)

mountPath 是 Pod 中 hostPath 将被挂载的路径。

readOnly
bool

readOnly 控制对卷的写访问权限。

pathType
core/v1.HostPathType

pathTypehostPath 的类型。

ImageMeta

出现于

ImageMeta 允许自定义用于并非源自 Kubernetes/Kubernetes 发布流程的组件的镜像

字段描述
镜像仓库
string(字符串)

imageRepository 设置从中拉取镜像的容器镜像仓库。如果未设置,将使用 ClusterConfiguration 中定义的 imageRepository

imageTag
string(字符串)

imageTag 允许为镜像指定标签。如果设置此值,kubeadm 在升级过程中不会自动更改上述组件的版本。

JoinControlPlane

出现于

JoinControlPlane 包含描述要在加入节点上部署的附加控制平面实例的元素。

字段描述
本地 API 端点
APIEndpoint

localAPIEndpoint 表示要在此节点上部署的 API 服务器实例的端点。

证书密钥
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 是在静态 Pod 中运行时提供给 etcd 二进制文件的额外参数。此列表中的参数名称是在命令行上显示的标志名称,但不带前导短划线。额外的参数将覆盖现有的默认参数。允许重复的额外参数。

extraEnvs
[]EnvVar

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

serverCertSANs
[]string

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

peerCertSANs
[]string

peerCertSANs 为 etcd 对等签名证书设置额外的使用者可选名称 (SAN)。

网络

出现于

Networking 包含描述集群网络配置的元素。

字段描述
serviceSubnet
string(字符串)

serviceSubnet 是 Kubernetes 服务使用的子网。默认为“10.96.0.0/12”。

podSubnet
string(字符串)

podSubnet 是 Pod 使用的子网。

dnsDomain
string(字符串)

dnsDomain 是 Kubernetes 服务使用的 dns 域名。默认为“cluster.local”。

NodeRegistrationOptions

出现于

NodeRegistrationOptions 包含与通过 kubeadm initkubeadm join 将新的控制平面或节点注册到集群相关的字段。

字段描述
name
string(字符串)

name 是将在此 kubeadm initkubeadm join 操作中创建的节点 API 对象的 .Metadata.Name 字段。此字段也用于 kubelet 的客户端证书到 API 服务器的 CommonName 字段中。如果未提供,则默认为节点的主机名。

CRI 套接字
string(字符串)

criSocket 用于检索容器运行时信息。此信息将被注释到节点 API 对象,以供以后重复使用。

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

taints 指定节点 API 对象应注册的污点。如果此字段未设置,即为 nil,则将使用控制平面节点的控制平面污点作为默认值。如果您不想污染您的控制平面节点,请将此字段设置为空列表,即 YAML 文件中的 taints: []。此字段仅用于节点注册。

kubeletExtraArgs
[]Arg

kubeletExtraArgs 将额外的参数传递给 kubelet。这里的参数通过 kubeadm 在运行时为 kubelet 编写的环境文件传递给 kubelet 命令行以进行源代码处理。这将覆盖 kubelet-config ConfigMap 中的通用基线配置。解析时标志具有更高的优先级。这些值是本地的,并且特定于 kubeadm 正在执行的节点。此列表中的参数名称是在命令行上显示的标志名称,但不带前导短划线。额外的参数将覆盖现有的默认参数。允许重复的额外参数。

忽略预检错误
[]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 引导的时间。默认值:5 分钟

发现
meta/v1.Duration

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

upgradeManifests [必填]
meta/v1.Duration

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

UpgradeApplyConfiguration

出现于

UpgradeApplyConfiguration 包含特定于 "kubeadm upgrade apply" 命令的可配置选项列表。

字段描述
Kubernetes 版本
string(字符串)

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

允许实验性升级
bool

allowExperimentalUpgrades 指示 kubeadm 将 Kubernetes 的不稳定版本显示为升级替代方案,并允许升级到 Kubernetes 的 alpha/beta/候选发布版本。默认值:false

允许候选版本升级
bool

启用 allowRCUpgrades 将显示 Kubernetes 的候选发布版本作为升级替代方案,并允许升级到 Kubernetes 的候选发布版本。

证书续订
bool

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

演练
bool

dryRun 指示是否启用了 dry run 模式,如果启用,则不应用任何更改,只输出将要执行的操作。

etcd 升级
bool

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

强制升级
bool

forceUpgrade 标志指示 kubeadm 无需确认即可升级集群。

忽略预检错误
[]string

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

补丁
Patches

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

打印配置
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 命令的可配置选项列表。

字段描述
Kubernetes 版本
string(字符串)

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

上下文行数
整数

diffContextLines 是 diff 中的上下文行数。

UpgradeNodeConfiguration

出现于

UpgradeNodeConfiguration 包含特定于 "kubeadm upgrade node" 命令的可配置选项列表。

字段描述
证书续订
bool

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

演练
bool

dryRun 指示是否启用了 dry run 模式,如果启用,则不应用任何更改,只输出将要执行的操作。

etcd 升级
bool

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

忽略预检错误
[]string

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

跳过阶段
[]string

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

补丁
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 是控制平面的目标版本。

允许实验性升级
bool

allowExperimentalUpgrades 指示 kubeadm 将 Kubernetes 的不稳定版本显示为升级替代方案,并允许升级到 Kubernetes 的 alpha/beta/候选发布版本。默认值:false

允许候选版本升级
bool

启用 allowRCUpgrades 将显示 Kubernetes 的候选发布版本作为升级替代方案,并允许升级到 Kubernetes 的候选发布版本。

演练
bool

dryRun 指示是否启用了 dry run 模式,如果启用,则不应用任何更改,只输出将要执行的操作。

忽略预检错误
[]string

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

打印配置
bool

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

此页面是自动生成的。

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

上次修改时间:2024 年 12 月 12 日下午 5:37 PST:更新 v1.32 的配置 API (2914668152)