diff --git a/content/zh-cn/docs/reference/config-api/kubeadm-config.v1beta4.md b/content/zh-cn/docs/reference/config-api/kubeadm-config.v1beta4.md new file mode 100644 index 0000000000..942da3414c --- /dev/null +++ b/content/zh-cn/docs/reference/config-api/kubeadm-config.v1beta4.md @@ -0,0 +1,2056 @@ +--- +title: kubeadm 配置 (v1beta4) +content_type: tool-reference +package: kubeadm.k8s.io/v1beta4 +--- + + + +

概述

+

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

+

从 v1beta3 版本以来的变更列表:

+ + + + + +

kubeadm 配置版本迁移

+ + + +

基础知识

+

配置 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
+
+ + +

要输出 "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 命令时,可以使用下面的配置类型: +InitConfigurationClusterConfigurationKubeProxyConfiguration、 +KubeletConfiguration,但 InitConfigurationClusterConfiguration +二者之间取其一即可。

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

InitConfiguration 类型用来配置运行时设置,就 kubeadm init 命令而言, +包括启动引导令牌以及所有与 kubeadm 所在节点相关的设置,包括:

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

类型 ClusterConfiguration 用来定制集群范围的设置,具体包括以下设置:

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

KubeProxyConfiguration 类型用来更改传递给在集群中部署的 kube-proxy 实例的配置。 +如果此对象没有提供,或者仅部分提供,kubeadm 使用默认值。

+

关于 kube-proxy 的官方文档,可参阅 +https://kubernetes.io/zh-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.io/zh-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:
+	  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 join 配置类型

+

当使用 --config 选项执行 kubeadm join 命令时, +需要提供 JoinConfiguration 类型。

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

JoinConfiguration 类型用来配置运行时设置,就 kubeadm join +而言包括用来访问集群信息的发现方法,以及所有特定于 kubeadm 执行所在节点的设置,包括:

+ + + + + +## 资源类型 {#resource-types} + +- [ClusterConfiguration](#kubeadm-k8s-io-v1beta4-ClusterConfiguration) +- [InitConfiguration](#kubeadm-k8s-io-v1beta4-InitConfiguration) +- [JoinConfiguration](#kubeadm-k8s-io-v1beta4-JoinConfiguration) +- [ResetConfiguration](#kubeadm-k8s-io-v1beta4-ResetConfiguration) + +## `BootstrapToken` {#BootstrapToken} + + +**出现在:** + +- [InitConfiguration](#kubeadm-k8s-io-v1beta3-InitConfiguration) + +- [InitConfiguration](#kubeadm-k8s-io-v1beta4-InitConfiguration) + + +

BootstrapToken 描述的是一个启动引导令牌,以 Secret 的形式存储在集群中。

+ + + + + + + + + + + + + + + + + + + + + + + + +
字段描述
token [必需]
+BootstrapTokenString +
+ +

token 用来在节点与控制平面之间建立双向的信任关系。 +在向集群中添加节点时使用。

+
description
+string +
+ +

description 设置一个对用户友好的信息, + 说明为什么此令牌会存在以及其目标用途,这样其他管理员能够知道其目的。

+
ttl
+meta/v1.Duration +
+ +

ttl 定义此令牌的生命周期。默认为 24h。 +expiresttl 是互斥的。

+
expires
+meta/v1.Time +
+ +

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

+
usages
+[]string +
+ +

usages 描述此令牌的可能使用方式。默认情况下, + 令牌可用于建立双向的信任关系;不过这里可以改变默认用途。

+
groups
+[]string +
+ +

groups 设定此令牌被用于身份认证时对应的附加用户组。

+
+ +## `BootstrapTokenString` {#BootstrapTokenString} + + +**出现在:** + +- [BootstrapToken](#BootstrapToken) + + +

BootstrapTokenString 形式为 abcdef.abcdef0123456789 的一个令牌, +用来从加入集群的节点角度验证 API 服务器的身份,或者 "kubeadm join" +在节点启动引导时作为一种身份认证方法。 +此令牌的生命期是短暂的,并且应该如此。

+ + + + + + + + + + + +
字段描述
- [必需]
+string +
+ + 令牌的 ID。 +
- [必需]
+string +
+ + 令牌的私密数据。 +
+ +## `ClusterConfiguration` {#kubeadm-k8s-io-v1beta3-ClusterConfiguration} + + +

ClusterConfiguration 包含一个 kubeadm 集群的集群范围配置信息。

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段描述
apiVersion
string
kubeadm.k8s.io/v1beta4
kind
string
ClusterConfiguration
etcd
+Etcd +
+ +

