kubeadm 配置 (v1beta2)

概述

包 v1beta2 已被 v1beta3 所弃用。

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

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

  • “certificateKey” 字段被添加到 InitConfiguration 和 JoinConfiguration 中。
  • “ignorePreflightErrors” 字段被添加到 NodeRegistrationOptions 中。
  • JSON 标签 “omitempty” 在合适的情况下被用到更多的位置。
  • “taints” 字段(在 NodeRegistrationOptions)的 JSON 标签 “omitempty” 被去除。

参阅 Kubernetes 1.15 的变更记录以了解详细信息。

从老的 kubeadm 配置版本迁移:

请使用 kubeadm v1.15.x 的 “kubeadm config migrate” 命令将 v1beta1 版本的配置文件转换为 v1beta2。 (从更老版本的 kubeadm 配置文件迁移需要使用更老版本的 kubeadm。例如:

  • kubeadm v1.11 版本可以用来从 v1alpha1 迁移到 v1alpha2 版本;kubeadm v1.12 可用来将 v1alpha2 转换为 v1alpha3。
  • kubeadm v1.13 或 v1.14 可以用来将 v1alpha3 转换为 v1beta1。

尽管如此,kubeadm v1.15.x 会支持读取 v1beta1 版本的 kubeadm 配置文件格式。

基础知识

配置 kubeadm 的推荐方式是使用 --config 选项向其传递一个 YAML 配置文件。 kubeadm 配置文件中定义的某些配置选项也可以作为命令行标志来使用, 不过这种方法所支持的都是一些最常见的、最简单的使用场景。

一个 kubeadm 配置文件中可以包含多个配置类型,使用三根横线(---)作为分隔符。

kubeadm 支持以下配置类型:

  1. apiVersion: kubeadm.k8s.io/v1beta2
  2. kind: InitConfiguration
  3. apiVersion: kubeadm.k8s.io/v1beta2
  4. kind: ClusterConfiguration
  5. apiVersion: kubelet.config.k8s.io/v1beta1
  6. kind: KubeletConfiguration
  7. apiVersion: kubeproxy.config.k8s.io/v1alpha1
  8. kind: KubeProxyConfiguration
  9. apiVersion: kubeadm.k8s.io/v1beta2
  10. kind: JoinConfiguration

要输出 “init” 和 “join” 动作的默认值,可以使用下面的命令:

  1. kubeadm config print init-defaults
  2. kubeadm config print join-defaults

配置文件中必须包含的配置类型列表取决于你在执行的动作(initjoin), 也取决于你要使用的配置选项(默认值或者高级定制)。

如果某些配置类型没有提供,或者仅部分提供,kubeadm 将使用默认值; kubeadm 所提供的默认值在必要时也会保证其在多个组件之间是一致的 (例如控制器管理器上的 --cluster-cidr 参数和 kube-proxy 上的 clusterCIDR)。

用户总是可以重载默认配置值,唯一的例外是一小部分与安全性相关联的配置 (例如在 API 服务器上强制实施 Node 和 RBAC 鉴权模式)。

如果用户所提供的配置类型并非你所执行的操作需要的, kubeadm 会忽略这些配置类型并打印警告信息。

kubeadm init 配置类型

当带有 --config 选项来执行 kubeadm init 命令时,可以使用下面的配置类型: InitConfigurationClusterConfigurationKubeProxyConfigurationKubeletConfiguration,但 InitConfigurationClusterConfiguration 之间只有一个是必须提供的。

  1. apiVersion: kubeadm.k8s.io/v1beta2
  2. kind: InitConfiguration
  3. bootstrapTokens:
  4. ...
  5. nodeRegistration:
  6. ...

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

  • nodeRegistration:其中包含与向集群注册新节点相关的字段; 使用这个类型来定制节点名称、要使用的 CRI 套接字或者其他仅对当前节点起作用的设置 (例如节点 IP 地址)。
  • localAPIEndpoint:代表的是要部署到此节点上的 API 服务器示例的端点; 使用这个类型可以完成定制 API 服务器公告地址这类操作。
  1. apiVersion: kubeadm.k8s.io/v1beta2
  2. kind: ClusterConfiguration
  3. networking:
  4. ...
  5. etcd:
  6. ...
  7. apiServer:
  8. extraArgs:
  9. ...
  10. extraVolumes:
  11. ...
  12. ...

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

  • networking:其中包含集群的网络拓扑配置。使用这一部分可以定制 Pod 的子网或者 Service 的子网。
  • etcd:etcd 数据库的配置。例如使用这个部分可以定制本地 etcd 或者配置 API 服务器使用一个外部的 etcd 集群。
  • kube-apiserverkube-schedulerkube-controller-manager 配置:这些部分可以通过添加定制的设置或者重载 kubeadm 的默认设置来定制控制面组件。
  1. apiVersion: kubeproxy.config.k8s.io/v1alpha1
  2. kind: KubeProxyConfiguration
  3. ...

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

关于 kube-proxy 的官方文档,可参阅 https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/kube-proxy/ 或者 https://godoc.org/k8s.io/kube-proxy/config/v1alpha1#KubeProxyConfiguration。

  1. apiVersion: kubelet.config.k8s.io/v1beta1
  2. kind: KubeletConfiguration
  3. ...

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

关于 kubelet 的官方文档,可参阅 https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/kubelet/ 或者 https://godoc.org/k8s.io/kubelet/config/v1beta1#KubeletConfiguration。

下面是一个为执行 kubeadm init 而提供的、包含多个配置类型的单一 YAML 文件, 其中填充了很多部分。

  1. apiVersion: kubeadm.k8s.io/v1beta2
  2. kind: InitConfiguration
  3. bootstrapTokens:
  4. - token: "9a08jv.c0izixklcxtmnze7"
  5. description: "kubeadm bootstrap token"
  6. ttl: "24h"
  7. - token: "783bde.3f89s0fje9f38fhf"
  8. description: "another bootstrap token"
  9. usages:
  10. - authentication
  11. - signing
  12. groups:
  13. - system:bootstrappers:kubeadm:default-node-token
  14. nodeRegistration:
  15. name: "ec2-10-100-0-1"
  16. criSocket: "/var/run/dockershim.sock"
  17. taints:
  18. - key: "kubeadmNode"
  19. value: "someValue"
  20. effect: "NoSchedule"
  21. kubeletExtraArgs:
  22. v: 4
  23. ignorePreflightErrors:
  24. - IsPrivilegedUser
  25. localAPIEndpoint:
  26. advertiseAddress: "10.100.0.1"
  27. bindPort: 6443
  28. certificateKey: "e6a2eb8581237ab72a4f494f30285ec12a9694d750b9785706a83bfcbbbd2204"
  29. ---
  30. apiVersion: kubeadm.k8s.io/v1beta2
  31. kind: ClusterConfiguration
  32. etcd:
  33. # one of local or external
  34. local:
  35. imageRepository: "registry.k8s.io"
  36. imageTag: "3.2.24"
  37. dataDir: "/var/lib/etcd"
  38. extraArgs:
  39. listen-client-urls: "http://10.100.0.1:2379"
  40. serverCertSANs:
  41. - "ec2-10-100-0-1.compute-1.amazonaws.com"
  42. peerCertSANs:
  43. - "10.100.0.1"
  44. # external:
  45. # endpoints:
  46. # - "10.100.0.1:2379"
  47. # - "10.100.0.2:2379"
  48. # caFile: "/etcd/kubernetes/pki/etcd/etcd-ca.crt"
  49. # certFile: "/etcd/kubernetes/pki/etcd/etcd.crt"
  50. # keyFile: "/etcd/kubernetes/pki/etcd/etcd.key"
  51. networking:
  52. serviceSubnet: "10.96.0.0/16"
  53. podSubnet: "10.244.0.0/24"
  54. dnsDomain: "cluster.local"
  55. kubernetesVersion: "v1.12.0"
  56. controlPlaneEndpoint: "10.100.0.1:6443"
  57. apiServer:
  58. extraArgs:
  59. authorization-mode: "Node,RBAC"
  60. extraVolumes:
  61. - name: "some-volume"
  62. hostPath: "/etc/some-path"
  63. mountPath: "/etc/some-pod-path"
  64. readOnly: false
  65. pathType: File
  66. certSANs:
  67. - "10.100.1.1"
  68. - "ec2-10-100-0-1.compute-1.amazonaws.com"
  69. timeoutForControlPlane: 4m0s
  70. controllerManager:
  71. extraArgs:
  72. "node-cidr-mask-size": "20"
  73. extraVolumes:
  74. - name: "some-volume"
  75. hostPath: "/etc/some-path"
  76. mountPath: "/etc/some-pod-path"
  77. readOnly: false
  78. pathType: File
  79. scheduler:
  80. extraArgs:
  81. address: "10.100.0.1"
  82. extraVolumes:
  83. - name: "some-volume"
  84. hostPath: "/etc/some-path"
  85. mountPath: "/etc/some-pod-path"
  86. readOnly: false
  87. pathType: File
  88. certificatesDir: "/etc/kubernetes/pki"
  89. imageRepository: "registry.k8s.io"
  90. useHyperKubeImage: false
  91. clusterName: "example-cluster"
  92. ---
  93. apiVersion: kubelet.config.k8s.io/v1beta1
  94. kind: KubeletConfiguration
  95. # kubelet specific options here
  96. ---
  97. apiVersion: kubeproxy.config.k8s.io/v1alpha1
  98. kind: KubeProxyConfiguration
  99. # kube-proxy specific options here

kubeadm join 配置类型

当带有 --config 选项来执行 kubeadm join 操作时, 需要提供 JoinConfiguration 类型。

  1. apiVersion: kubeadm.k8s.io/v1beta2
  2. kind: JoinConfiguration
  3. ...

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

  • nodeRegistration:其中包含向集群注册新节点相关的配置字段; 使用这个类型可以定制节点名称、要使用的 CRI 套接字和所有其他仅适用于当前节点的设置 (例如节点 IP 地址)。
  • apiEndpoint:用来代表最终要部署到此节点上的 API 服务器实例的端点。

资源类型

ClusterConfiguration

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

字段描述
apiVersion
string
kubeadm.k8s.io/v1beta2
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 来拉取所有其他镜像。

useHyperKubeImage [必需]
bool

useHyperKubeImage 控制是否使用 hyperkube 来作为Kubernetes 组件,而不是一个个独立的镜像。 已启用:由于 hyperkube 自身已被弃用,此字段也被启用。 将被从将来的 kubeadm 配置版本中移除,kubeadm 在此字段设置为 true 时会打印多个警告信息,并且在一些其他位置忽略此字段设置。

featureGates [必需]
map[string]bool

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

clusterName [必需]
string

集群名称。

ClusterStatus

ClusterStatus 包含集群信息。ClusterStatus 会被保存在集群中 kubeadm-config ConfigMap 中,之后在新的控制面实例添加到集群或者现有控制面实例离开集群时被更新。

字段描述
apiVersion
string
kubeadm.k8s.io/v1beta2
kind
string
ClusterStatus
apiEndpoints [必需]
map[string]github.com/tengqm/kubeconfig/config/kubeadm/v1beta2.APIEndpoint

apiEndpoints 为当前集群中可用的 API 端点,每个控制面实例 (API 服务器)对应一个表项。 映射的键名为主机默认接口的 IP 地址。

InitConfiguration

InitConfiguration 包含一组特定于 “kubeadm init” 的运行时元素。

字段描述
apiVersion
string
kubeadm.k8s.io/v1beta2
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 内的秘钥和证书加密。

JoinConfiguration

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

字段描述
apiVersion
string
kubeadm.k8s.io/v1beta2
kind
string
JoinConfiguration
nodeRegistration [必需]
NodeRegistrationOptions
nodeRegistration 包含与向集群注册控制面节点相关的字段。
caCertPath [必需]
string

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

discovery [必需]
Discovery

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

controlPlane [必需]
JoinControlPlane

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

APIEndpoint

出现在:

APIEndpoint 结构包含某节点上部署的 API 服务器的配置元素。

字段描述
advertiseAddress [必需]
string

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

bindPort [必需]
int32

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

APIServer

出现在:

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

字段描述
ControlPlaneComponent [必需]
ControlPlaneComponent
ControlPlaneComponent 结构的字段被嵌入到此类型中) 无描述。
certSANs [必需]
[]string
certSANs 设置 API 服务器签署证书所用的额外主题替代名(Subject Alternative Name,SAN)。
timeoutForControlPlane [必需]
meta/v1.Duration

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

