kubeadm 配置 (v1beta3)

概述

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

自 v1beta2 以来的更改列表

  • 已删除已弃用的 "ClusterConfiguration.useHyperKubeImage" 字段。kubeadm 不再支持 hyperkube 镜像。
  • 由于 CoreDNS 是 kubeadm 支持的唯一 DNS 服务器类型,因此已删除 "ClusterConfiguration.dns.type" 字段。
  • 在包含密钥的字段上包含 "datapolicy" 标签。这将导致在用 klog 打印 API 结构时省略字段值。
  • 添加 "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 提供的默认值还包括在需要时强制执行组件之间值的一致性 (例如,控制器管理器上的 --cluster-cidr 标志和 kube-proxy 上的 clusterCIDR)。

用户始终允许覆盖默认值,唯一的例外是与安全性相关的一小部分设置 (例如,强制在 api 服务器上使用授权模式 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.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/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 服务器实例的端点。

弃用:v1beta3 在 v1beta4 取代,将在未来的版本中删除,1.34 或更高版本。请迁移

资源类型

BootstrapToken

出现于

BootstrapToken 描述作为集群中的 Secret 存储的一个引导令牌

字段描述
token [必需]
BootstrapTokenString

token 用于在节点和控制平面之间建立双向信任。用于将节点加入集群。

description
字符串

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" 中节点的身份验证方法。此令牌应该是且应是短期的。

字段描述
- [必需]
字符串
未提供描述。
- [必需]
字符串
未提供描述。

ClusterConfiguration

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

字段描述
apiVersion
字符串
kubeadm.k8s.io/v1beta3
kind
字符串
ClusterConfiguration
etcd
Etcd

etcd 包含 etcd 的配置。

networking
网络

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

kubernetesVersion
字符串

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

controlPlaneEndpoint
字符串

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
字符串

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

imageRepository
字符串

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

featureGates
map[string]bool

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

clusterName
字符串

集群名称。此名称将在 kubeadm 生成的 kubeconfig 文件中使用,并作为值传递给 kube-controller-manager 的 --cluster-name 标志。默认值为 "kubernetes"

InitConfiguration

InitConfiguration 包含一个元素列表,该列表特定于“kubeadm init”的运行时信息。kubeadm init 专用信息。这些字段仅在 kubeadm init 首次运行时使用。之后,字段中的信息将不会上传到 kubeadm-config ConfigMap,该 ConfigMap 由 kubeadm upgrade 等使用。这些字段必须为空。

字段描述
apiVersion
字符串
kubeadm.k8s.io/v1beta3
kind
字符串
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
字符串

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

skipPhases
[]string

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

patches
Patches

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

JoinConfiguration

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

字段描述
apiVersion
字符串
kubeadm.k8s.io/v1beta3
kind
字符串
JoinConfiguration
nodeRegistration
NodeRegistrationOptions

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

caCertPath
字符串

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

discovery [必需]
Discovery

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

controlPlane
JoinControlPlane

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

skipPhases
[]string

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

patches
Patches

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

APIEndpoint

出现于

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

字段描述
advertiseAddress
字符串

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 用于设置基于 bootstrap token 的发现的选项。

字段描述
token [必需]
字符串

token 是用于验证从控制平面获取的集群信息的 token。

apiServerEndpoint
字符串

apiServerEndpoint 是从其获取信息的 API 服务器的 IP 或域名。

caCertHashes
[]string

caCertHashes 指定在使用基于 token 的发现时要验证的一组公钥 PIN。发现期间找到的根 CA 必须与这些值中的一个匹配。指定一个空集会禁用根 CA PIN,这可能不安全。每个哈希都指定为 <type>:<value>,其中目前唯一支持的类型是 "sha256"。可以使用 OpenSSL 等工具计算这些哈希。

unsafeSkipCAVerification
bool

unsafeSkipCAVerification 允许通过 caCertHashes 进行 CA 验证的基于 token 的发现。这会削弱 kubeadm 的安全性,因为其他节点可以冒充控制平面。

ControlPlaneComponent

出现于

ControlPlaneComponent 包含集群控制平面组件通用的设置

字段描述
extraArgs
map[string]string

extraArgs 是一组传递给控制平面组件的额外标志。此映射中的一个键是命令行上出现的标志名称,但不带前导破折号。

extraVolumes
[]HostPathMount

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

DNS

出现于

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

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

imageMeta 允许自定义用于 DNS 组件的镜像。

Discovery

出现于

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

字段描述
bootstrapToken
BootstrapTokenDiscovery

bootstrapToken 用于设置基于 bootstrap token 的发现的选项。bootstrapTokenfile 互斥。

file
FileDiscovery

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

tlsBootstrapToken
字符串

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

timeout
meta/v1.Duration

timeout 修改发现超时时间。

Etcd

出现于

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

字段描述
local
LocalEtcd

local 提供配置旋钮,用于配置本地 etcd 实例。localexternal 互斥。

external
ExternalEtcd

external 描述如何连接到外部 etcd 集群。localexternal 互斥。

ExternalEtcd

出现于

ExternalEtcd 描述一个外部 etcd 集群。Kubeadm 不知道证书文件位于何处,必须提供它们。

字段描述
endpoints [必需]
[]string

endpoints 包含 etcd 成员列表。

caFile [必需]
字符串

caFile 是用于保护 etcd 通信的 SSL 证书颁发机构 (CA) 文件。如果使用 TLS 连接,则需要。

certFile [必需]
字符串

certFile 是用于保护 etcd 通信的 SSL 证书文件。如果使用 TLS 连接,则需要。

keyFile [必需]
字符串

keyFile 是用于保护 etcd 通信的 SSL 密钥文件。如果使用 TLS 连接,则需要。

FileDiscovery

出现于

FileDiscovery 用于指定一个文件或 URL,指向一个 kubeconfig 文件,从中加载集群信息。

字段描述
kubeConfigPath [必需]
字符串

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

HostPathMount

出现于

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

字段描述
name [必需]
字符串

name 是 Pod 模板中卷的名称。

hostPath [必需]
字符串

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

mountPath [必需]
字符串

mountPath 是 Pod 内部挂载 hostPath 的路径。

readOnly
bool

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

pathType
core/v1.HostPathType

pathTypehostPath 的类型。

ImageMeta

出现于

ImageMeta 允许自定义用于非源自 Kubernetes/Kubernetes 发布过程的组件的容器镜像。

字段描述
imageRepository
字符串

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

imageTag
字符串

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

JoinControlPlane

出现于

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

字段描述
localAPIEndpoint
APIEndpoint

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

certificateKey
字符串

certificateKey 是用于在从加入新的控制平面节点时从 secret 下载证书后对其进行解密的密钥。相应的加密密钥位于 InitConfiguration 中。证书密钥是大小为 32 字节的 AES 密钥的十六进制编码字符串。

LocalEtcd

出现于

LocalEtcd 描述 kubeadm 应该在本地运行 etcd 集群。

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

ImageMeta 允许自定义用于 etcd 的容器镜像。传递自定义 etcd 镜像会告诉 kubeadm upgrade 该镜像由用户管理,并且其升级必须跳过。

dataDir [必需]
字符串

dataDir 是 etcd 将放置其数据的目录。默认为 "/var/lib/etcd"。

extraArgs
map[string]string

extraArgs 是提供给静态 Pod 内部运行的 etcd 二进制文件的额外参数。此映射中的一个键是命令行上出现的标志名称,但不带前导破折号。

serverCertSANs
[]string

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

peerCertSANs
[]string

peerCertSANs 设置 etcd 对等签名证书的额外主题备用名称 (SAN)。

网络

出现于

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

字段描述
serviceSubnet
字符串

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

podSubnet
字符串

podSubnet 是 Pod 使用的子网。

dnsDomain
字符串

dnsDomain 是 Kubernetes 服务使用的 DNS 域。默认为 "cluster.local"。

NodeRegistrationOptions

出现于

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

字段描述
name
字符串

name 是 Node API 对象中 .metadata.name 字段,将在本次 kubeadm initkubeadm join 操作中创建。此字段也用于 kubelet 与 API 服务器的客户端证书的 CommonName 字段。如果未提供,则默认为节点的 hostname。

criSocket
字符串

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

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

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

kubeletExtraArgs
map[string]string

kubeletExtraArgs 将额外的参数传递给 kubelet。这里的参数通过 kubeadm 在运行时为 kubelet 编写的环境文件传递给 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
字符串

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" 是一个可选字符串,可用于确定按字母数字顺序首先应用哪些补丁。

本页面是自动生成的。

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

最后修改时间为 2025 年 12 月 21 日下午 8:51 PST:更新 v1.35 版本的 config API 参考 (efb02468c4)