etcd 中包含 etcd 服务的配置。

+
networking
+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 来拉取控制平面组件镜像, +而使用 registry.k8s.io 来拉取所有其他镜像。

+
featureGates
+map[string]bool +
+ +

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

+
clusterName
+string +
+ +

集群名称。

+
+ +## `InitConfiguration` {#kubeadm-k8s-io-v1beta3-InitConfiguration} + + +

InitConfiguration 包含一组特定于 "kubeadm init" 的运行时元素。 + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段描述
apiVersion
string
kubeadm.k8s.io/v1beta4
kind
string
InitConfiguration
bootstrapTokens
+[]BootstrapToken +
+ +

bootstrapTokenskubeadm init 执行时会被用到, +其中描述了一组要创建的启动引导令牌(Bootstrap Tokens)。 +这里的信息不会被上传到 kubeadm 在集群中保存的 ConfigMap 中,部分原因是由于信息本身比较敏感。

+
nodeRegistration
+NodeRegistrationOptions +
+ +

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

+
localAPIEndpoint
+APIEndpoint +
+ +

localAPIEndpoint 所代表的是在此控制平面节点上要部署的 API 服务器的端点。 + 在高可用(HA)配置中,此字段与 ClusterConfiguration.controlPlaneEndpoint +的取值不同:后者代表的是整个集群的全局端点,该端点上的请求会被负载均衡到每个 +API 服务器。此配置对象允许你定制本地 API 服务器所公布的、可访问的 IP/DNS 名称和端口。 +默认情况下,kubeadm 会尝试自动检测默认接口上的 IP 并使用该地址。 +不过,如果这种检测失败,你可以在此字段中直接设置所期望的值。

+
certificateKey
+string +
+ +

certificateKey 用来设置一个秘钥,该秘钥将对 uploadcerts init +阶段上传到集群中某 Secret 内的秘钥和证书加密。

+
skipPhases
+[]string +
+ +

skipPhases 是命令执行过程中要略过的阶段(Phases)。 +通过执行命令 kubeadm init --help 可以获得阶段的列表。 +参数标志 "--skip-phases" 优先于此字段的设置。

+
patches
+Patches +
+ +

patches 包含与 kubeadm init 阶段 kubeadm + 所部署的组件上要应用的补丁相关的信息。

+
+ +## `JoinConfiguration` {#kubeadm-k8s-io-v1beta3-JoinConfiguration} + +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段描述
apiVersion
string
kubeadm.k8s.io/v1beta4
kind
string
JoinConfiguration
nodeRegistration
+NodeRegistrationOptions +
+

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

+
caCertPath
+string +
+

+ + caCertPath 是指向 SSL 证书机构的路径,该证书包用来加密节点与控制平面之间的通信。 + 默认值为 "/etc/kubernetes/pki/ca.crt"。 +

+
discovery [必需]
+Discovery +
+

+ + discovery 设置 TLS 引导过程中 kubelet 要使用的选项。 +

+
controlPlane
+JoinControlPlane +
+

+ + controlPlane 定义要在正被加入到集群中的节点上部署的额外控制平面实例。 + 此字段为 null 时,不会在上面部署额外的控制平面实例。 +

+
skipPhases
+[]string +
+

+ + skipPhases 是在命令执行过程中要略过的阶段的列表。 + 通过 kubeadm join --help 命令可以查看阶段的列表。 + 参数 --skip-phases 优先于此字段。 +

+
patches
+Patches +
+

+ + 此字段包含 kubeadm join 阶段向 kubeadm 所部署的组件打补丁的选项。 +

+
+ +## `ResetConfiguration` {#kubeadm-k8s-io-v1beta4-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 将尝试检测一个有效的 criSocket

+ +
dryRun
+bool +
+ +

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

+
force
+bool +
+ +

force 标志指示 kubeadm 在重置节点时不需要确认提示。

+
ignorePreflightErrors
+[]string +
+ +

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

+
skipPhases
+[]string +
+ +

skipPhases 是一个在命令执行过程中要略过的阶段的列表。 +你可以使用命令 "kubeadm reset phase --help" 获取阶段的列表。

+
+ +## `APIEndpoint` {#kubeadm-k8s-io-v1beta3-APIEndpoint} + + +**出现在:** + +- [InitConfiguration](#kubeadm-k8s-io-v1beta4-InitConfiguration) + +- [JoinControlPlane](#kubeadm-k8s-io-v1beta4-JoinControlPlane) + +

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

+ + + + + + + + + + + + +
字段描述
advertiseAddress
+string +
+