BootstrapToken

出现在:

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 设定此令牌被用于身份认证时对应的附加用户组。

BootstrapTokenDiscovery

出现在:

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

字段描述
token [必需]
string

token 用来验证从控制面获得的集群信息。

apiServerEndpoint [必需]
string

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

caCertHashes [必需]
[]string

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

unsafeSkipCAVerification [必需]
bool

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

BootstrapTokenString

出现在:

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

字段描述
id [必需]
string
无描述
secret [必需]
string
无描述

ControlPlaneComponent

出现在:

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

字段描述
extraArgs [必需]
map[string]string

extraArgs 是要传递给控制面组件的一组额外的参数标志。 此映射中的每个键对应命令行上使用的标志名称,只是没有其引导连字符。

extraVolumes [必需]
[]HostPathMount

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

DNS

出现在:

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

字段描述
type [必需]
DNSAddOnType

type 定义要使用的 DNS 插件类型。

ImageMeta [必需]
ImageMeta
ImageMeta 的成员被内嵌到此类型中)。

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

DNSAddOnType

string 数据类型的别名)

出现在:

DNSAddOnType 定义的是用来辨识 DNS 插件类型的字符串。

Discovery

出现在:

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

字段描述
bootstrapToken [必需]
BootstrapTokenDiscovery

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

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

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

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 成员的列表。外部 etcd 需要。

