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 版本以来的变更列表:
+ + +APIServer.ExtraEnvs
、ControllerManager.ExtraEnvs
、
+Scheduler.ExtraEnvs
、Etcd.Local.ExtraEnvs
。
+支持在 ClusterConfiguration
下控制平面组件中的定制环境变量。ResetConfiguration
API 类型在 v1beta4 中已得到支持。
+用户可以为 kubeadm reset
指定 --config
文件来重置节点。配置 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 ++ + +
配置文件中必须包含的配置类型列表取决于你所执行的动作(init
或 join
),
+也取决于你要使用的配置选项(默认值或者高级定制)。
如果某些配置类型没有提供,或者仅部分提供,kubeadm 将使用默认值;
+kubeadm 所提供的默认值在必要时也会保证其在多个组件之间是一致的
+(例如控制器管理器上的 --cluster-cidr
参数和 kube-proxy 上的
+clusterCIDR
)。
用户总是可以覆盖默认配置值,唯一的例外是一小部分与安全性相关联的配置 +(例如在 API 服务器上强制实施 Node 和 RBAC 鉴权模式)。
+如果用户所提供的配置类型并非你所执行的操作需要的,kubeadm 会忽略这些配置类型并打印警告信息。
+ + +当带有 --config
选项来执行 kubeadm init 命令时,可以使用下面的配置类型:
+InitConfiguration
、ClusterConfiguration
、KubeProxyConfiguration
、
+KubeletConfiguration
,但 InitConfiguration
和 ClusterConfiguration
+二者之间取其一即可。
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
用来定制集群范围的设置,具体包括以下设置:
networking
:其中包含集群的网络拓扑配置。使用这一部分可以定制 Pod
+的子网或者 Service 的子网。
etcd
: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.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 ++ + +
当使用 --config
选项执行 kubeadm join
命令时,
+需要提供 JoinConfiguration 类型。
apiVersion: kubeadm.k8s.io/v1beta4 +kind: JoinConfiguration + + ... + ++ + +
JoinConfiguration 类型用来配置运行时设置,就 kubeadm join
+而言包括用来访问集群信息的发现方法,以及所有特定于 kubeadm 执行所在节点的设置,包括:
nodeRegistration
:其中包含向集群注册新节点相关的配置字段;
+使用这个类型可以定制节点名称、用使用的 CRI 套接字和所有其他仅适用于当前节点的设置
+(例如节点 IP 地址)。
apiEndpoint
:用来代表最终要部署到此节点上的 API 服务器实例的端点。
BootstrapToken 描述的是一个启动引导令牌,以 Secret 的形式存储在集群中。
+ +字段 | 描述 |
---|---|
token [必需]+ BootstrapTokenString
+ |
+
+
+
|
+
description + string
+ |
+
+
+
|
+
ttl + meta/v1.Duration
+ |
+
+
+
|
+
expires + meta/v1.Time
+ |
+
+
+
|
+
usages + []string
+ |
+
+
+
|
+
groups + []string
+ |
+
+
+
|
+
BootstrapTokenString 形式为 abcdef.abcdef0123456789
的一个令牌,
+用来从加入集群的节点角度验证 API 服务器的身份,或者 "kubeadm join"
+在节点启动引导时作为一种身份认证方法。
+此令牌的生命期是短暂的,并且应该如此。
字段 | 描述 |
---|---|
- [必需]+ string
+ |
++ + 令牌的 ID。 + | +
- [必需]+ string
+ |
++ + 令牌的私密数据。 + | +
ClusterConfiguration 包含一个 kubeadm 集群的集群范围配置信息。
+ +字段 | 描述 |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta4 |
kind string | ClusterConfiguration |
etcd + Etcd
+ |
+
+
+
|
+
networking + Networking
+ |
+
+
+
|
+
kubernetesVersion + string
+ |
+
+
+
|
+
controlPlaneEndpoint + string
+ |
+
+
+
可能的用法有: + +
|
+
apiServer + APIServer
+ |
+
+
+
|
+
controllerManager + ControlPlaneComponent
+ |
+
+
+
|
+
scheduler + ControlPlaneComponent
+ |
+
+
+
|
+
dns + DNS
+ |
+
+
+
|
+
certificatesDir + string
+ |
+
+
+
|
+
imageRepository + string
+ |
+
+
+
|
+
featureGates + map[string]bool
+ |
+
+
+
|
+
clusterName + string
+ |
+
+
+ 集群名称。 + |
+
InitConfiguration
包含一组特定于 "kubeadm init" 的运行时元素。
+
+
字段 | 描述 |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta4 |
kind string | InitConfiguration |
bootstrapTokens + []BootstrapToken
+ |
+
+
+
|
+
nodeRegistration + NodeRegistrationOptions
+ |
+
+
+
|
+
localAPIEndpoint + APIEndpoint
+ |
+
+
+
|
+
certificateKey + string
+ |
+
+
+
|
+
skipPhases + []string
+ |
+
+
+
|
+
patches + Patches
+ |
+
+
+
|
+
+ +JoinConfiguration 包含描述特定节点的元素。 +
+ +字段 | 描述 |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta4 |
kind string | JoinConfiguration |
nodeRegistration + NodeRegistrationOptions
+ |
+
+
+
+ |
+
caCertPath + string
+ |
+
+
+
+ |
+
discovery [必需]+ Discovery
+ |
+
+
+
+ |
+
controlPlane + JoinControlPlane
+ |
+
+
+
+ |
+
skipPhases + []string
+ |
+
+
+
+ |
+
patches + Patches
+ |
+
+
+
+ 此字段包含 |
+
ResetConfiguration
包含一个字段列表,这些字段是特定于 "kubeadm reset" 的运行时元素。
字段 | 描述 |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta4 |
kind string | ResetConfiguration |
cleanupTmpDir + bool
+ |
+
+
+
|
+
certificatesDir + string
+ |
+
+
+
|
+
criSocket + string
+ |
+
+
+
|
+
dryRun + bool
+ |
+
+
+
|
+
force + bool
+ |
+
+
+
|
+
ignorePreflightErrors + []string
+ |
+
+
+
|
+
skipPhases + []string
+ |
+
+
+
|
+
+
+APIEndpoint
结构包含某节点上部署的 API 服务器实例的元素。
+
字段 | 描述 |
---|---|
advertiseAddress + string
+ |
+
+
+
+ |
+
bindPort + int32
+ |
+
+
+
+ |
+
+
+APIServer
包含集群中 API 服务器部署所必需的设置。
+
字段 | 描述 |
---|---|
ControlPlaneComponent [必需]+ ControlPlaneComponent
+ |
+
+
+(ControlPlaneComponent 结构的字段被嵌入到此类型中。)
+
+ 无描述。
+ |
+
certSANs + []string
+ |
+
+
+
+ |
+
timeoutForControlPlane + meta/v1.Duration
+ |
+
+
+
+ |
+
+ +BootstrapTokenDiscovery 用来设置基于引导令牌的服务发现选项。 +
+ +字段 | 描述 |
---|---|
token [必需]+ string
+ |
+
+
+
+ |
+
apiServerEndpoint + string
+ |
+
+
+
+ |
+
caCertHashes + []string
+ |
+
+
+
+ |
+
unsafeSkipCAVerification + bool
+ |
+
+
+
+ |
+
ControlPlaneComponent 中包含对集群中所有控制平面组件都适用的设置。
+ +字段 | 描述 |
---|---|
extraArgs + map[string]string
+ |
+
+
+
+ |
+
extraVolumes + []HostPathMount
+ |
+
+
+
+ |
+
extraEnvs + []core/v1.EnvVar
+ |
+
+
+
|
+
DNS 结构定义要在集群中使用的 DNS 插件。
+ +字段 | 描述 |
---|---|
ImageMeta [必需]+ ImageMeta
+ |
+
+
+(ImageMeta 的成员被内嵌到此类型中)。
+
+
+ |
+
Discovery 设置 TLS 启动引导过程中 kubelet 要使用的配置选项。
+ +字段 | 描述 |
---|---|
bootstrapToken + BootstrapTokenDiscovery
+ |
+
+
+
+ |
+
file + FileDiscovery
+ |
+
+
+
+ |
+
tlsBootstrapToken + string
+ |
+
+
+
+ |
+
timeout + meta/v1.Duration
+ |
+
+
+
+ |
+
Etcd 包含用来描述 etcd 配置的元素。
+ +字段 | 描述 |
---|---|
local + LocalEtcd
+ |
+
+
+
+ |
+
external + ExternalEtcd
+ |
+
+
+
+ |
+
ExternalEtcd 描述外部 etcd 集群。 +kubeadm 不清楚证书文件的存放位置,因此必须单独提供证书信息。 +
+ +字段 | 描述 |
---|---|
endpoints [必需]+ []string
+ |
+
+
+
|
+
caFile [必需]+ string
+ |
+
+
+
|
+
certFile [必需]+ string
+ |
+
+
+
|
+
keyFile [必需]+ string
+ |
+
+
+
|
+
FileDiscovery 用来指定一个文件或者 URL 路径,指向一个 kubeconfig 文件; +该配置文件可用来加载集群信息。
+ +字段 | 描述 |
---|---|
kubeConfigPath [必需]+ string
+ |
+
+
+
|
+
HostPathMount 包含从宿主节点挂载的卷的信息。 + +
字段 | 描述 |
---|---|
name [必需]+ string
+ |
+
+
+
|
+
hostPath [必需]+ string
+ |
+
+
+
|
+
mountPath [必需]+ string
+ |
+
+
+
|
+
readOnly + bool
+ |
+
+
+
|
+
pathType + core/v1.HostPathType
+ |
+
+
+
|
+
ImageMeta 用来配置来源不是 Kubernetes/Kubernetes 发布过程的组件所使用的镜像。
+ +字段 | 描述 |
---|---|
imageRepository + string
+ |
+
+
+
|
+
imageTag + string
+ |
+
+
+
|
+
JoinControlPlane 包含在正在加入集群的节点上要部署的额外的控制平面组件的设置。
+ +字段 | 描述 |
---|---|
localAPIEndpoint + APIEndpoint
+ |
+
+
+
|
+
certificateKey + string
+ |
+
+
+
|
+
LocalEtcd 描述的是 kubeadm 要使用的本地 etcd 集群。
+ +字段 | 描述 |
---|---|
ImageMeta [必需]+ ImageMeta
+ |
+
+
+(ImageMeta 结构的字段被嵌入到此类型中。)
+
+ ImageMeta 允许用户为 etcd 定制要使用的容器。 + |
+
dataDir [必需]+ string
+ |
+
+
+
|
+
extraArgs + map[string]string
+ |
+
+
+
|
+
extraEnvs + []core/v1.EnvVar
+ |
+
+
+
|
+
serverCertSANs + []string
+ |
+
+
+
|
+
peerCertSANs + []string
+ |
+
+
+
|
+
Networking 中包含描述集群网络配置的元素。
+ +字段 | 描述 |
---|---|
serviceSubnet + string
+ |
+
+
+
|
+
podSubnet + string
+ |
+
+
+
|
+
dnsDomain + string
+ |
+
+
+
|
+
NodeRegistrationOptions 包含向集群中注册新的控制平面或节点所需要的信息; +节点注册可能通过 "kubeadm init" 或 "kubeadm join" 完成。
+ +字段 | 描述 |
---|---|
name + string
+ |
+
+
+
|
+
criSocket + string
+ |
+
+
+
|
+
taints [必需]+ []core/v1.Taint
+ |
+
+
+
|
+
kubeletExtraArgs + map[string]string
+ |
+
+
+
|
+
ignorePreflightErrors + []string
+ |
+
+
+
+ |
+
imagePullPolicy + core/v1.PullPolicy
+ |
+
+
+
|
+
Patches
包含要向 kubeadm 所部署的组件应用的补丁信息。
字段 | 描述 |
---|---|
directory + string
+ |
+
+
+
|
+