+ + advertiseAddress 设置 API 服务器要公布的 IP 地址。 +

+
bindPort
+int32 +
+

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

+
+ +## `APIServer` {#kubeadm-k8s-io-v1beta3-APIServer} + + +**出现在:** + +- [ClusterConfiguration](#kubeadm-k8s-io-v1beta3-ClusterConfiguration) + +

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

+ + + + + + + + + + + + + + + +
字段描述
ControlPlaneComponent [必需]
+ControlPlaneComponent +
+ +(ControlPlaneComponent 结构的字段被嵌入到此类型中。) + + 无描述。 +
certSANs
+[]string +
+

+ + certSANs 设置 API 服务器签署证书所用的额外主体替代名(Subject Alternative Name,SAN)。 +

+
timeoutForControlPlane
+meta/v1.Duration +
+

+ + timeoutForControlPlane 用来控制我们等待 API 服务器开始运行的超时时间。 +

+
+ +## `BootstrapTokenDiscovery` {#kubeadm-k8s-io-v1beta3-BootstrapTokenDiscovery} + + +**出现在:** + +- [Discovery](#kubeadm-k8s-io-v1beta3-Discovery) + +

+ +BootstrapTokenDiscovery 用来设置基于引导令牌的服务发现选项。 +

+ + + + + + + + + + + + + + + + + + +
字段描述
token [必需]
+string +
+

+ + token 是用来验证从控制平面获得的集群信息的令牌。 +

+
apiServerEndpoint
+string +
+

+ + apiServerEndpoint 为 API 服务器的 IP 地址或者域名,从该端点可以获得集群信息。 +

+
caCertHashes
+[]string +
+

+ + caCertHashes 设置一组在基于令牌来发现服务时要验证的公钥指纹。 +发现过程中获得的根 CA 必须与这里的数值之一匹配。设置为空集合意味着禁用根 CA 指纹, +因而可能是不安全的。每个哈希值的形式为 <type>:<value>, +当前唯一支持的 type 为 "sha256"。 +哈希值为主体公钥信息(Subject Public Key Info,SPKI)对象的 SHA-256 +哈希值(十六进制编码),形式为 DER 编码的 ASN.1。 +例如,这些哈希值可以使用 OpenSSL 来计算。 +

+
unsafeSkipCAVerification
+bool +
+

+ + unsafeSkipCAVerification 允许在使用基于令牌的服务发现时不使用 + caCertHashes 来执行 CA 验证。这会弱化 kubeadm 的安全性, + 因为其他节点可以伪装成控制平面。 +

+
+ +## `ControlPlaneComponent` {#kubeadm-k8s-io-v1beta3-ControlPlaneComponent} + + +**出现在:** + +- [ClusterConfiguration](#kubeadm-k8s-io-v1beta3-ClusterConfiguration) +- [APIServer](#kubeadm-k8s-io-v1beta3-APIServer) + + +

ControlPlaneComponent 中包含对集群中所有控制平面组件都适用的设置。

+ + + + + + + + + + + + + + + +
字段描述
extraArgs
+map[string]string +
+

+ + extraArgs 是要传递给控制平面组件的一组额外的参数标志。 +此映射中的每个键对应命令行上使用的标志名称,只是没有其引导连字符。 +TODO:这只是暂时的,我们希望将所有组件切换为使用 ComponentConfig + ConfigMap。 +

+
extraVolumes
+[]HostPathMount +
+

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

+
extraEnvs
+[]core/v1.EnvVar +
+ +

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

+
+ +## `DNS` {#kubeadm-k8s-io-v1beta4-DNS} + + +**出现在:** + +- [ClusterConfiguration](#kubeadm-k8s-io-v1beta3-ClusterConfiguration) + + +

DNS 结构定义要在集群中使用的 DNS 插件。

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

+ + imageMeta 允许对 DNS 组件所使用的的镜像作定制。 +

+
+ +## `Discovery` {#kubeadm-k8s-io-v1beta3-Discovery} + + +**出现在:** + +- [JoinConfiguration](#kubeadm-k8s-io-v1beta3-JoinConfiguration) + + +

Discovery 设置 TLS 启动引导过程中 kubelet 要使用的配置选项。

+ + + + + + + + + + + + + + + + + + +
字段描述
bootstrapToken
+BootstrapTokenDiscovery +
+

+ + bootstrapToken 设置基于启动引导令牌的服务发现选项。 +bootstrapTokenfile 是互斥的。 +

+
file
+FileDiscovery +
+

+ + file 用来设置一个文件或者 URL 路径,指向一个 kubeconfig 文件; + 该配置文件中包含集群信息。 +bootstrapTokenfile 是互斥的。 +

