kubeadm 配置 (v1beta4)

概述

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

自 v1beta3 以来的一系列更改

  • TODO https://github.com/kubernetes/kubeadm/issues/2890
  • 支持在 ClusterConfiguration 下的控制平面组件中使用自定义环境变量。使用 APIServer.ExtraEnvsControllerManager.ExtraEnvsScheduler.ExtraEnvsEtcd.Local.ExtraEnvs
  • ResetConfiguration API 类型现在在 v1beta4 中得到支持。用户可以通过将 --config 文件传递给 kubeadm reset 来重置节点。
  • dry-run 模式现在可以在 InitConfiguration 和 JoinConfiguration 配置文件中配置。
  • 将现有的字符串/字符串额外参数映射替换为支持重复的结构化额外参数。更改适用于 ClusterConfiguration - APIServer.ExtraArgsControllerManager.ExtraArgsScheduler.ExtraArgs。也适用于 NodeRegistrationOptions.KubeletExtraArgs
  • 添加 ClusterConfiguration.EncryptionAlgorithm,可用于设置此集群密钥和证书使用的非对称加密算法。可以是 "RSA-2048"(默认)、"RSA-3072""RSA-4096""ECDSA-P256" 之一。
  • 添加 ClusterConfiguration.DNS.DisabledClusterConfiguration.Proxy.Disabled,可用于在集群初始化期间禁用 CoreDNS 和 kube-proxy 附加组件。在集群创建期间跳过相关的附加组件阶段将把相同的字段设置为 false
  • 在 'InitConfigurationJoinConfiguration` 中添加 NodeRegistration.ImagePullSerial 字段,可用于控制 kubeadm 是否串行或并行拉取镜像。
  • 当将 --config 传递给 kubeadm upgrade 子命令时,UpgradeConfiguration kubeadm API 现在在 v1beta4 中得到支持。当将 --config 传递给 upgrade 子命令时,kubeletkube-proxy 的组件配置、InitConfiguration 和 ClusterConfiguration 将被弃用并将被忽略。
  • InitConfigurationJoinConfigurationResetConfigurationUpgradeConfiguration 添加一个 Timeouts 结构,可用于配置各种超时。

从旧的 kubeadm 配置版本迁移

  • kubeadm v1.15.x 及更高版本可用于从 v1beta1 迁移到 v1beta2。
  • kubeadm v1.22.x 及更高版本不再支持 v1beta1 和更旧的 API,但可用于将 v1beta2 迁移到 v1beta3。
  • kubeadm v1.27.x 及更高版本不再支持 v1beta2 和更旧的 API。
  • TODO: https://github.com/kubernetes/kubeadm/issues/2890 添加可用于转换为 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

要打印“初始化”和“加入”操作的默认值,请使用以下命令

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

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

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

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

如果用户提供了不适合您正在执行的操作的配置类型,kubeadm 将忽略这些类型并打印警告信息。

Kubeadm 初始化配置类型

当使用 --config 选项执行 kubeadm 初始化时,可以使用以下配置类型:InitConfiguration、ClusterConfiguration、KubeProxyConfiguration、KubeletConfiguration,但 InitConfiguration 和 ClusterConfiguration 之间只有一个是强制性的。

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

	...

nodeRegistration:

	...

InitConfiguration 类型应用于配置运行时设置,在 kubeadm 初始化的情况下,这些设置是引导令牌的配置以及执行 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:
	  v: 4
	ignorePreflightErrors:
	  - IsPrivilegedUser
	imagePullPolicy: "IfNotPresent"

localAPIEndpoint:

	advertiseAddress: "10.100.0.1"
	bindPort: 6443

certificateKey: "e6a2eb8581237ab72a4f494f30285ec12a9694d750b9785706a83bfcbbbd2204"
skipPhases:
  - addon/kube-proxy

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

当使用 --config 选项执行 kubeadm 加入时,应提供 JoinConfiguration 类型。

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

	...

JoinConfiguration 类型应用于配置运行时设置,在 kubeadm 加入的情况下,这些设置是用于访问集群信息的发现方法以及执行 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 加入”的引导阶段的身份验证方法。此令牌是短期的,也应该是短期的。