caFile [必需]
string

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

certFile [必需]
string

certFile 是一个 SSL 证书文件,用来加密 etcd 通信。 如果使用 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 是 hostPath 在 Pod 内挂载的路径。

readOnly [必需]
bool

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

pathType [必需]
core/v1.HostPathType

pathType 是 hostPath 的类型。

ImageMeta

出现在:

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

字段描述
imageRepository [必需]
string

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

imageTag [必需]
string

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

JoinControlPlane

出现在:

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

字段描述
localAPIEndpoint [必需]
APIEndpoint

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

certificateKey [必需]
string

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

LocalEtcd

出现在:

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

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

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

dataDir [必需]
string

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

extraArgs [必需]
map[string]string

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

serverCertSANs [必需]
[]string

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

peerCertSANs [必需]
[]string

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

Networking

出现在:

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

字段描述
serviceSubnet [必需]
string

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

podSubnet [必需]
string

podSubnet 为 Pod 所使用的子网。

dnsDomain [必需]
string

dnsDomain 是 kubernetes 服务所使用的 DNS 域名。 默认值为 “cluster.local”。

NodeRegistrationOptions

出现在:

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),在 kubeadm init 期间,默认为控制平面节点添加控制平面污点。 如果你不想污染你的控制平面节点,可以将此字段设置为空列表(即 YAML 文件中的 taints: []), 这个字段只用于节点注册。

kubeletExtraArgs [必需]
map[string]string

kubeletExtraArgs 用来向 kubelet 传递额外参数。 这里的参数会通过 kubeadm 在运行时写入的、由 kubelet 来读取的环境文件来传递给 kubelet 命令行。 这里的设置会覆盖掉 ‘kubelet-config-1.X’ ConfigMap 中包含的一般性的配置。 命令行标志在解析时优先级更高。 这里的设置值仅作用于 kubeadm 运行所在的节点。 映射中的每个键对应命令行中的一个标志参数,只是去掉了前置的连字符。

ignorePreflightErrors [必需]
[]string

ignorePreflightErrors 提供一组在当前节点被注册时可以忽略掉的预检错误。