+
tlsBootstrapToken
+string +
+

+ + tlsBootstrapToken 是 TLS 启动引导过程中使用的令牌。 +如果设置了 bootstrapToken,则此字段默认值为 .bootstrapToken.token, +不过可以被重载。如果设置了 file,此字段必须被设置,以防 kubeconfig +文件中不包含其他身份认证信息。 +

+
timeout
+meta/v1.Duration +
+

+ + timeout 用来修改发现过程的超时时长。 +

+
+ +## `Etcd` {#kubeadm-k8s-io-v1beta3-Etcd} + + +**出现在:** + +- [ClusterConfiguration](#kubeadm-k8s-io-v1beta3-ClusterConfiguration) + + +

Etcd 包含用来描述 etcd 配置的元素。

+ + + + + + + + + + + + +
字段描述
local
+LocalEtcd +
+

+ + local 提供配置本地 etcd 实例的选项。 + localexternal 是互斥的。 +

+
external
+ExternalEtcd +
+

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

+
+ +## `ExternalEtcd` {#kubeadm-k8s-io-v1beta3-ExternalEtcd} + + +**出现在:** + +- [Etcd](#kubeadm-k8s-io-v1beta3-Etcd) + + +

ExternalEtcd 描述外部 etcd 集群。 +kubeadm 不清楚证书文件的存放位置,因此必须单独提供证书信息。 +

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

endpoints 包含一组 etcd 成员的列表。

+
caFile [必需]
+string +
+ +

caFile 是一个 SSL 证书机构(CA)文件,用来加密 etcd 通信。 +如果使用 TLS 连接,此字段为必需字段。

+
certFile [必需]
+string +
+ +

certFile 是一个 SSL 证书文件,用来加密 etcd 通信。 +如果使用 TLS 连接,此字段为必需字段。

+
keyFile [必需]
+string +
+ +

keyFile 是一个用来加密 etcd 通信的 SSL 秘钥文件。 +此字段在使用 TLS 连接时为必填字段。

+
+ +## `FileDiscovery` {#kubeadm-k8s-io-v1beta3-FileDiscovery} + + +**出现在:** + +- [Discovery](#kubeadm-k8s-io-v1beta3-Discovery) + + +

FileDiscovery 用来指定一个文件或者 URL 路径,指向一个 kubeconfig 文件; +该配置文件可用来加载集群信息。

+ + + + + + + + + +
字段描述
kubeConfigPath [必需]
+string +
+ +

kubeConfigPath 用来指定一个文件或者 URL 路径,指向一个 kubeconfig 文件; +该配置文件可用来加载集群信息。

+
+ +## `HostPathMount` {#kubeadm-k8s-io-v1beta3-HostPathMount} + + +**出现在:** + +- [ControlPlaneComponent](#kubeadm-k8s-io-v1beta3-ControlPlaneComponent) + + +

HostPathMount 包含从宿主节点挂载的卷的信息。 + + + + + + + + + + + + + + + + + + + + + +
字段描述
name [必需]
+string +
+ +

name 为卷在 Pod 模板中的名称。

+
hostPath [必需]
+string +
+ +

hostPath 是要在 Pod 中挂载的卷在宿主系统上的路径。

+
mountPath [必需]
+string +
+ +

mountPathhostPath 在 Pod 内挂载的路径。

+
readOnly
+bool +
+ +

readOnly 控制卷的读写访问模式。

+
pathType
+core/v1.HostPathType +
+ +

pathTypehostPath 的类型。

+
+ +## `ImageMeta` {#kubeadm-k8s-io-v1beta3-ImageMeta} + + +**出现在:** + +- [DNS](#kubeadm-k8s-io-v1beta3-DNS) +- [LocalEtcd](#kubeadm-k8s-io-v1beta3-LocalEtcd) + + +

ImageMeta 用来配置来源不是 Kubernetes/Kubernetes 发布过程的组件所使用的镜像。

+ + + + + + + + + + + + +
字段描述
imageRepository
+string +
+ +

imageRepository 设置镜像拉取所用的容器仓库。 +若未设置,则使用 ClusterConfiguration 中的 imageRepository

+
imageTag
+string +
+ +

imageTag 允许用户设置镜像的标签。 +如果设置了此字段,则 kubeadm 不再在集群升级时自动更改组件的版本。

+
+ +## `JoinControlPlane` {#kubeadm-k8s-io-v1beta3-JoinControlPlane} + + +**出现在:** + +- [JoinConfiguration](#kubeadm-k8s-io-v1beta3-JoinConfiguration) + + +