字段描述
- [必需]
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 定义了在集群中安装的代理附加组件的选项。

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)或 "ECDSA"(使用 P-256 椭圆曲线)。

InitConfiguration

InitConfiguration 包含特定于“kubeadm init”的运行时信息的元素列表。 kubeadm init 的运行时信息。这些字段仅在第一次运行 kubeadm init 时使用。之后,这些字段中的信息不会上传到 kubeadm-config ConfigMap,例如,kubeadm upgrade 会使用该 ConfigMap。这些字段必须是 omitempty。

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

bootstrapTokenskubeadm init 时被尊重,并描述了一组要创建的引导令牌。此信息不会上传到 kubeadm 集群配置映射,部分原因是它的敏感性。

dryRun [必填]
bool

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

nodeRegistration
NodeRegistrationOptions

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

localAPIEndpoint
APIEndpoint

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

certificateKey
string

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

skipPhases
[]string

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

patches
Patches

patches 包含与在 kubeadm init 期间将补丁应用于 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

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

controlPlane
JoinControlPlane

controlPlane 定义要部署在加入节点上的额外控制平面实例。如果为空,则不会部署额外的控制平面实例。

skipPhases
[]string

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

patches
Patches

patches 包含与在 kubeadm join 期间将补丁应用于 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 命令获取阶段列表。

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

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

bindPort
int32

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

APIServer

出现于

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

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

certSANs 为 API 服务器签名证书设置额外的主题备用名称 (SAN)。

timeoutForControlPlane
meta/v1.Duration

timeoutForControlPlane 控制我们用于 API 服务器出现的超时时间。

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 允许在没有通过 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 用于指定一个文件或 URL,指向从中加载集群信息的 kubeconfig 文件。bootstrapTokenfile 是互斥的。

tlsBootstrapToken
string

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

timeout
meta/v1.Duration

timeout 修改发现超时。

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

字段描述
kubeConfigPath [必需]
string

kubeConfigPath 用于指定实际的文件路径或 URL,指向 kubeconfig 文件,从中加载集群信息。

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 发布流程的组件的镜像。

字段描述
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 是在静态 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 操作中创建的 Node API 对象的 .Metadata.Name 字段。此字段也用于 kubelet 到 API 服务器的客户端证书的 CommonName 字段。如果没有提供,则默认为节点的主机名。

criSocket
string

criSocket 用于检索容器运行时信息。此信息将被注释到 Node API 对象中,以备后用。

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

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

kubeletExtraArgs
[]Arg

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

ignorePreflightErrors
[]string

ignorePreflightErrors 提供一个预检错误的切片,这些错误在注册当前节点时应被忽略,例如 'IsPrivilegedUser,Swap'。值 'all' 忽略所有检查的错误。

imagePullPolicy
core/v1.PullPolicy

imagePullPolicy 指定 kubeadm initjoin 操作期间拉取镜像的策略。此字段的值必须是 "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"、"kubeletconfiguration" 之一。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,它们与 kubectl 支持的补丁格式匹配。默认的 "patchtype" 是 "strategic"。 "extension" 必须是 "json" 或 "yaml" 之一。 "suffix" 是一个可选字符串,可用于根据字母顺序确定首先应用哪些补丁。

代理

出现于

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/候选版本。默认:false

allowRCUpgrades
bool

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

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" 中被忽略,但将来将得到支持。

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

UpgradePlanConfiguration

出现于

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

字段描述
kubernetesVersion [必需]
string

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

allowExperimentalUpgrades
bool

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

allowRCUpgrades
bool

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

dryRun
bool

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

ignorePreflightErrors
[]string

ignorePreflightErrors 提供一个预检错误的切片,这些错误在升级过程中应被忽略,例如 'IsPrivilegedUser,Swap'。值 'all' 忽略所有检查的错误。

printConfig
bool

printConfig 指定是否应该打印将用于升级的配置文件。

此页面是自动生成的。

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

最后修改时间:2024 年 4 月 18 日 下午 7:57 PST:v1.30 的 Config API 参考 (6fa7b80ae3)