JoinControlPlane 包含在正在加入集群的节点上要部署的额外的控制平面组件的设置。

+ + + + + + + + + + + + +
字段描述
localAPIEndpoint
+APIEndpoint +
+ +

localAPIEndpoint 代表的是将在此节点上部署的 API 服务器实例的端点。

+
certificateKey
+string +
+ +

certificateKey 是在添加新的控制平面节点时用来解密所下载的 +Secret 中的证书的秘钥。对应的加密秘钥在 InitConfiguration 结构中。

+
+ +## `LocalEtcd` {#kubeadm-k8s-io-v1beta3-LocalEtcd} + + +**出现在:** + +- [Etcd](#kubeadm-k8s-io-v1beta3-Etcd) + + +

LocalEtcd 描述的是 kubeadm 要使用的本地 etcd 集群。

+ + + + + + + + + + + + + + + + + + + + + + + + +
字段描述
ImageMeta [必需]
+ImageMeta +
+ +(ImageMeta 结构的字段被嵌入到此类型中。) + +

ImageMeta 允许用户为 etcd 定制要使用的容器。

+
dataDir [必需]
+string +
+ +

dataDir 是 etcd 用来存放数据的目录。 +默认值为 "/var/lib/etcd"。

+
extraArgs
+map[string]string +
+ +

extraArgs 是为 etcd 可执行文件提供的额外参数,用于在静态 +Pod 中运行 etcd。映射中的每一个键对应命令行上的一个标志参数,只是去掉了前置的连字符。

+
extraEnvs
+[]core/v1.EnvVar +
+ +

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

+
serverCertSANs
+[]string +
+ +

serverCertSANs 为 etcd 服务器的签名证书设置额外的主体替代名 + (Subject Alternative Names,SAN)。

+
peerCertSANs
+[]string +
+ +

peerCertSANs 为 etcd 的对等端签名证书设置额外的主体替代名 + (Subject Alternative Names,SAN)。

+
+ +## `Networking` {#kubeadm-k8s-io-v1beta3-Networking} + + +**出现在:** + +- [ClusterConfiguration](#kubeadm-k8s-io-v1beta3-ClusterConfiguration) + + +

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

+ + + + + + + + + + + + + + + +
字段描述
serviceSubnet
+string +
+ +

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

+
podSubnet
+string +
+ +

podSubnet 为 Pod 所使用的子网。

+
dnsDomain
+string +
+ +

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

+
+ +## `NodeRegistrationOptions` {#kubeadm-k8s-io-v1beta3-NodeRegistrationOptions} + + +**出现在:** + +- [InitConfiguration](#kubeadm-k8s-io-v1beta3-InitConfiguration) +- [JoinConfiguration](#kubeadm-k8s-io-v1beta3-JoinConfiguration) + + +

NodeRegistrationOptions 包含向集群中注册新的控制平面或节点所需要的信息; +节点注册可能通过 "kubeadm init" 或 "kubeadm join" 完成。

+ + + + + + + + + + + + + + + + + + + + + + + + +
字段描述
name
+string +
+ +

name 是 Node API 对象的 .metadata.name 字段值; +该 API 对象会在此 kubeadm initkubeadm join 操作期间创建。 +在提交给 API 服务器的 kubelet 客户端证书中,此字段也用作其 CommonName。 +如果未指定则默认为节点的主机名。

+
criSocket
+string +
+ +

criSocket 用来读取容器运行时的信息。此信息会被以注解的方式添加到 Node API 对象至上,用于后续用途。

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

taints 设定 Node API 对象被注册时要附带的污点。 +若未设置此字段(即字段值为 null),默认为控制平面节点添加控制平面污点。 +如果你不想为控制平面节点添加污点,可以将此字段设置为空列表(即 YAML 文件中的 taints: []), +这个字段只用于节点注册。

+
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" 和 "kubeadm join" +操作期间的镜像拉取策略。此字段的取值可以是 "Always"、"IfNotPresent" 或 +"Never" 之一。若此字段未设置,则 kubeadm 使用 "IfNotPresent" 作为其默认值, +换言之,当镜像在主机上不存在时才执行拉取操作。

+
+ +## `Patches` {#kubeadm-k8s-io-v1beta3-Patches} + + +**出现在:** + +- [InitConfiguration](#kubeadm-k8s-io-v1beta3-InitConfiguration) +- [JoinConfiguration](#kubeadm-k8s-io-v1beta3-JoinConfiguration) + + +

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" 是一个可选的字符串,用来确定按字母表顺序来应用时,哪个补丁最先被应用。

+