这是本节的多页打印视图。
点击此处打印.
返回本页常规视图.
Kubeadm
Kubeadm 是一个提供了 kubeadm init
和 kubeadm join
的工具,
作为创建 Kubernetes 集群的 “快捷途径” 的最佳实践。
kubeadm 通过执行必要的操作来启动和运行最小可用集群。
按照设计,它只关注启动引导,而非配置机器。同样的,
安装各种 “锦上添花” 的扩展,例如 Kubernetes Dashboard、
监控方案、以及特定云平台的扩展,都不在讨论范围内。
相反,我们希望在 kubeadm 之上构建更高级别以及更加合规的工具,
理想情况下,使用 kubeadm 作为所有部署工作的基准将会更加易于创建一致性集群。
如何安装
要安装 kubeadm, 请查阅
安装指南.
接下来
1 - 创建 Kubeadm
1.1 -
kubeadm:轻松创建一个安全的 Kubernetes 集群
摘要
┌──────────────────────────────────────────────────────────┐
│ KUBEADM │
│ 轻松创建一个安全的 Kubernetes 集群 │
│ │
│ 给我们反馈意见的地址: │
│ https://github.com/kubernetes/kubeadm/issues │
└──────────────────────────────────────────────────────────┘
用途示例:
创建一个有两台机器的集群,包含一个控制平面节点(用来控制集群)
和一个工作节点(运行你的 Pod 和 Deployment 等工作负载)。
┌──────────────────────────────────────────────────────────┐
│ 在第一台机器上: │
├──────────────────────────────────────────────────────────┤
│ control-plane# kubeadm init │
└──────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────┐
│ 在第二台机器上: │
├──────────────────────────────────────────────────────────┤
│ worker# kubeadm join <arguments-returned-from-init>│
└──────────────────────────────────────────────────────────┘
你可以重复第二步,向集群添加更多机器。
选项
-h, --help |
| kubeadm 操作的帮助信息。 |
--rootfs string |
| 到“真实”主机根文件系统的路径。设置此参数将导致 kubeadm 切换到所提供的路径。 |
1.2 -
处理 Kubernetes 证书的相关命令。
概要
处理 Kubernetes 证书相关的命令。
kubeadm certs [flags]
选项
从父命令继承的选项
--rootfs string |
| [实验] 到'真实'主机根文件系统的路径。 |
1.2.1 -
生成证书密钥。
概要
该命令将打印出可以与 "init" 命令一起使用的安全的随机生成的证书密钥。
你也可以使用 kubeadm init --upload-certs
而无需指定证书密钥;
此命令将为你生成并打印一个证书密钥。
kubeadm certs certificate-key [flags]
选项
-h, --help |
| certificate-key 操作的帮助命令。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.2.2 -
为一个 Kubernetes 集群检查证书的到期时间。
概要
检查 kubeadm 管理的本地 PKI 中证书的到期时间。
kubeadm certs check-expiration [flags]
选项
--allow-missing-template-keys 默认值:true |
| 如果为 true,忽略模板中缺少某字段或映射键的错误。仅适用于 golang 和 jsonpath 输出格式。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存证书的路径。 |
--config string |
| 到 kubeadm 配置文件的路径。 |
-o, --experimental-output string 默认值:"text" |
| 输出格式。可选值为:
text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。 |
-h, --help |
| check-expiration 操作的帮助命令。 |
--kubeconfig string 默认为:"/etc/kubernetes/admin.conf" |
| 在和集群连接时使用该 kubeconfig 文件。
如果此标志未被设置,那么将会在一些标准的位置去搜索存在的 kubeconfig 文件。 |
--show-managed-fields |
| 如果为 true,在以 JSON 或 YAML 格式打印对象时保留 managedFields。 |
从父命令继承的选项
--rootfs string |
| [实验] 到'真实'主机根文件系统的路径。 |
1.2.3 -
生成密钥和证书签名请求。
概要
为运行控制平面所需的所有证书生成密钥和证书签名请求(CSR)。该命令会生成部分 kubeconfig 文件,
其中 "users > user > client-key-data" 字段包含私钥数据,并为每个 kubeconfig
文件创建一个随附的 ".csr" 文件。
此命令设计用于 Kubeadm 外部 CA 模式。
它生成你可以提交给外部证书颁发机构进行签名的 CSR。
你需要使用 ".crt" 作为文件扩展名将 PEM 编码的签名证书与密钥文件一起保存。
或者,对于 kubeconfig 文件,PEM 编码的签名证书应使用 base64 编码,
并添加到 "users > user > client-certificate-data" 字段。
kubeadm certs generate-csr [flags]
示例
# 以下命令将为所有控制平面证书和 kubeconfig 文件生成密钥和 CSR:
kubeadm certs generate-csr --kubeconfig-dir /tmp/etc-k8s --cert-dir /tmp/etc-k8s/pki
选项
--cert-dir string |
| 保存证书的路径。 |
--config string |
| 到 kubeadm 配置文件的路径。 |
-h, --help |
| generate-csr 操作的帮助命令。 |
--kubeconfig-dir string 默认值:"/etc/kubernetes" |
| 保存 kubeconfig 文件的路径。 |
从父命令继承的选项
--rootfs string |
| [实验] 到'真实'主机根文件系统的路径。 |
1.2.4 -
为 Kubernetes 集群更新证书
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm certs renew [flags]
选项
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.2.5 -
续订 kubeconfig 文件中嵌入的证书,供管理员和 kubeadm 自身使用。
概要
续订 kubeconfig 文件中嵌入的证书,供管理员和 kubeadm 自身使用。
无论证书的到期日期如何,续订都是无条件进行的;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用由 kubeadm 管理的本地 PKI 中的证书机构;作为替代方案,
也可以使用 K8s 证书 API 进行证书续订,或者(作为最后一种选择)生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防证书文件在其他地方使用。
kubeadm certs renew admin.conf [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存证书的路径。 |
--config string |
| 到 kubeadm 配置文件的路径。 |
-h, --help |
| admin.conf 操作的帮助命令。 |
--kubeconfig string Default: "/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--use-api |
| 使用 Kubernetes 证书 API 续订证书。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.2.6 -
续订所有可用证书。
概要
续订运行控制平面所需的所有已知证书。续订是无条件进行的,与到期日期无关。续订也可以单独运行以进行更多控制。
kubeadm certs renew all [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| all 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--use-api |
| 使用 Kubernetes 证书 API 续订证书。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.2.7 -
续订 apiserver 用于访问 etcd 的证书。
概要
续订 apiserver 用于访问 etcd 的证书。
无论证书的到期日期如何,续订都会无条件地进行;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订尝试使用在 kubeadm 所管理的本地 PKI 中的证书颁发机构;作为替代方案,
可以使用 K8s 证书 API 进行证书更新,或者作为最后一个选择来生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew apiserver-etcd-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| apiserver-etcd-client 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.2.8 -
续订 apiserver 用于连接 kubelet 的证书。
概要
续订 apiserver 用于连接 kubelet 的证书。
无论证书的到期日期如何,续订都会无条件地进行;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订尝试使用位于 kubeadm 所管理的本地 PKI 中的证书颁发机构;作为替代方案,
也可能调用 K8s 证书 API 进行证书更新;亦或者,作为最后一个选择,生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew apiserver-kubelet-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| apiserver-kubelet-client 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--use-api |
| 使用 Kubernetes 证书 API 续订证书。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.2.9 -
续订用于提供 Kubernetes API 的证书。
概要
续订用于提供 Kubernetes API 的证书。
无论证书的到期日期如何,续订都会无条件地进行;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订尝试在 kubeadm 管理的本地 PKI 中使用证书颁发机构;作为替代方案,
可以使用 K8s 证书 API 进行证书更新,或者作为最后一个选择来生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew apiserver [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| apiserver 子操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.2.10 -
续订 kubeconfig 文件中嵌入的证书,以供控制器管理器(Controller Manager)使用。
概要
续订 kubeconfig 文件中嵌入的证书,以供控制器管理器(Controller Manager)使用。
续订无条件地进行,与证书的到期日期无关;SAN 等额外属性将基于现有的文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用 kubeadm 管理的本地 PKI 中的证书颁发机构;作为替代方案,
可以使用 K8s 证书 API 进行证书续订;亦或者,作为最后一种选择,生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew controller-manager.conf [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| controller-manager.conf 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--use-api |
| 使用 Kubernetes 证书 API 续订证书。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.2.11 -
续订存活态探针的证书,用于对 etcd 执行健康检查。
概要
续订存活态探针的证书,用于对 etcd 执行健康检查。
无论证书的到期日期如何,续订都是无条件进行的;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用由 kubeadm 管理的本地 PKI 中的证书机构;作为替代方案,
也可以使用 K8s certificate API 进行证书续订,或者(作为最后一种选择)生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防证书文件在其他地方使用。
kubeadm certs renew etcd-healthcheck-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| etcd-healthcheck-client 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.2.12 -
续订 etcd 节点间用来相互通信的证书。
概要
续订 etcd 节点间用来相互通信的证书。
无论证书的到期日期如何,续订都是无条件进行的;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用由 kubeadm 管理的本地 PKI 中的证书机构;
作为替代方案,也可以使用 K8s certificate API 进行证书续订,或者(作为最后一种选择)生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发续订的证书,以防证书文件在其他地方使用。
kubeadm certs renew etcd-peer [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| etcd-peer 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--use-api |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.2.13 -
续订用于提供 etcd 服务的证书。
概要
续订用于提供 etcd 服务的证书。
续订无条件地进行,与证书的到期日期无关;SAN 等额外属性将基于现有的文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试在 kubeadm 管理的本地 PKI 中使用证书颁发机构;作为替代方案,
可以使用 K8s 证书 API 进行证书续订,或者作为最后一种选择来生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发续订的证书,以防文件在其他地方使用。
kubeadm certs renew etcd-server [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| etcd-server 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--use-api |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.2.14 -
为前端代理客户端续订证书。
概要
为前端代理客户端续订证书。
无论证书的到期日期如何,续订都会无条件地进行;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订尝试使用位于 kubeadm 所管理的本地 PKI 中的证书颁发机构;作为替代方案,
也可以使用 K8s certificate API 进行证书续订;亦或者,作为最后一种方案,生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew front-proxy-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| front-proxy-client 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--use-api |
| 使用 Kubernetes certificate API 续订证书。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.2.15 -
续订 kubeconfig 文件中嵌入的证书,以供调度管理器使用。
概要
续订 kubeconfig 文件中嵌入的证书,以供调度管理器使用。
续订无条件地进行,与证书的到期日期无关;SAN 等额外属性将基于现有的文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用在 kubeadm 所管理的本地 PKI 中的证书颁发机构;作为替代方案,
也可以使用 K8s certificate API 进行证书续订;亦或者,作为最后一种选择,生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew scheduler.conf [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| scheduler.conf 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.2.16 -
为 super-admin 对嵌入于 kubeconfig 文件中的证书续期。
概要
为 super-admin 对嵌入于 kubeconfig 文件中的证书续期。
续期操作将无条件进行,不论证书的到期日期是何时;诸如 SAN 之类的额外属性将基于现有文件/证书,无需重新提供。
默认情况下,续期会尝试使用由 kubeadm 管理的本地 PKI 中的证书颁发机构;
作为替代方案,可以使用 K8s 证书 API 进行证书续期,或者作为最后的选项,生成一个 CSR 请求。
续期后,为了使更改生效,需要重启控制平面组件,并且如果该文件在其他地方使用,最终需要重新分发续期后的证书。
kubeadm certs renew super-admin.conf [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| super-admin.conf 的帮助信息。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| [实验性功能] 指向‘真实’宿主根文件系统的路径。 |
1.3 -
为指定的 Shell(Bash 或 Zsh)输出 Shell 补全代码。
概要
为指定的 Shell(Bash 或 Zsh)输出 Shell 补全代码。
必须激活 Shell 代码以提供交互式 kubeadm 命令补全。
这可以通过加载 .bash_profile 文件完成。
注意:此功能依赖于 bash-completion
框架。
在 Mac 上使用 Homebrew 安装:
brew install bash-completion
安装后,必须激活 bash_completion。
这可以通过在 .bash_profile 文件中添加下面的命令行来完成:
source $(brew --prefix)/etc/bash_completion
如果在 Linux 上没有安装 bash-completion
,请通过你的发行版的包管理器安装 bash-completion
软件包。
Zsh 用户注意事项:[1] Zsh 自动补全仅在 v5.2 及以上版本中支持。
kubeadm completion SHELL [flags]
示例
# 在 Mac 上使用 Homebrew 安装 bash completion
brew install bash-completion
printf "\n# Bash completion support\nsource $(brew --prefix)/etc/bash_completion\n" >> $HOME/.bash_profile
source $HOME/.bash_profile
# 将 bash 版本的 kubeadm 自动补全代码加载到当前 Shell 中
source <(kubeadm completion bash)
# 将 Bash 自动补全完成代码写入文件并且从 .bash_profile 文件加载它
printf "\n# Kubeadm shell completion\nsource '$HOME/.kube/kubeadm_completion.bash.inc'\n" >> $HOME/.bash_profile
source $HOME/.bash_profile
# 将 Zsh 版本的 kubeadm 自动补全代码加载到当前 Shell 中
source <(kubeadm completion zsh)
选项
-h, --help |
| completion 操作的帮助命令。 |
从父命令继承的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。设置此标志将导致 kubeadm 切换到所提供的路径。 |
1.4 -
管理持久化在 ConfigMap 中的 kubeadm 集群的配置。
概要
kube-system 命名空间里有一个名为 "kubeadm-config" 的 ConfigMap,kubeadm 用它来存储有关集群的内部配置。
kubeadm CLI v1.8.0+ 通过一个配置自动创建该 ConfigMap,这个配置是和 'kubeadm init' 共用的。
但是你如果使用 kubeadm v1.7.x 或更低的版本初始化集群,那么必须使用 'config upload' 命令创建此 ConfigMap。
这是必要的操作,目的是使 'kubeadm upgrade' 能够正确地配置升级后的集群。
kubeadm config [flags]
选项
-h, --help |
| config 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.4.1 -
与 kubeadm 使用的容器镜像交互
概要
与 kubeadm 使用的容器镜像交互。
kubeadm config images [flags]
选项
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.4.2 -
打印 kubeadm 要使用的镜像列表。配置文件用于自定义镜像或镜像存储库。
概要
打印 kubeadm 要使用的镜像列表。配置文件用于自定义镜像或镜像存储库。
kubeadm config images list [flags]
选项
--allow-missing-template-keys 默认值:true |
| 如果设置为 true,则在模板中缺少字段或哈希表的键时忽略模板中的任何错误。
仅适用于 golang 和 jsonpath 输出格式。 |
--config string |
| kubeadm 配置文件的路径。 |
-o, --experimental-output string 默认值:"text" |
| 输出格式:text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file 其中之一。 |
--feature-gates string |
| 一组键值对(key=value),用于描述各种特性。这些选项是: EtcdLearnerMode=true|false (BETA - 默认值=true) PublicKeysECDSA=true|false (DEPRECATED - 默认值=false) RootlessControlPlane=true|false (ALPHA - 默认值=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED - 默认值=false) WaitForAllControlPlaneComponents=true|false (ALPHA - 默认值=false) |
-h, --help |
| list 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择要从中拉取控制平面镜像的容器仓库。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择一个特定的 Kubernetes 版本。 |
--show-managed-fields |
| 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留 managedFields。 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--rootfs string |
| [实验] 到“真实”主机根文件系统的路径。 |
1.4.3 -
拉取 kubeadm 使用的镜像。
概要
拉取 kubeadm 使用的镜像。
kubeadm config images pull [flags]
选项
--config string |
| kubeadm 配置文件的路径。 |
--cri-socket string |
| 要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值;仅当安装了多个 CRI 或具有非标准 CRI 插槽时,才使用此选项。 |
--feature-gates string |
| 一系列键值对(key=value),用于描述各种特性。可选项是: EtcdLearnerMode=true|false (BETA - 默认值=true) PublicKeysECDSA=true|false (DEPRECATED - 默认值=false) RootlessControlPlane=true|false (ALPHA - 默认值=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED - 默认值=false) WaitForAllControlPlaneComponents=true|false (ALPHA - 默认值=false) |
-h, --help |
| pull 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择用于拉取控制平面镜像的容器仓库。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择一个特定的 Kubernetes 版本。 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.4.4 -
从文件中读取旧版本的 kubeadm 配置的 API 类型,并为新版本输出类似的配置对象
概要
此命令允许你在 CLI 工具中将本地旧版本的配置对象转换为最新支持的版本,而无需变更集群中的任何内容。
在此版本的 kubeadm 中,支持以下 API 版本:
因此,无论你在此处传递 --old-config 参数的版本是什么,当写入到 stdout 或 --new-config (如果已指定)时,
都会读取、反序列化、默认、转换、验证和重新序列化 API 对象。
换句话说,如果你将此文件传递给 "kubeadm init",则该命令的输出就是 kubeadm 实际上在内部读取的内容。
kubeadm config migrate [flags]
选项
-h, --help |
| migrate 操作的帮助信息。 |
--new-config string |
| 使用新的 API 版本生成的 kubeadm 配置文件的路径。这个路径是可选的。如果没有指定,输出将被写到 stdout。 |
--old-config string |
| 使用旧 API 版本且应转换的 kubeadm 配置文件的路径。此参数是必需的。 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果未设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.4.5 -
打印配置
概要
此命令打印子命令所提供的配置信息。相关细节可参阅:
https://pkg.go.dev/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm#section-directories
kubeadm config print [flags]
选项
从父命令继承而来的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如此标志未设置,将在一组标准位置中搜索现有的 kubeconfig 文件。 |
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.4.6 -
打印用于 'kubeadm init' 的默认 init 配置。
概要
此命令打印对象,例如用于 'kubeadm init' 的默认 init 配置对象。
请注意,Bootstrap Token 字段之类的敏感值已替换为 "abcdef.0123456789abcdef"
之类的占位符值以通过验证,但不执行创建令牌的实际计算。
kubeadm config print init-defaults [flags]
选项
--component-configs strings |
| 以逗号分隔的组件配置 API 对象的列表,打印其默认值。可用值:[KubeProxyConfiguration KubeletConfiguration]。
如果未设置此参数,则不会打印任何组件配置。 |
-h, --help |
| init-defaults 操作的帮助命令。 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.4.7 -
打印默认的节点添加配置,该配置可用于 'kubeadm join' 命令。
概要
此命令打印对象,例如用于 'kubeadm join' 的默认 join 配置对象。
请注意,诸如启动引导令牌字段之类的敏感值已替换为 "abcdef.0123456789abcdef" 之类的占位符值以通过验证,
但不执行创建令牌的实际计算。
kubeadm config print join-defaults [flags]
选项
-h, --help |
| join-defaults 操作的帮助命令。 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.4.8 -
打印默认的 reset 配置,该配置可用于 'kubeadm reset' 命令。
概要
此命令打印 'kubeadm reset' 所用的默认 reset 配置等这类对象。
请注意,诸如启动引导令牌(Bootstrap Token)字段这类敏感值已替换为 "abcdef.0123456789abcdef"
这类占位符值用来通过合法性检查,但不执行创建令牌的实际计算。
kubeadm config print reset-defaults [flags]
选项
-h, --help |
| reset-defaults 操作的帮助命令。 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时所使用的 kubeconfig 文件。
如果该参数未被设置,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--rootfs string |
| [试验性] 指向“真实”主机根文件系统的路径。 |
1.4.9 -
打印可用于 kubeadm upgrade
的默认升级配置。
概要
此命令打印 kubeadm upgrade
所用的默认升级配置等这类对象。
请注意,诸如启动引导令牌(Bootstrap Token)字段这类敏感值已替换为 "abcdef.0123456789abcdef"
这类占位符值用来通过合法性检查,但不执行创建令牌的实际计算。
kubeadm config print upgrade-defaults [flags]
选项
-h, --help |
| upgrade-defaults 操作的帮助命令。 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时所使用的 kubeconfig 文件。
如果该参数未被设置,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
1.4.10 -
读取包含 kubeadm 配置 API 的文件,并报告所有验证问题。
概要
这个命令允许你验证 kubeadm 配置 API 文件并报告所有警告和错误。
如果没有错误,退出状态将为零;否则,将为非零。
诸如未知 API 字段等任何解包问题都会触发错误。
未知的 API 版本和具有无效值的字段也会触发错误。
根据输入文件的内容,可能会报告任何其他错误或警告。
在这个版本的 kubeadm 中,支持以下 API 版本:
kubeadm config validate [flags]
选项
--allow-experimental-api |
| 允许验证试验性的、未发布的 API。 |
--config string |
| 指向 kubeadm 配置文件的路径。 |
-h, --help |
| validate 的帮助命令。 |
从父命令继承而来的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 在与集群通信时要使用的 kubeconfig 文件。
如果此标志未被设置,则会在一组标准位置中搜索现有的 kubeconfig 文件。 |
--rootfs string |
| [试验性] 指向“真实”主机根文件系统的路径。 |
1.5 -
运行此命令以安装 Kubernetes 控制平面。
概要
运行此命令来搭建 Kubernetes 控制平面节点。
"init" 命令执行以下阶段:
preflight 预检
certs 生成证书
/ca 生成自签名根 CA 用于配置其他 kubernetes 组件
/apiserver 生成 apiserver 的证书
/apiserver-kubelet-client 生成 apiserver 连接到 kubelet 的证书
/front-proxy-ca 生成前端代理自签名CA(扩展apiserver)
/front-proxy-client 生成前端代理客户端的证书(扩展 apiserver)
/etcd-ca 生成 etcd 自签名 CA
/etcd-server 生成 etcd 服务器证书
/etcd-peer 生成 etcd 节点相互通信的证书
/etcd-healthcheck-client 生成 etcd 健康检查的证书
/apiserver-etcd-client 生成 apiserver 访问 etcd 的证书
/sa 生成用于签署服务帐户令牌的私钥和公钥
kubeconfig 生成建立控制平面和管理所需的所有 kubeconfig 文件
/admin 生成一个 kubeconfig 文件供管理员使用以及供 kubeadm 本身使用
/super-admin 为超级管理员生成 kubeconfig 文件
/kubelet 为 kubelet 生成一个 kubeconfig 文件,*仅*用于集群引导
/controller-manager 生成 kubeconfig 文件供控制器管理器使用
/scheduler 生成 kubeconfig 文件供调度程序使用
etcd 为本地 etcd 生成静态 Pod 清单文件
/local 为本地单节点本地 etcd 实例生成静态 Pod 清单文件
control-plane 生成建立控制平面所需的所有静态 Pod 清单文件
/apiserver 生成 kube-apiserver 静态 Pod 清单
/controller-manager 生成 kube-controller-manager 静态 Pod 清单
/scheduler 生成 kube-scheduler 静态 Pod 清单
kubelet-start 写入 kubelet 设置并启动(或重启) kubelet
upload-config 将 kubeadm 和 kubelet 配置上传到 ConfigMap
/kubeadm 将 kubeadm 集群配置上传到 ConfigMap
/kubelet 将 kubelet 组件配置上传到 ConfigMap
upload-certs 将证书上传到 kubeadm-certs
mark-control-plane 将节点标记为控制面
bootstrap-token 生成用于将节点加入集群的引导令牌
kubelet-finalize 在 TLS 引导后更新与 kubelet 相关的设置
/experimental-cert-rotation 启用 kubelet 客户端证书轮换
addon 安装用于通过一致性测试所需的插件
/coredns 将 CoreDNS 插件安装到 Kubernetes 集群
/kube-proxy 将 kube-proxy 插件安装到 Kubernetes 集群
show-join-command 显示控制平面和工作节点的加入命令
kubeadm init [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| API 服务器绑定的端口。 |
--apiserver-cert-extra-sans strings |
| 用于 API Server 服务证书的可选附加主题备用名称(SAN)。可以是 IP 地址和 DNS 名称。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--certificate-key string |
| 用于加密 kubeadm-certs Secret 中的控制平面证书的密钥。
证书密钥为十六进制编码的字符串,是大小为 32 字节的 AES 密钥。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--cri-socket string |
| 要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值;
仅当安装了多个 CRI 或具有非标准 CRI 套接字时,才使用此选项。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
--feature-gates string |
| 一组用来描述各种功能特性的键值(key=value)对。选项是: EtcdLearnerMode=true|false (BETA - 默认值=true) PublicKeysECDSA=true|false (DEPRECATED - 默认值=false) RootlessControlPlane=true|false (ALPHA - 默认值=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED - 默认值=false) WaitForAllControlPlaneComponents=true|false (ALPHA - 默认值=false) |
-h, --help |
| init 操作的帮助命令。 |
--ignore-preflight-errors strings |
| 错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择用于拉取控制平面镜像的容器仓库。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择一个特定的 Kubernetes 版本。 |
--node-name string |
| 指定节点的名称。 |
--patches string |
| 它包含名为 "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" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 |
--pod-network-cidr string |
| 指明 Pod 网络可以使用的 IP 地址段。如果设置了这个参数,控制平面将会为每一个节点自动分配 CIDR。 |
--service-cidr string 默认值:"10.96.0.0/12" |
| 为服务的虚拟 IP 地址另外指定 IP 地址段。 |
--service-dns-domain string 默认值:"cluster.local" |
| 为服务另外指定域名,例如:"myorg.internal"。 |
--skip-certificate-key-print |
| 不要打印用于加密控制平面证书的密钥。 |
--skip-phases strings |
| 要跳过的阶段列表。 |
--skip-token-print |
| 跳过打印 'kubeadm init' 生成的默认引导令牌。 |
--token string |
| 这个令牌用于建立控制平面节点与工作节点间的双向通信。
格式为 [a-z0-9]{6}.[a-z0-9]{16} - 示例:abcdef.0123456789abcdef |
--token-ttl duration 默认值:24h0m0s |
| 令牌被自动删除之前的持续时间(例如 1s,2m,3h)。如果设置为 '0',则令牌将永不过期。 |
--upload-certs |
| 将控制平面证书上传到 kubeadm-certs Secret。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.1 -
使用此命令可以调用 init 工作流程的单个阶段。
概要
使用此命令可以调用 init 工作流程的单个阶段。
选项
继承于父命令的选择项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.2 -
安装必要的插件以通过一致性测试。
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm init phase addon [flags]
选项
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.3 -
安装所有插件。
概要
安装所有插件(addon)。
kubeadm init phase addon all [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,则将使用默认网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| API 服务器绑定的端口。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
--feature-gates string |
| 一组键值对(key=value),描述了各种特征。选项包括: EtcdLearnerMode=true|false (BETA - 默认值=true) PublicKeysECDSA=true|false (DEPRECATED - 默认值=false) RootlessControlPlane=true|false (ALPHA - 默认值=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED - 默认值=false) WaitForAllControlPlaneComponents=true|false (ALPHA - 默认值=false) |
-h, --help |
| all 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择用于拉取控制平面镜像的容器仓库。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
--pod-network-cidr string |
| 指定 Pod 网络的 IP 地址范围。如果已设置,控制平面将自动为每个节点分配 CIDR。 |
--service-cidr string 默认值:"10.96.0.0/12" |
| 为服务 VIP 使用 IP 地址的其他范围。 |
--service-dns-domain string 默认值:"cluster.local" |
| 为服务使用其他域名,例如 "myorg.internal"。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.4 -
将 CoreDNS 插件安装到 Kubernetes 集群。
概要
通过 API 服务器安装 CoreDNS 附加组件。请注意,即使 DNS 服务器已部署,在安装 CNI
之前 DNS 服务器不会被调度执行。
kubeadm init phase addon coredns [flags]
选项
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
--feature-gates string |
| 一组用来描述各种特性门控的键值对(key=value)。选项是: EtcdLearnerMode=true|false (BETA - 默认值=true) PublicKeysECDSA=true|false (DEPRECATED - 默认值=false) RootlessControlPlane=true|false (ALPHA - 默认值=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED - 默认值=false) WaitForAllControlPlaneComponents=true|false (ALPHA - 默认值=false) |
-h, --help |
| coredns 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择用于拉取控制平面镜像的容器仓库。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的
kubeconfig 文件。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
--print-manifest |
| 向 STDOUT 输出插件清单,而不是安装这些插件。 |
--service-cidr string 默认值:"10.96.0.0/12" |
| 为服务 VIP 选择 IP 地址范围。 |
--service-dns-domain string 默认值:"cluster.local" |
| 为服务使用其它域名,例如:"myorg.internal"。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.5 -
将 kube-proxy 插件安装到 Kubernetes 集群
概要
通过 API 服务器安装 kube-proxy 附加组件。
kubeadm init phase addon kube-proxy [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,则将使用默认网络接口。 |
--apiserver-bind-port int32 默认值: 6443 |
| API 服务器绑定的端口。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| kube-proxy 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择用于拉取控制平面镜像的容器仓库。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
--pod-network-cidr string |
| 指定 Pod 网络的 IP 地址范围。如果已设置,控制平面将自动为每个节点分配 CIDR。 |
--print-manifest |
| 向 STDOUT 打印插件清单,而非安装这些插件。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.6 -
生成用于将节点加入集群的引导令牌
概要
启动引导令牌(bootstrap token)用于在即将加入集群的节点和控制平面节点之间建立双向信任。
该命令使启动引导令牌(bootstrap token)所需的所有配置生效,然后创建初始令牌。
kubeadm init phase bootstrap-token [flags]
示例
# 进行所有引导令牌配置,并创建一个初始令牌,功能上与 kubeadm init 生成的令牌等效。
kubeadm init phase bootstrap-token
选项
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| bootstrap-token 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--skip-token-print |
| 跳过打印 'kubeadm init' 生成的默认引导令牌。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.7 -
证书生成。
概要
此命令不应单独运行。请参阅可用子命令列表。
kubeadm init phase certs [flags]
选项
从父指令中继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.8 -
生成所有证书。
概要
生成所有证书。
kubeadm init phase certs all [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,将使用默认网络接口。 |
--apiserver-cert-extra-sans strings |
| 用于 API 服务器服务证书的可选额外替代名称(SAN)。可以同时使用 IP 地址和 DNS 名称。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 证书的存储路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| all 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
--service-cidr string 默认值:"10.96.0.0/12" |
| VIP 服务使用其它的 IP 地址范围。 |
--service-dns-domain string 默认值:"cluster.local" |
| 服务使用其它的域名,例如:"myorg.internal"。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.9 -
生成 apiserver 用来访问 etcd 的证书。
概要
生成 apiserver 用于访问 etcd 的证书,并将其保存到 apiserver-etcd-client.crt 和 apiserver-etcd-client.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
kubeadm init phase certs apiserver-etcd-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 证书的存储路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| apiserver-etcd-client 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.10 -
生成供 API 服务器连接 kubelet 的证书。
概要
生成供 API 服务器连接 kubelet 的证书,并将其保存到 apiserver-kubelet-client.crt 和 apiserver-kubelet-client.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
kubeadm init phase certs apiserver-kubelet-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| apiserver-kubelet-client 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string |
| [实验] 指向宿主机上的 '实际' 根文件系统的路径。 |
1.5.11 -
生成用于服务 Kubernetes API 的证书。
概要
生成用于服务 Kubernetes API 的证书,并将其保存到 apiserver.crt 和 apiserver.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
kubeadm init phase certs apiserver [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认的网络接口。 |
--apiserver-cert-extra-sans strings |
| 用于 API Server 服务证书的可选附加主体备用名称(SAN)。可以是 IP 地址和 DNS 名称。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 证书的存储路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| apiserver 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定特定的 Kubernetes 版本。 |
--service-cidr string 默认值:"10.96.0.0/12" |
| 指定服务 VIP 可使用的其他 IP 地址段。 |
--service-dns-domain string 默认值:"cluster.local" |
| 为服务使用其他域名,例如 "myorg.internal"。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.12 -
生成自签名的 Kubernetes CA 以便为其他 Kubernetes 组件提供身份标识。
概要
生成自签名的 Kubernetes CA 以便为其他 Kubernetes 组件提供身份标识,并将其保存到 ca.crt 和 ca.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
kubeadm init phase certs ca [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 证书的存储路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| ca 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.13 -
生成用于为 etcd 设置身份的自签名 CA。
概要
生成用于为 etcd 设置身份的自签名 CA,并将其保存到 etcd/ca.crt 和 etcd/ca.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
kubeadm init phase certs etcd-ca [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 证书的存储路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| etcd-ca 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.14 -
生成用于 etcd 健康检查的活跃性探针的证书。
概要
生成用于 etcd 健康检查的活跃性探针的证书,并将其保存到 etcd/healthcheck-client.crt 和 etcd/healthcheck-client.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
kubeadm init phase certs etcd-healthcheck-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 证书存储的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| etcd-healthcheck-client 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.15 -
生成 etcd 节点相互通信的证书。
概要
生成 etcd 节点相互通信的证书,并将其保存到 etcd/peer.crt 和 etcd/peer.key 文件中。
默认 SAN 为 localhost、127.0.0.1、127.0.0.1、:: 1
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
kubeadm init phase certs etcd-peer [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| etcd-peer 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.16 -
生成用于提供 etcd 服务的证书。
概要
生成用于提供 etcd 服务的证书,并将其保存到 etcd/server.crt 和 etcd/server.key 文件中。
默认 SAN 为 localhost、127.0.0.1、127.0.0.1、:: 1
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
kubeadm init phase certs etcd-server [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| etcd-server 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.17 -
生成自签名 CA 来提供前端代理的身份。
概要
生成自签名 CA 来提供前端代理的身份,并将其保存到 front-proxy-ca.cert 和 front-proxy-ca.key 文件中。
如果两个文件都已存在,kubeadm 将跳过生成步骤并将使用现有文件。
kubeadm init phase certs front-proxy-ca [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| front-proxy-ca 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.18 -
为前端代理客户端生成证书。
概要
为前端代理客户端生成证书,并将其保存到 front-proxy-client.crt 和 front-proxy-client.key 文件中。
如果两个文件都已存在,kubeadm 将跳过生成步骤并将使用现有文件。
kubeadm init phase certs front-proxy-client [flags]
选项
--cert-dir string 默认:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| front-proxy-client 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.19 -
生成用来签署服务账号令牌的私钥及其公钥。
概要
生成用来签署服务账号令牌的私钥及其公钥,并将其保存到 sa.key 和 sa.pub 文件中。
如果两个文件都已存在,则 kubeadm 会跳过生成步骤,而将使用现有文件。
kubeadm init phase certs sa [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
-h, --help |
| sa 操作的帮助命令。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.20 -
生成建立控制平面所需的静态 Pod 清单文件。
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm init phase control-plane [flags]
选项
-h, --help |
| control-plane 操作的帮助命令。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.21 -
生成所有静态 Pod 清单文件。
概要
生成所有的静态 Pod 清单文件。
kubeadm init phase control-plane all [flags]
示例
# 为控制平面组件生成静态 Pod 清单文件,其功能等效于 kubeadm init 生成的文件。
kubeadm init phase control-plane all
# 使用从某配置文件中读取的选项为生成静态 Pod 清单文件。
kubeadm init phase control-plane all --config config.yaml
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,将使用默认的网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| API 服务器要绑定的端口。 |
--apiserver-extra-args <逗号分割的 'key=value' 对> |
| 形式为 <flagname>=<value> 的一组额外参数,用来传递给 API 服务器,
或者覆盖其默认配置值。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面选择一个稳定的 IP 地址或者 DNS 名称。 |
--controller-manager-extra-args <逗号分割的 'key=value' 对> |
| 一组形式为 <flagname>=<value> 的额外参数,用来传递给控制管理器(Controller Manager)
或覆盖其默认设置值。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
--feature-gates string |
| 一组用来描述各种特性门控的键值(key=value)对。选项是: EtcdLearnerMode=true|false (BETA - 默认值=true) PublicKeysECDSA=true|false (DEPRECATED - 默认值=false) RootlessControlPlane=true|false (ALPHA - 默认值=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED - 默认值=false)
WaitForAllControlPlaneComponents=true|false (ALPHA - 默认值=false) |
-h, --help |
| all 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择用于拉取控制平面镜像的容器仓库。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择指定的 Kubernetes 版本。 |
--patches string |
| 包含名为 "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" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 |
--pod-network-cidr string |
| 指定 Pod 网络的 IP 地址范围。如果设置了此标志,控制平面将自动地为每个节点分配 CIDR。 |
--scheduler-extra-args <逗号分割的 'key=value' 对> |
| 一组形式为 <flagname>=<value> 的额外参数,用来传递给调度器(Scheduler)
或覆盖其默认设置值。 |
--service-cidr string 默认值:"10.96.0.0/12" |
| 为服务 VIP 选择 IP 地址范围。 |
从父指令继承的选项
--rootfs string |
| [实验] 指向'真实'宿主机的根文件系统的路径。 |
1.5.22 -
生成 kube-apiserver 静态 Pod 清单。
概要
生成 kube-apiserver 静态 Pod 清单。
kubeadm init phase control-plane apiserver [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,将使用默认网络接口。 |
--apiserver-bind-port int32 默认值: 6443 |
| 要绑定到 API 服务器的端口。 |
--apiserver-extra-args <逗号分隔的 'key=value' 对> |
| 一组 <flagname>=<value> 形式的额外参数,用来传递给 API
服务器或者覆盖其默认参数配置。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
--feature-gates string |
| 一组键值对,用于描述各种功能特性的特性门控。选项是: EtcdLearnerMode=true|false (BETA - 默认值=true) PublicKeysECDSA=true|false (DEPRECATED - 默认值=false) RootlessControlPlane=true|false (ALPHA - 默认值=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED - 默认值=false) WaitForAllControlPlaneComponents=true|false (ALPHA - 默认值=false) |
-h, --help |
| apiserver 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择要从中拉取控制平面镜像的容器仓库。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
--patches string |
| 包含名为 "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" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 |
--service-cidr string 默认值:"10.96.0.0/12" |
| 指定服务 VIP 使用 IP 地址的其他范围。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统路径。 |
1.5.23 -
生成 kube-controller-manager 静态 Pod 清单。
概要
生成 kube-controller-manager 静态 Pod 清单。
kubeadm init phase control-plane controller-manager [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--controller-manager-extra-args <comma-separated 'key=value' pairs> |
| 一组 <flagname>=< 形式的额外参数,传递给控制器管理器(Controller Manager)
或者覆盖其默认配置值 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| controller-manager 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.ioo" |
| 选择要从中拉取控制平面镜像的容器仓库。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
--patches string |
| 包含名为 "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
所支持的 patch 格式相匹配。默认的 "patchtype" 是 "strategic"。
"extension" 必须是 "json" 或 "yaml"。
"suffix" 是一个可选的字符串,用来确定按字母顺序排序时首先应用哪些 patch。 |
--pod-network-cidr string |
| 指定 Pod 网络的 IP 地址范围。如果设置,控制平面将自动为每个节点分配 CIDR。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.24 -
生成 kube-scheduler 静态 Pod 清单。
概要
生成 kube-scheduler 静态 Pod 清单。
kubeadm init phase control-plane scheduler [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| scheduler 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择要从中拉取控制平面镜像的容器仓库。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
--patches string |
| 包含名为 "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
所支持的 patch 格式相匹配。默认的 "patchtype" 是 "strategic"。
"extension" 必须是 "json" 或 "yaml"。
"suffix" 是一个可选的字符串,用来确定按字母顺序排序时首先应用哪些 patch。 |
--scheduler-extra-args <逗号分隔的 'key=value' 键值对> |
| 一组 <flagname>=<value> 形式的额外参数,用来传递给调度器或者覆盖其默认参数配置。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.25 -
为本地 etcd 生成静态 Pod 的清单文件。
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm init phase etcd [flags]
选项
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.26 -
为本地单节点 etcd 实例生成静态 Pod 清单文件。
概要
为本地单节点 etcd 实例生成静态 Pod 清单文件。
kubeadm init phase etcd local [flags]
示例
# 为 etcd 生成静态 Pod 清单文件,其功能等效于 kubeadm init 生成的文件。
kubeadm init phase etcd local
# 使用从配置文件读取的选项为 etcd 生成静态 Pod 清单文件。
kubeadm init phase etcd local --config config.yaml
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| local 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择要从中拉取控制平面镜像的容器仓库。 |
--patches string |
| 包含名为 "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" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.27 -
生成所有建立控制平面和管理员(admin)所需的 kubeconfig 文件。
概要
此命令并非设计用来单独运行。请阅读可用子命令列表。
kubeadm init phase kubeconfig [flags]
选项
-h, --help |
| kubeconfig 操作的帮助命令 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.28 -
为管理员(admin)和 kubeadm 本身生成 kubeconfig 文件。
概要
为管理员和 kubeadm 本身生成 kubeconfig 文件,并将其保存到 admin.conf 文件中。
kubeadm init phase kubeconfig admin [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认的网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| 要绑定到 API 服务器的端口。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| admin 操作的帮助命令。 |
--kubeconfig-dir string 默认值:"/etc/kubernetes" |
| kubeconfig 文件的保存路径。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.29 -
生成所有 kubeconfig 文件。
概要
生成所有 kubeconfig 文件。
kubeadm init phase kubeconfig all [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果没有设置,将使用默认的网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| 要绑定到 API 服务器的端口。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| all 操作的帮助命令。 |
--kubeconfig-dir string 默认值:"/etc/kubernetes" |
| kubeconfig 文件的保存路径。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定特定的 Kubernetes 版本。 |
--node-name string |
| 指定节点名称。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.30 -
生成控制器管理器要使用的 kubeconfig 文件。
概要
生成控制器管理器要使用的 kubeconfig 文件,并保存到 controller-manager.conf 文件中。
kubeadm init phase kubeconfig controller-manager [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认的网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| 要绑定到 API 服务器的端口。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 | --dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| controller-manager 操作的帮助命令。 |
--kubeconfig-dir string 默认值:"/etc/kubernetes" |
| kubeconfig 文件的保存路径。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs 字符串 |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.31 -
为 kubelet 生成一个 kubeconfig 文件,仅仅用于集群引导目的。
概要
生成 kubelet 要使用的 kubeconfig 文件,并将其保存到 kubelet.conf 文件。
请注意,该操作目的是仅用于引导集群。在控制平面启动之后,应该从 CSR API 请求所有 kubelet 凭据。
kubeadm init phase kubeconfig kubelet [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认的网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| 要绑定到 API 服务器的端口。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| kubelet 操作的帮助命令。 |
--kubeconfig-dir string 默认值:"/etc/kubernetes" |
| kubeconfig 文件的保存路径。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
--node-name string |
| 指定节点的名称。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.32 -
生成调度器使用的 kubeconfig 文件。
概要
生成调度器(scheduler)要使用的 kubeconfig 文件,并保存到 scheduler.conf 文件中。
kubeadm init phase kubeconfig scheduler [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认的网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| 要绑定到 API 服务器的端口。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| scheduler 操作的帮助命令。 |
--kubeconfig-dir string 默认值:"/etc/kubernetes" |
| kubeconfig 文件的保存路径。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.33 -
为 super-admin 生成一个 kubeconfig 文件。
概要
为 super-admin 生成一个 kubeconfig 文件,并将其保存到 super-admin.conf 文件中。
kubeadm init phase kubeconfig super-admin [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布其监听的 IP 地址。如果未设置,则使用默认的网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| API 服务器绑定的端口。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| super-admin 的帮助信息。 |
--kubeconfig-dir string 默认值:"/etc/kubernetes" |
| 保存 kubeconfig 文件的路径。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定一个特定的 Kubernetes 版本。 |
从父命令继承的选项
--rootfs string |
| [实验性功能] 指向‘真实’宿主根文件系统的路径。 |
1.5.34 -
TLS 引导后更新与 kubelet 相关的设置
概要
TLS 引导后更新与 kubelet 相关的设置
kubeadm init phase kubelet-finalize [flags]
示例
# 在 TLS 引导后更新与 kubelet 相关的设置
kubeadm init phase kubelet-finalize all --config
选项
-h, --help |
| kubelet-finalize 操作的帮助命令 |
继承于父命令的选项
--rootfs string |
| [实验] 到'真实'主机根文件系统的路径。 |
1.5.35 -
运行 kubelet-finalize 的所有阶段
概要
运行 kubelet-finalize 的所有阶段
kubeadm init phase kubelet-finalize all [flags]
示例
# 在 TLS 引导后更新与 kubelet 相关的设置
kubeadm init phase kubelet-finalize all --config
选项
--cert-dir string 默认值: "/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| all 操作的帮助命令 |
继承于父命令的选项
--rootfs string |
| [实验] 到'真实'主机根文件系统的路径。 |
1.5.36 -
启用 kubelet 客户端证书轮换
概要
启用 kubelet 客户端证书轮换
kubeadm init phase kubelet-finalize enable-client-cert-rotation [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| enable-client-cert-rotation 操作的帮助命令 |
继承于父命令的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
1.5.37 -
启用 kubelet 客户端证书轮换
概要
启用 kubelet 客户端证书轮换
kubeadm init phase kubelet-finalize experimental-cert-rotation [flags]
选项
--cert-dir string Default: "/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| experimental-cert-rotation 操作的帮助命令 |
继承于父命令的选项
--rootfs string |
| [实验] 到'真实'主机根文件系统的路径。 |
1.5.38 -
编写 kubelet 配置并(重新)启动 kubelet
概要
使用 kubelet 配置文件编写一个文件,并使用特定节点的 kubelet 设置编写一个环境文件,然后(重新)启动 kubelet。
kubeadm init phase kubelet-start [flags]
示例
# 将来自 InitConfiguration 文件中的 kubelet 参数写入一个动态环境文件。
kubeadm init phase kubelet-start --config config.yaml
选项
--config string |
| kubeadm 配置文件的路径。 |
--cri-socket string |
| 连接到 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测该值;仅当安装了多个 CRI 或具有非标准 CRI 套接字时,才使用此选项。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| kubelet-start 操作的帮助命令 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择一个容器镜像仓库来从中拉取控制平面组件的镜像 |
--node-name string |
| 指定节点名称。 |
--patches string |
| 目录路径,指向包含名为 “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" 是一个可选字符串,可用于确定按字母顺序首先应用哪些补丁。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.39 -
标记节点为控制平面节点。
概要
标记节点为控制平面节点。
kubeadm init phase mark-control-plane [flags]
示例
# 将控制平面标签和污点应用于当前节点,其功能等效于 kubeadm init 执行的操作
kubeadm init phase mark-control-plane --config config.yaml
# 将控制平面标签和污点应用于特定节点
kubeadm init phase mark-control-plane --node-name myNode
选项
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| mark-control-plane 操作的帮助命令。 |
--node-name string |
| 指定节点名称。 |
从父命令继承的选项
--rootfs 字符串 |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.40 -
运行预检。
概要
运行 kubeadm init 前的预检。
kubeadm init phase preflight [flags]
示例
# 使用配置文件对 kubeadm init 进行预检
kubeadm init phase preflight --config kubeadm-config.yaml
选项
--config string |
| kubeadm 配置文件的路径。 |
--cri-socket string |
| 要连接的 CRI 套接字的路径。如果该值为空,kubeadm 将尝试自动检测;
仅当你安装了多个 CRI 或使用非标准的 CRI 套接字时才应使用此选项。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| preflight 操作的帮助命令。 |
--ignore-preflight-errors strings |
| 错误将显示为警告的检查列表。例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择拉取控制平面镜像的容器仓库。 |
继承于父命令的选项
--rootfs string |
| [实验] 到'真实'主机根文件系统的路径。 |
1.5.41 -
显示针对控制平面和工作节点的 join 命令。
概要
显示针对控制平面和工作节点的 join 命令。
kubeadm init phase show-join-command [flags]
选项
-h, --help |
| show-join-command 操作的帮助命令。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.42 -
将证书上传到 kubeadm-certs。
概要
将控制平面证书上传到 kubeadm-certs Secret。
kubeadm init phase upload-certs [flags]
选项
--certificate-key string |
| 用于加密 kubeadm-certs Secret 中的控制平面证书的密钥。
证书密钥是十六进制编码的字符串,是大小为 32 字节的 AES 密钥。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| upload-certs 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用来与集群通信的 kubeconfig 文件。
如果此标志未设置,则可以在一组标准的位置搜索现有的 kubeconfig 文件。 |
--skip-certificate-key-print |
| 不要打印输出用于加密控制平面证书的密钥。 |
--upload-certs |
| 将控制平面证书上传到 kubeadm-certs Secret。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.43 -
上传 kubeadm 和 kubelet 配置到 ConfigMap 中。
概要
此命令并非设计用来单独运行。请参阅可用的子命令列表。
kubeadm init phase upload-config [flags]
选项
-h, --help |
| upload-config 操作的帮助命令。 |
从父命令中继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.44 -
将所有配置上传到 ConfigMap。
概要
将所有配置上传到 ConfigMap
kubeadm init phase upload-config all [flags]
选项
--config string |
| kubeadm 配置文件的路径。 |
--cri-socket string |
| 要连接的 CRI 套接字的路径。如果该值为空,kubeadm 将尝试自动检测;
仅当你安装了多个 CRI 或使用非标准的 CRI 套接字时才应使用此选项。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| all 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.45 -
将 kubeadm ClusterConfiguration 上传到 ConfigMap。
概要
将 kubeadm ClusterConfiguration 上传到 kube-system 命名空间中名为 kubeadm-config 的 ConfigMap 中。
这样就可以正确配置系统组件,并在升级时提供无缝的用户体验。
另外,可以使用 kubeadm 配置。
kubeadm init phase upload-config kubeadm [flags]
示例
# 上传集群配置
kubeadm init phase upload-config --config=myConfig.yaml
选项
--config string |
| kubeadm 配置文件的路径。 |
--cri-socket string |
| 要连接的 CRI 套接字的路径。如果该值为空,kubeadm 将尝试自动检测;
仅当你安装了多个 CRI 或使用非标准的 CRI 套接字时才应使用此选项。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| kubeadm 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.5.46 -
将 kubelet 组件配置上传到 ConfigMap。
概要
将从 kubeadm InitConfiguration 对象提取的 kubelet 配置上传到集群中的
kubelet-config
ConfigMap。
kubeadm init phase upload-config kubelet [flags]
示例
# 将 kubelet 配置从 kubeadm 配置文件上传到集群中的 ConfigMap。
kubeadm init phase upload-config kubelet --config kubeadm.yaml
选项
--config string |
| 到 kubeadm 配置文件的路径。 |
--cri-socket string |
| 要连接的 CRI 套接字的路径。如果该值为空,kubeadm 将尝试自动检测;
仅当你安装了多个 CRI 或使用非标准的 CRI 套接字时才应使用此选项。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| kubelet 操作的帮助命令。 |
-- kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该标签,
则可以通过一组标准路径来寻找已有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.6 -
在你希望加入现有集群的任何机器上运行它。
摘要
当节点加入 kubeadm 初始化的集群时,我们需要建立双向信任。
这个过程可以分解为发现(让待加入节点信任 Kubernetes 控制平面节点)和
TLS 引导(让 Kubernetes 控制平面节点信任待加入节点)两个部分。
有两种主要的发现方案。
第一种方案是使用共享令牌和 API 服务器的 IP 地址。
第二种是以文件形式提供标准 kubeconfig 文件的一个子集。
发现/kubeconfig 文件支持令牌、client-go 鉴权插件(“exec”)、“tokenFile" 和
"authProvider"。该文件可以是本地文件,也可以通过 HTTPS URL 下载。
格式是 kubeadm join --discovery-token abcdef.1234567890abcdef 1.2.3.4:6443
、
kubeadm join --discovery-file path/to/file.conf
或者
kubeadm join --discovery-file https://url/file.conf
。
只能使用其中一种。
如果发现信息是从 URL 加载的,必须使用 HTTPS。
此外,在这种情况下,主机安装的 CA 包用于验证连接。
如果使用共享令牌进行发现,还应该传递 --discovery-token-ca-cert-hash 参数来验证
Kubernetes 控制平面节点提供的根证书颁发机构(CA)的公钥。
此参数的值指定为 "<hash-type>:<hex-encoded-value>",
其中支持的哈希类型为 "sha256"。哈希是通过 Subject Public Key Info(SPKI)对象的字节计算的(如 RFC7469)。
这个值可以从 "kubeadm init" 的输出中获得,或者可以使用标准工具进行计算。
可以多次重复 --discovery-token-ca-cert-hash 参数以允许多个公钥。
如果无法提前知道 CA 公钥哈希,则可以通过 --discovery-token-unsafe-skip-ca-verification 参数禁用此验证。
这削弱了 kubeadm 安全模型,因为其他节点可能会模仿 Kubernetes 控制平面节点。
TLS 引导机制也通过共享令牌驱动。
这用于向 Kubernetes 控制平面节点进行临时的身份验证,以提交本地创建的密钥对的证书签名请求(CSR)。
默认情况下,kubeadm 将设置 Kubernetes 控制平面节点自动批准这些签名请求。
这个令牌通过 --tls-bootstrap-token abcdef.1234567890abcdef 参数传入。
通常两个部分会使用相同的令牌。
在这种情况下可以使用 --token 参数,而不是单独指定每个令牌。
"join [api-server-endpoint]" 命令执行下列阶段:
- preflight:运行接入前检查
- control-plane-prepare:准备用作控制平面的机器
- download-certs:[实验] 从 kubeadm-certs Secret 下载控制平面节点之间共享的证书
- certs:为新的控制平面组件生成证书
- kubeconfig:为新的控制平面组件生成 kubeconfig
- control-plane:生成新控制平面组件的清单
- kubelet-start:写入 kubelet 设置、证书并(重新)启动 kubelet
- control-plane-join:将机器加入为控制平面实例
- etcd:添加新的本地 etcd 成员
- update-status:将新的控制平面节点注册到 kubeadm-config ConfigMap 中维护的 ClusterStatus 中(已弃用)
- mark-control-plane:将节点标记为控制平面
- wait-control-plane:[实验] 等待控制平面启动
kubeadm join [api-server-endpoint] [flags]
选项
--apiserver-advertise-address string |
| 如果该节点托管一个新的控制平面实例,则 API 服务器将公布其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 |
--apiserver-bind-port int32 默认值: 6443 |
| 如果节点应该托管新的控制平面实例,则为 API 服务器要绑定的端口。 |
--certificate-key string |
| 使用此密钥可以解密由 init 上传的证书 Secret。
证书密钥为一个十六进制编码的字符串,它是大小为 32 字节的 AES 密钥。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--cri-socket string |
| 要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值;
仅当安装了多个 CRI 或存在非标准的 CRI 套接字时,才使用此选项。 |
--discovery-file string |
| 对于基于文件的发现,给出用于加载集群信息的文件或者 URL。 |
--discovery-token string |
| 对于基于令牌的发现,该令牌用于验证从 API 服务器获取的集群信息。 |
--discovery-token-ca-cert-hash stringSlice |
| 对基于令牌的发现,验证根 CA 公钥是否与此哈希匹配 (格式:"<type>:<value>")。 |
--discovery-token-unsafe-skip-ca-verification |
| 对于基于令牌的发现,允许在未关联 --discovery-token-ca-cert-hash 参数的情况下添加节点。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| join 操作的帮助命令。 |
--ignore-preflight-errors strings |
| 错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 |
--node-name string |
| 指定节点的名称。 |
--patches string |
| 包含名为 "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" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 |
--skip-phases strings |
| 要跳过的阶段列表。 |
--tls-bootstrap-token string |
| 指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 |
--token string |
| 如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.6.1 -
使用此命令来调用 join
工作流程的某个阶段。
概要
使用此命令来调用 join
工作流程的某个阶段。
选项
从父命令中继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.6.2 -
添加作为控制平面实例的机器。
概要
添加作为控制平面实例的机器。
kubeadm join phase control-plane-join [flags]
示例
# 将机器作为控制平面实例加入
kubeadm join phase control-plane-join all
选项
-h, --help |
| control-plane-join 操作的帮助命令。 |
从父命令中继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.6.3 -
添加作为控制平面实例的机器。
概要
添加作为控制平面实例的机器。
kubeadm join phase control-plane-join all [flags]
选项
--apiserver-advertise-address string |
| 如果该节点托管一个新的控制平面实例,则 API 服务器将公布其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| all 操作的帮助命令。 |
--node-name string |
| 指定节点名称。 |
--patches string |
| 包含名为 “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” 是一个可选字符串,可用于基于字母数字顺序确定首先应用哪些补丁。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.6.4 -
添加一个新的本地 etcd 成员。
概要
添加新的本地 etcd 成员。
kubeadm join phase control-plane-join etcd [flags]
选项
--apiserver-advertise-address string |
| 如果该节点托管一个新的控制平面实例,则 API 服务器将公布其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| etcd 操作的帮助命令。 |
--node-name string |
| 指定节点的名称。 |
--patches string |
| 包含名为 “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” 是一个可选字符串,可用于基于字母数字顺序确定首先应用哪些补丁。 |
从父命令中继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.6.5 -
将节点标记为控制平面节点。
概要
将节点标记为控制平面节点。
kubeadm join phase control-plane-join mark-control-plane [flags]
选项
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| mark-control-plane 操作的帮助命令。 |
--node-name string |
| 指定节点的名称。 |
从父命令中继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.6.6 -
准备为控制平面服务的机器。
概要
准备为控制平面服务的机器。
kubeadm join phase control-plane-prepare [flags]
示例
# 准备为控制平面服务的机器
kubeadm join phase control-plane-prepare all
选项
-h, --help |
| control-plane-prepare 操作的帮助命令。 |
从父命令中继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.6.7 -
准备为控制平面服务的机器。
概要
准备为控制平面服务的机器。
kubeadm join phase control-plane-prepare all [api-server-endpoint] [flags]
选项
--apiserver-advertise-address string |
| 如果该节点托管一个新的控制平面实例,则 API 服务器将公布其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| 如果该节点托管一个新的控制平面实例,则为 API 服务器要绑定的端口。 |
--certificate-key string |
| 使用此密钥解密由 init 上传的证书 Secret。
证书密钥是十六进制编码的字符串,是大小为 32 字节的 AES 密钥。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--discovery-file string |
| 对于基于文件的发现,给出用于加载集群信息的文件或者 URL。 |
--discovery-token string |
| 对于基于令牌的发现,该令牌用于验证从 API 服务器获取的集群信息。 |
--discovery-token-ca-cert-hash strings |
| 对于基于令牌的发现,请验证根 CA 公钥是否匹配此哈希值(格式:"<type>:<value>")。 |
--discovery-token-unsafe-skip-ca-verification |
| 对于基于令牌的发现,允许在未关联 --discovery-token-ca-cert-hash 参数的情况下添加节点。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| all 操作的帮助命令。 |
--node-name string |
| 指定节点名称。 |
--patches string |
| 包含名为 “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” 是一个可选字符串,可用于基于字母数字顺序确定首先应用哪些补丁。 |
--tls-bootstrap-token string |
| 指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 |
--token string |
| 如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.6.8 -
为新的控制平面组件生成证书。
概要
为新的控制平面组件生成证书。
kubeadm join phase control-plane-prepare certs [api-server-endpoint] [flags]
选项
--apiserver-advertise-address string |
| 如果该节点托管一个新的控制平面实例,则 API 服务器将公布其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--discovery-file string |
| 对于基于文件的发现,给出用于加载集群信息的文件或者 URL。 |
--discovery-token string |
| 对于基于令牌的发现,该令牌用于验证从 API 服务器获取的集群信息。 |
--discovery-token-ca-cert-hash strings |
| 对于基于令牌的发现,请验证根 CA 公钥是否匹配此哈希值(格式:"<type>:<value>")。 |
--discovery-token-unsafe-skip-ca-verification |
| 对于基于令牌的发现,允许在未关联 --discovery-token-ca-cert-hash 参数的情况下添加节点。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| certs 操作的帮助命令。 |
--node-name string |
| 指定节点名称。 |
--tls-bootstrap-token string |
| 指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 |
--token string |
| 如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.6.9 -
为新的控制平面组件生成清单。
概要
为新的控制平面组件生成清单(manifest)。
kubeadm join phase control-plane-prepare control-plane [flags]
选项
--apiserver-advertise-address string |
| 对于将要托管新的控制平面实例的节点,指定 API 服务器将公布的其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| 针对将要托管新的控制平面实例的节点,设置 API 服务器要绑定的端口。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| control-plane 操作的帮助命令。 |
--patches string |
| 包含名为 "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" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 |
从父命令中继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.6.10 -
[实验] 从 kubeadm-certs Secret 下载控制平面节点之间共享的证书。
概要
[实验] 从 kubeadm-certs Secret 下载控制平面节点之间共享的证书。
kubeadm join phase control-plane-prepare download-certs [api-server-endpoint] [flags]
选项
--certificate-key string |
| 使用此密钥可以解密由 init 上传的证书 Secret。
证书密钥为一个十六进制编码的字符串,是大小为 32 字节的 AES 密钥。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--discovery-file string |
| 对于基于文件的发现,给出用于加载集群信息的文件或者 URL。 |
--discovery-token string |
| 对于基于令牌的发现,该令牌用于验证从 API 服务器获取的集群信息。 |
--discovery-token-ca-cert-hash stringSlice |
| 对于基于令牌的发现,请验证根 CA 公钥是否匹配此哈希值(格式:"<type>:<value>")。 |
--discovery-token-unsafe-skip-ca-verification |
| 对于基于令牌的发现,允许在未关联 --discovery-token-ca-cert-hash 参数的情况下添加节点。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| download-certs 操作的帮助命令。 |
--tls-bootstrap-token string |
| 指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 |
--token string |
| 如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令中继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.6.11 -
为新的控制平面组件生成 kubeconfig。
概要
为新的控制平面组件生成 kubeconfig。
kubeadm join phase control-plane-prepare kubeconfig [api-server-endpoint] [flags]
选项
--certificate-key string |
| 使用此密钥可以解密由 init 上传的证书 Secret。
证书密钥为一个十六进制编码的字符串,它是大小为 32 字节的 AES 密钥。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--discovery-file string |
| 对于基于文件的发现,给出用于加载集群信息的文件或者 URL。 |
--discovery-token string |
| 对于基于令牌的发现,该令牌用于验证从 API 服务器获取的集群信息。 |
--discovery-token-ca-cert-hash stringSlice |
| 对于基于令牌的发现,请验证根 CA 公钥是否匹配此哈希值(格式:"<type>:<value>")。 |
--discovery-token-unsafe-skip-ca-verification |
| 对于基于令牌的发现,允许在未关联 --discovery-token-ca-cert-hash 参数的情况下添加节点。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| kubeconfig 操作的帮助命令。 |
--tls-bootstrap-token string |
| 指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 |
--token string |
| 如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令中继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.6.12 -
配置 kubelet、证书并(重新)启动 kubelet。
概要
生成一个包含 KubeletConfiguration 的文件和一个包含特定于节点的 kubelet 配置的环境文件,然后(重新)启动 kubelet。
kubeadm join phase kubelet-start [api-server-endpoint] [flags]
选项
--config string |
| kubeadm 配置文件的路径。 |
--cri-socket string |
| 提供给 CRI 套接字建立连接的路径。如果为空,则 kubeadm 将尝试自动检测该值;
仅当安装了多个 CRI 或存在非标准的 CRI 套接字时,才使用此选项。 |
--discovery-file string |
| 对于基于文件的发现,给出用于加载集群信息的文件或者 URL。 |
--discovery-token string |
| 对于基于令牌的发现,该令牌用于验证从 API 服务器获取的集群信息。 |
--discovery-token-ca-cert-hash stringSlice |
| 对于基于令牌的发现,验证根 CA 公钥是否匹配此哈希值(格式:"<type>:<value>")。 |
--discovery-token-unsafe-skip-ca-verification |
| 对于基于令牌的发现,允许在未关联 --discovery-token-ca-cert-hash 参数的情况下添加节点。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| kubelet-start 操作的帮助命令。 |
--node-name string |
| 指定节点名称。 |
--patches string |
| 目录路径,指向的目录中包含名为 “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" 是一个可选字符串,可用于确定按字母顺序首先应用哪些补丁。 |
--tls-bootstrap-token string |
| 指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 |
--token string |
| 如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.6.13 -
运行 join 命令前检查。
概要
运行 kubeadm join 命令添加节点前检查。
kubeadm join phase preflight [api-server-endpoint] [flags]
示例
# 使用配置文件运行 kubeadm join 命令添加节点前检查。
kubeadm join phase preflight --config kubeadm-config.yaml
选项
--apiserver-advertise-address string |
| 对于将要托管新的控制平面实例的节点,指定 API 服务器将公布的其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| 针对将要托管新的控制平面实例的节点,设置 API 服务器要绑定的端口。 |
--certificate-key string |
| 使用此密钥可以解密由 `init` 操作上传的证书 Secret。
证书密钥为十六进制编码的字符串,是大小为 32 字节的 AES 密钥。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--cri-socket string |
| 提供给 CRI 套接字建立连接的路径。如果为空,则 kubeadm 将尝试自动检测该值;
仅当安装了多个 CRI 或存在非标准的 CRI 套接字时,才使用此选项。 |
--discovery-file string |
| 对于基于文件的发现,给出用于加载集群信息的文件或者 URL。 |
--discovery-token string |
| 对于基于令牌的发现,该令牌用于验证从 API 服务器获取的集群信息。 |
--discovery-token-ca-cert-hash strings |
| 对于基于令牌的发现,验证根 CA 公钥是否匹配此哈希值(格式:"<type>:<value>")。 |
--discovery-token-unsafe-skip-ca-verification |
| 对于基于令牌的发现,允许在未关联 --discovery-token-ca-cert-hash 参数的情况下添加节点。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| preflight 操作的帮助命令。 |
--ignore-preflight-errors stringSlice |
| 错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 |
--node-name string |
| 指定节点名称。 |
--tls-bootstrap-token string |
| 指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 |
--token string |
| 如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.6.14 -
实验特性:等待控制平面启动
概要
实验特性:等待控制平面启动
kubeadm join phase wait-control-plane [flags]
选项
-h, --help |
| wait-control-plane 操作的帮助命令。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
1.7 -
kubeconfig 文件工具。
概要
kubeconfig 文件工具。
选项
-h, --help |
| kubeconfig 操作的帮助命令。 |
从父命令继承的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。设置此标志将导致 kubeadm 切换到所提供的路径。 |
1.7.1 -
为其他用户输出一个 kubeconfig 文件。
概要
为其他用户输出一个 kubeconfig 文件。
kubeadm kubeconfig user [flags]
示例
# 为一个名为 foo 的其他用户输出 kubeconfig 文件
kubeadm kubeconfig user --client-name=foo
# 使用 kubeadm 配置文件 bar 为另一个名为 foo 的用户输出 kubeconfig 文件
kubeadm alpha kubeconfig user --client-name=foo --config=bar
选项
--client-name string |
| 用户名。如果生成客户端证书,则用作其 CN。 |
--config string |
| 指向 kubeadm 配置文件的路径。 |
-h, --help |
| user 操作的帮助命令。 |
--org strings |
| 客户端证书的组织。如果创建客户端证书,此值将用作其 O 字段值。 |
--token string |
| 应该用此令牌做为 kubeconfig 的身份验证机制,而不是客户端证书。 |
--validity-period duration Default: 8760h0m0s |
| 客户证书的合法期限。所设置值为相对当前时间的偏移。 |
从父命令继承的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。设置此标志将导致 kubeadm 切换到所提供的路径。 |
1.8 -
尽最大努力还原通过 'kubeadm init' 或者 'kubeadm join' 操作对主机所作的更改。
概要
尽最大努力还原通过 'kubeadm init' 或者 'kubeadm join' 操作对主机所作的更改。
"reset" 命令执行以下阶段:
preflight 重置预检
remove-etcd-member 移除本地 etcd 成员
cleanup-node 清理节点
kubeadm reset [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的目录路径。如果已指定,则需要清空此目录。 |
--cleanup-tmp-dir |
| 清理 "/etc/kubernetes/tmp" 目录。 |
--config string |
| kubeadm 配置文件的路径。 |
--cri-socket string |
| 要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值;
仅当安装了多个 CRI 或存在非标准的 CRI 套接字时,才使用此选项。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-f, --force |
| 在不提示确认的情况下重置节点。 |
-h, --help |
| reset 操作的帮助命令。 |
--ignore-preflight-errors strings |
| 错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该标志,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--skip-phases strings |
| 要跳过的阶段列表。 |
从父命令继承的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
1.8.1 -
使用此命令来调用 reset
工作流程的某个阶段。
概要
使用此命令来调用 reset
工作流程的某个阶段。
选项
从父命令继承的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
1.8.2 -
执行 cleanup node(清理节点)操作。
概要
执行 cleanup node(清理节点)操作。
kubeadm reset phase cleanup-node [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的目录路径。如果已指定,则需要清空此目录。 |
--cleanup-tmp-dir |
| 清理 "/etc/kubernetes/tmp" 目录。 |
--cri-socket string |
| 要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值;
仅当安装了多个 CRI 或具有非标准 CRI 套接字时,才使用此选项。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| cleanup-node 操作的帮助命令。 |
从父命令继承的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
1.8.3 -
kubeadm reset(重置)前运行启动前检查。
概要
kubeadm reset(重置)前运行启动前检查。
kubeadm reset phase preflight [flags]
选项
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-f, --force |
| 在不提示确认的情况下重置节点。 |
-h, --help |
| preflight 操作的帮助命令。 |
--ignore-preflight-errors strings |
| 错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 |
从父命令继承的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
1.8.4 -
移除本地 etcd 成员。
概要
移除控制平面节点的本地 etcd 成员。
kubeadm reset phase remove-etcd-member [flags]
选项
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| remove-etcd-member 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该标志,则可以在默认位置中查找现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
1.9 -
管理引导令牌。
概要
此命令管理引导令牌(bootstrap token)。它是可选的,仅适用于高级用例。
简而言之,引导令牌(Bootstrap Token)用于在客户端和服务器之间建立双向信任。
当客户端(例如,即将加入集群的节点)需要信任所通信的服务器时,可以使用引导令牌。
这时可以使用具有 “signing” 用途的引导令牌。引导令牌还可以作为一种允许对 API
服务器进行短期身份验证的方法(令牌用作 API 服务器信任客户端的方式),例如用于执行 TLS 引导程序。
引导令牌准确来说是什么?
- 它是位于 kube-system 命名空间中类型为 “bootstrap.kubernetes.io/token” 的一个 Secret。
- 引导令牌的格式必须为 “[a-z0-9]{6}.[a-z0-9]{16}”,前一部分是公共令牌 ID,而后者是令牌秘钥,必须在任何情况下都保密!
- 必须将 Secret 的名称命名为 “bootstrap-token-(token-id)”。
你可以在此处阅读有关引导令牌(bootstrap token)的更多信息:
https://kubernetes.io/zh-cn/docs/admin/bootstrap-tokens/
kubeadm token [flags]
选项
--dry-run |
| 是否启用 `dry-run` 模式。 |
-h, --help |
| token 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置,则搜索一组标准位置以查找现有 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
1.9.1 -
在服务器上创建引导令牌。
概要
这个命令将为你创建一个引导令牌。
你可以设置此令牌的用途,"有效时间" 和可选的人性化的描述。
这里的 [token] 是指将要生成的实际令牌。
该令牌应该是一个通过安全机制生成的随机令牌,形式为 "[a-z0-9]{6}.[a-z0-9]{16}"。
如果没有给出 [token],kubeadm 将生成一个随机令牌。
kubeadm token create [token]
选项
--certificate-key string |
| 当与 “--print-join-command” 一起使用时,打印作为控制平面加入集群时所需的所有 “kubeadm join” 标志。
要创建新的证书密钥,你必须使用 “kubeadm init phase upload-certs --upload-certs”。 |
--config string |
| kubeadm 配置文件的路径。 |
--description string |
| 针对令牌用途的人性化的描述。 |
--groups stringSlice 默认值:[system:bootstrappers:kubeadm:default-node-token] |
| 此令牌用于身份验证时将对其他组进行身份验证。必须匹配 "\\Asystem:bootstrappers:[a-z0-9:-]{0,255}[a-z0-9]\\z" |
-h, --help |
| create 操作的帮助命令。 |
--print-join-command |
| 不仅仅打印令牌,而是打印使用令牌加入集群所需的完整 'kubeadm join' 参数。 |
--ttl duration 默认值:24h0m0s |
| 令牌有效时间,超过该时间令牌被自动删除。(例如:1s, 2m, 3h)。如果设置为 '0',令牌将永远不过期。 |
--usages stringSlice 默认值:[signing,authentication] |
| 描述可以使用此令牌的方式。你可以多次使用 `--usages` 或者提供一个以逗号分隔的选项列表。
合法选项有:[signing,authentication] |
从父命令继承的选项
--dry-run |
| 是否启用 `dry-run` 运行模式。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
1.9.2 -
删除服务器上的引导令牌。
概要
这个命令将为你删除指定的引导令牌列表。
[token-value]
是要删除的 "[a-z0-9]{6}.[a-z0-9]{16}" 形式的完整令牌或者是 "[a-z0-9]{6}" 形式的令牌 ID。
kubeadm token delete [token-value] ...
选项
-h, --help |
| delete 操作的帮助命令。 |
从父命令继承的选项
--dry-run |
| 是否启用 `dry-run` 运行模式。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
1.9.3 -
生成并打印一个引导令牌,但不要在服务器上创建它。
概要
此命令将打印一个随机生成的可以被 "init" 和 "join" 命令使用的引导令牌。
你不必使用此命令来生成令牌。你可以自己设定,只要格式符合 "[a-z0-9]{6}.[a-z0-9]{16}"。
之所以提供这个命令是为了方便生成规定格式的令牌。
你也可以使用 "kubeadm init" 并且不指定令牌,该命令会生成一个令牌并打印出来。
kubeadm token generate [flags]
选项
-h, --help |
| generate 操作的帮助命令。 |
从父命令继承的选项
--dry-run |
| 是否启用 `dry-run` 模式。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
1.9.4 -
列出服务器上的引导令牌。
概要
此命令将为你列出所有的引导令牌。
kubeadm token list [flags]
选项
--allow-missing-template-keys 默认值:true |
| 如果设置为 true,则在模板中缺少字段或哈希表的键时忽略模板中的任何错误。
仅适用于 golang 和 jsonpath 输出格式。 |
-o, --experimental-output string 默认值:"text" |
| 输出格式:text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file 其中之一 |
-h, --help |
| list 操作的帮助命令。 |
--show-managed-fields |
| 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留 managedFields。 |
从父命令继承的选项
--dry-run |
| 是否启用 `dry-run` 模式。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
1.10 -
此命令能将集群平滑升级到新版本。
概要
此命令能将集群平滑升级到新版本。
kubeadm upgrade [flags]
选项
-h, --help |
| upgrade 操作的帮助命令。 |
继承于父命令的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.10.1 -
将 Kubernetes 集群升级到指定版本。
概要
将 Kubernetes 集群升级到指定版本。
kubeadm upgrade apply [version]
选项
--allow-experimental-upgrades |
| 显示 Kubernetes 的不稳定版本作为升级替代方案,并允许升级到 Kubernetes 的 Alpha、Beta 或 RC 版本。 |
--allow-release-candidate-upgrades |
| 显示 Kubernetes 的候选版本作为升级替代方案,并允许升级到 Kubernetes 的 RC 版本。 |
--certificate-renewal Default: true |
| 执行升级期间更改的组件所使用的证书的更新。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不要更改任何状态,只输出要执行的操作。 |
--etcd-upgrade 默认值: true |
| 执行 etcd 的升级。 |
--feature-gates string |
| 一组键值对,用于描述各种功能。选项包括: EtcdLearnerMode=true|false (ALPHA - 默认值=false) PublicKeysECDSA=true|false (BETA - 默认值=true) RootlessControlPlane=true|false (DEPRECATED - 默认值=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED - 默认值=false)
WaitForAllControlPlaneComponents=true|false (ALPHA - 默认值=false) |
-f, --force |
| 强制升级,但可能无法满足某些要求。这也意味着非交互模式。 |
-h, --help |
| apply 操作的帮助命令。 |
-ignore-preflight-errors strings |
| 错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置标志,则在相关目录下搜索以查找现有 kubeconfig 文件。 |
--patches string |
| 包含名为 "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" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 |
--print-config |
| 指定是否应打印将在升级中使用的配置文件。 |
-y, --yes |
| 执行升级,不提示确认(非交互模式)。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.10.2 -
显示哪些差异将被应用于现有的静态 Pod 资源清单。参考:kubeadm upgrade apply --dry-run
概要
显示哪些差异将被应用于现有的静态 Pod 资源清单。另请参考:kubeadm upgrade apply --dry-run
kubeadm upgrade diff [version] [flags]
选项
--api-server-manifest string 默认值:"/etc/kubernetes/manifests/kube-apiserver.yaml" |
| API 服务器清单的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-c, --context-lines int 默认值:3 |
| diff 涉及了多少行上下文。 |
--controller-manager-manifest string 默认值:"/etc/kubernetes/manifests/kube-controller-manager.yaml" |
| 控制器清单的路径。 |
-h, --help |
| diff 操作的帮助命令 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件,如果标志是未设置,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--scheduler-manifest string 默认值:"/etc/kubernetes/manifests/kube-scheduler.yaml" |
| 调度程序清单的路径。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向“真实”主机根文件系统的路径。 |
1.10.3 -
升级集群中某个节点的命令。
概要
升级集群中某个节点的命令。
"node" 命令执行以下阶段:
preflight 执行节点升级前检查
control-plane 如果存在的话,升级部署在该节点上的管理面实例
kubelet-config 更新该节点上的 kubelet 配置
kubeadm upgrade node [flags]
选项
--certificate-renewal 默认值: true |
| 对升级期间变化的组件所使用的证书执行续订。 |
--config string |
| 到 kubeadm 配置文件的路径。 |
--dry-run |
| 不更改任何状态,只输出将要执行的操作。 |
--etcd-upgrade 默认值: true |
| 执行 etcd 的升级。 |
-h, --help |
| node 操作的帮助命令。 |
--ignore-preflight-errors strings |
| 其错误将显示为警告的检查列表。示例:'IsPrivilegedUser,Swap'。值 'all' 忽略所有检查中的错误。 |
--kubeconfig string 默认值: "/etc/kubernetes/admin.conf" |
| 用于与集群交互的 kubeconfig 文件。如果参数未指定,将从一系列标准位置检索存在的 kubeconfig 文件。 |
--patches string |
| 包含名为 "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" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 |
--skip-phases strings |
| 要跳过的阶段的列表。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.10.4 -
使用此命令调用 node 工作流的某个阶段。
概要
使用此命令调用 node 工作流的某个阶段。
选项
从父命令继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.10.5 -
升级部署在此节点上的控制平面实例,如果有的话。
概要
升级部署在此节点上的控制平面实例,如果有的话。
kubeadm upgrade node phase control-plane [flags]
选项
--certificate-renewal |
| 续订在升级期间变更的组件所使用的证书。 |
--dry-run |
| 不改变任何状态,只输出将要执行的动作。 |
--etcd-upgrade 默认值: true |
| 执行 etcd 的升级。 |
-h, --help |
| control-plane 操作的帮助命令。 |
--kubeconfig string 默认值: "/etc/kubernetes/admin.conf" |
| 用于和集群通信的 KubeConfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 KubeConfig 文件。 |
--patches string |
| 包含名为 "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" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向 “真实” 主机根文件系统的路径。 |
1.10.6 -
升级此节点的 kubelet 配置。
概要
从集群中 ConfigMap kubelet-config 下载 kubelet 配置。
kubeadm upgrade node phase kubelet-config [flags]
选项
--dry-run |
| 不改变任何状态,只输出将要执行的操作。 |
-h, --help |
| kubelet-config 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--patches string |
| 目录路径,指向的目录中包含名为 “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" 是一个可选字符串,可用于确定按字母顺序首先应用哪些补丁。 |
从父命令继承的选项
--rootfs string |
| [实验] 到'真实'主机根文件系统的路径。 |
1.10.7 -
执行升级节点的预检。
概要
执行 kubeadm 升级节点的预检。
kubeadm upgrade node phase preflight [flags]
选项
-h, --help |
| preflight 操作的帮助命令。 |
--ignore-preflight-errors strings |
| 错误将显示为警告的检查清单。示例:'IsPrivilegedUser,Swap'。值为 'all' 表示忽略所有检查的错误。 |
继承于父命令的选项
--rootfs string |
| [实验] 指向 “真实” 主机根文件系统的路径。 |
1.10.8 -
检查可升级到哪些版本,并验证你当前的集群是否可升级。
概述
检查可升级到哪些版本,并验证你当前的集群是否可升级。
该命令只能在存在 kubeconfig 文件 admin.conf
的控制平面节点上运行。
要跳过互联网检查,请传入可选参数 [version]。
kubeadm upgrade plan [version] [flags]
选项
--allow-experimental-upgrades |
| 显示不稳定版本的 Kubernetes 作为升级替代方案,并允许升级到 Kubernetes 的 Alpha、Beta 或 RC 版本。 |
--allow-missing-template-keys Default: true |
| 如果为 true,则当模板中缺少字段或映射键时,忽略模板中的错误。仅适用于 golang 和
jsonpath 输出格式。 |
--allow-release-candidate-upgrades |
| 显示 Kubernetes 的发行候选版本作为升级选择,并允许升级到 Kubernetes 的 RC 版本。 |
--config string |
| 配置文件的路径。 |
-o, --experimental-output string Default: "text" |
| 输出格式为
text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file
其中一种。 |
--feature-gates string |
| 一组描述各种特征特性门控的键值对。选项有: EtcdLearnerMode=true|false (BETA - 默认值=true) PublicKeysECDSA=true|false (DEPRECATED - 默认值=false) RootlessControlPlane=true|false (ALPHA - 默认值=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED - 默认值=false)
WaitForAllControlPlaneComponents=true|false (ALPHA - 默认值=false) |
-h, --help |
| plan 操作的帮助命令。 |
--ignore-preflight-errors strings |
| 其错误将显示为警告的检查列表。例如:'IsPrivilegedUser,Swap'。值 'all' 忽略所有检查错误。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果标志为未设置,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
-o, --output string
默认值:"text" |
--print-config |
| 指定是否打印将在升级中使用的配置文件。 |
--show-managed-fields |
| 如果开启,以 JSON 或 YAML 格式打印对象时会保留 managedField。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向 “真实” 宿主机根文件系统的路径。 |
1.11 -
打印 kubeadm 的版本。
概要
打印 kubeadm 的版本。
kubeadm version [flags]
选项
-h, --help |
| version 操作的帮助命令。 |
-o, --output string |
| 输出格式;可用的选项有 'yaml'、'json' 和 'short'。 |
从父命令继承的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。设置此标志将导致 kubeadm 切换到所提供的路径。 |
1.12 -
此目录下的所有文件都是从其他仓库自动生成的。 不要人工编辑它们。 你必须在上游仓库中编辑它们
2 - kubeadm init
此命令初始化一个 Kubernetes 控制平面节点。
运行此命令以安装 Kubernetes 控制平面。
概要
运行此命令来搭建 Kubernetes 控制平面节点。
"init" 命令执行以下阶段:
preflight 预检
certs 生成证书
/ca 生成自签名根 CA 用于配置其他 kubernetes 组件
/apiserver 生成 apiserver 的证书
/apiserver-kubelet-client 生成 apiserver 连接到 kubelet 的证书
/front-proxy-ca 生成前端代理自签名CA(扩展apiserver)
/front-proxy-client 生成前端代理客户端的证书(扩展 apiserver)
/etcd-ca 生成 etcd 自签名 CA
/etcd-server 生成 etcd 服务器证书
/etcd-peer 生成 etcd 节点相互通信的证书
/etcd-healthcheck-client 生成 etcd 健康检查的证书
/apiserver-etcd-client 生成 apiserver 访问 etcd 的证书
/sa 生成用于签署服务帐户令牌的私钥和公钥
kubeconfig 生成建立控制平面和管理所需的所有 kubeconfig 文件
/admin 生成一个 kubeconfig 文件供管理员使用以及供 kubeadm 本身使用
/super-admin 为超级管理员生成 kubeconfig 文件
/kubelet 为 kubelet 生成一个 kubeconfig 文件,*仅*用于集群引导
/controller-manager 生成 kubeconfig 文件供控制器管理器使用
/scheduler 生成 kubeconfig 文件供调度程序使用
etcd 为本地 etcd 生成静态 Pod 清单文件
/local 为本地单节点本地 etcd 实例生成静态 Pod 清单文件
control-plane 生成建立控制平面所需的所有静态 Pod 清单文件
/apiserver 生成 kube-apiserver 静态 Pod 清单
/controller-manager 生成 kube-controller-manager 静态 Pod 清单
/scheduler 生成 kube-scheduler 静态 Pod 清单
kubelet-start 写入 kubelet 设置并启动(或重启) kubelet
upload-config 将 kubeadm 和 kubelet 配置上传到 ConfigMap
/kubeadm 将 kubeadm 集群配置上传到 ConfigMap
/kubelet 将 kubelet 组件配置上传到 ConfigMap
upload-certs 将证书上传到 kubeadm-certs
mark-control-plane 将节点标记为控制面
bootstrap-token 生成用于将节点加入集群的引导令牌
kubelet-finalize 在 TLS 引导后更新与 kubelet 相关的设置
/experimental-cert-rotation 启用 kubelet 客户端证书轮换
addon 安装用于通过一致性测试所需的插件
/coredns 将 CoreDNS 插件安装到 Kubernetes 集群
/kube-proxy 将 kube-proxy 插件安装到 Kubernetes 集群
show-join-command 显示控制平面和工作节点的加入命令
kubeadm init [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| API 服务器绑定的端口。 |
--apiserver-cert-extra-sans strings |
| 用于 API Server 服务证书的可选附加主题备用名称(SAN)。可以是 IP 地址和 DNS 名称。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--certificate-key string |
| 用于加密 kubeadm-certs Secret 中的控制平面证书的密钥。
证书密钥为十六进制编码的字符串,是大小为 32 字节的 AES 密钥。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--cri-socket string |
| 要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值;
仅当安装了多个 CRI 或具有非标准 CRI 套接字时,才使用此选项。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
--feature-gates string |
| 一组用来描述各种功能特性的键值(key=value)对。选项是: EtcdLearnerMode=true|false (BETA - 默认值=true) PublicKeysECDSA=true|false (DEPRECATED - 默认值=false) RootlessControlPlane=true|false (ALPHA - 默认值=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED - 默认值=false) WaitForAllControlPlaneComponents=true|false (ALPHA - 默认值=false) |
-h, --help |
| init 操作的帮助命令。 |
--ignore-preflight-errors strings |
| 错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择用于拉取控制平面镜像的容器仓库。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择一个特定的 Kubernetes 版本。 |
--node-name string |
| 指定节点的名称。 |
--patches string |
| 它包含名为 "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" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 |
--pod-network-cidr string |
| 指明 Pod 网络可以使用的 IP 地址段。如果设置了这个参数,控制平面将会为每一个节点自动分配 CIDR。 |
--service-cidr string 默认值:"10.96.0.0/12" |
| 为服务的虚拟 IP 地址另外指定 IP 地址段。 |
--service-dns-domain string 默认值:"cluster.local" |
| 为服务另外指定域名,例如:"myorg.internal"。 |
--skip-certificate-key-print |
| 不要打印用于加密控制平面证书的密钥。 |
--skip-phases strings |
| 要跳过的阶段列表。 |
--skip-token-print |
| 跳过打印 'kubeadm init' 生成的默认引导令牌。 |
--token string |
| 这个令牌用于建立控制平面节点与工作节点间的双向通信。
格式为 [a-z0-9]{6}.[a-z0-9]{16} - 示例:abcdef.0123456789abcdef |
--token-ttl duration 默认值:24h0m0s |
| 令牌被自动删除之前的持续时间(例如 1s,2m,3h)。如果设置为 '0',则令牌将永不过期。 |
--upload-certs |
| 将控制平面证书上传到 kubeadm-certs Secret。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
Init 命令的工作流程
kubeadm init
命令通过执行下列步骤来启动一个 Kubernetes 控制平面节点。
- 在做出变更前运行一系列的预检项来验证系统状态。一些检查项目仅仅触发警告,
其它的则会被视为错误并且退出 kubeadm,除非问题得到解决或者用户指定了
--ignore-preflight-errors=<错误列表>
参数。
- 生成一个自签名的 CA 证书来为集群中的每一个组件建立身份标识。
用户可以通过将其放入
--cert-dir
配置的证书目录中(默认为 /etc/kubernetes/pki
)
来提供他们自己的 CA 证书以及/或者密钥。
APIServer 证书将为任何 --apiserver-cert-extra-sans
参数值提供附加的 SAN 条目,必要时将其小写。
- 将 kubeconfig 文件写入
/etc/kubernetes/
目录以便 kubelet、控制器管理器和调度器用来连接到
API 服务器,它们每一个都有自己的身份标识。再编写额外的 kubeconfig 文件,将 kubeadm
作为管理实体(admin.conf
)和可以绕过 RBAC 的超级管理员用户(super-admin.conf
)。
为 API 服务器、控制器管理器和调度器生成静态 Pod 的清单文件。假使没有提供一个外部的 etcd
服务的话,也会为 etcd 生成一份额外的静态 Pod 清单文件。
静态 Pod 的清单文件被写入到 /etc/kubernetes/manifests
目录;
kubelet 会监视这个目录以便在系统启动的时候创建 Pod。
一旦控制平面的 Pod 都运行起来,kubeadm init
的工作流程就继续往下执行。
- 对控制平面节点应用标签和污点标记以便不会在它上面运行其它的工作负载。
- 生成令牌,将来其他节点可使用该令牌向控制平面注册自己。如
kubeadm token
文档所述,用户可以选择通过
--token
提供令牌。
为了使得节点能够遵照启动引导令牌和
TLS 启动引导
这两份文档中描述的机制加入到集群中,kubeadm 会执行所有的必要配置:
更多相关信息,请查看 kubeadm join。
通过 API 服务器安装一个 DNS 服务器 (CoreDNS) 和 kube-proxy 附加组件。
在 Kubernetes v1.11 和更高版本中,CoreDNS 是默认的 DNS 服务器。
请注意,尽管已部署 DNS 服务器,但直到安装 CNI 时才调度它。
警告:
从 v1.18 开始,在 kubeadm 中使用 kube-dns 的支持已被废弃,并已在 v1.21 版本中移除。
在 kubeadm 中使用 init 阶段
Kubeadm 允许你使用 kubeadm init phase
命令分阶段创建控制平面节点。
要查看阶段和子阶段的有序列表,可以调用 kubeadm init --help
。
该列表将位于帮助屏幕的顶部,每个阶段旁边都有一个描述。
注意,通过调用 kubeadm init
,所有阶段和子阶段都将按照此确切顺序执行。
某些阶段具有唯一的标志,因此,如果要查看可用选项的列表,请添加 --help
,例如:
sudo kubeadm init phase control-plane controller-manager --help
你也可以使用 --help
查看特定父阶段的子阶段列表:
sudo kubeadm init phase control-plane --help
kubeadm init
还公开了一个名为 --skip-phases
的参数,该参数可用于跳过某些阶段。
参数接受阶段名称列表,并且这些名称可以从上面的有序列表中获取。
例如:
sudo kubeadm init phase control-plane all --config=configfile.yaml
sudo kubeadm init phase etcd local --config=configfile.yaml
# 你现在可以修改控制平面和 etcd 清单文件
sudo kubeadm init --skip-phases=control-plane,etcd --config=configfile.yaml
该示例将执行的操作是基于 configfile.yaml
中的配置在 /etc/kubernetes/manifests
中写入控制平面和 etcd 的清单文件。
这允许你修改文件,然后使用 --skip-phases
跳过这些阶段。
通过调用最后一个命令,你将使用自定义清单文件创建一个控制平面节点。
特性状态:
Kubernetes v1.22 [beta]
或者,你可以使用 InitConfiguration
下的 skipPhases
字段。
结合一份配置文件来使用 kubeadm init
注意:
配置文件的功能仍然处于 Beta 状态并且在将来的版本中可能会改变。
通过一份配置文件而不是使用命令行参数来配置 kubeadm init
命令是可能的,
但是一些更加高级的功能只能够通过配置文件设定。
这份配置文件通过 --config
选项参数指定的,
它必须包含 ClusterConfiguration
结构,并可能包含更多由 ---\n
分隔的结构。
在某些情况下,可能不允许将 --config
与其他标志混合使用。
可以使用 kubeadm config print
命令打印出默认配置。
如果你的配置没有使用最新版本,推荐使用
kubeadm config migrate
命令进行迁移。
关于配置的字段和用法的更多信息,你可以访问 API 参考页面。
使用 kubeadm init 时设置特性门控
Kubeadm 支持一组独有的特性门控,只能在 kubeadm init
创建集群期间使用。
这些特性可以控制集群的行为。特性门控会在毕业到 GA 后被移除。
你可以使用 --feature-gates
标志来为 kubeadm init
设置特性门控,
或者你可以在用 --config
传递配置文件时添加条目到
featureGates
字段中。
直接传递 Kubernetes 核心组件的特性门控给 kubeadm 是不支持的。
相反,可以通过使用 kubeadm API 的自定义组件来传递。
特性门控的列表:
kubeadm 特性门控特性 | 默认值 | Alpha | Beta | GA |
---|
ControlPlaneKubeletLocalMode | false | 1.31 | - | - |
EtcdLearnerMode | true | 1.27 | 1.29 | - |
PublicKeysECDSA | false | 1.19 | - | - |
WaitForAllControlPlaneComponents | false | 1.30 | - | - |
说明:
一旦特性门控变成了 GA,它的值会被默认锁定为 true
。
特性门控的描述:
ControlPlaneKubeletLocalMode
- 启用此特性门控后,当加入新的控制平面节点时,
kubeadm 将配置 kubelet 连接到本地 kube-apiserver。
这将确保在滚动升级期间不会违反版本偏差策略。
EtcdLearnerMode
- 启用此特性门控后,当加入新的控制平面节点时,将创建一个新的 etcd
成员作为学习者(learner),并仅在 etcd 数据完全对齐后进级为投票成员(voting member)。
PublicKeysECDSA
- 可用于创建集群时使用 ECDSA 证书而不是默认 RSA 算法。
支持用
kubeadm certs renew
更新现有 ECDSA 证书,
但你不能在集群运行期间或升级期间切换 RSA 和 ECDSA 算法。
Kubernetes 1.31 有一个错误,尽管开启了特性门控,
所生成的 kubeconfig 文件中的密钥仍使用 RSA 设置。
在 v1.31 之前的 Kubernetes 版本中,即使启用了 PublicKeysECDSA
特性门控,
所生成的 kubeconfig 文件中的密钥仍然被设置为使用 RSA。
WaitForAllControlPlaneComponents
- 启用此特性门控后,kubeadm 将等待控制平面节点上的所有控制平面组件
(kube-apiserver、kube-controller-manager、kube-scheduler)在其
/healthz
端点上报告 200 状态码。这些检测在 https://127.0.0.1:PORT/healthz
上执行,其中
PORT
取自组件的 --secure-port
标志。
如果没有启用此特性门控,kubeadm 将仅等待控制平面节点上的 kube-apiserver 准备就绪。
等待过程在 kubeadm 启动主机上的 kubelet 后立即开始。如果你希望在 kubeadm init
或 kubeadm join
命令执行期间观察所有控制平面组件的就绪状态,建议你启用此特性门控。
已弃用特性门控的列表:
kubeadm 弃用的特性门控特性 | 默认值 | Alpha | Beta | GA | 弃用 |
---|
RootlessControlPlane | false | 1.22 | - | - | 1.31 |
特性门控描述:
RootlessControlPlane
- 设置此标志来配置 kubeadm 所部署的控制平面组件中的静态 Pod 容器
kube-apiserver
、kube-controller-manager
、kube-scheduler
和 etcd
以非 root 用户身份运行。如果未设置该标志,则这些组件以 root 身份运行。
你可以在升级到更新版本的 Kubernetes 之前更改此特性门控的值。
已移除的特性门控列表:
kubeadm 已移除的特性门控特性 | Alpha | Beta | GA | 移除 |
---|
IPv6DualStack | 1.16 | 1.21 | 1.23 | 1.24 |
UnversionedKubeletConfigMap | 1.22 | 1.23 | 1.25 | 1.26 |
UpgradeAddonsBeforeControlPlane | 1.28 | - | - | 1.31 |
特性门控的描述:
IPv6DualStack
- 在 IP 双栈特性处于开发过程中时,此标志有助于配置组件的双栈支持。有关 Kubernetes
双栈支持的更多详细信息,请参阅 kubeadm 的双栈支持。
UnversionedKubeletConfigMap
- 此标志控制 kubeadm 存储 kubelet 配置数据的 ConfigMap 的名称。
在未指定此标志或设置为
true
的情况下,此 ConfigMap 被命名为 kubelet-config
。
如果将此标志设置为 false
,则此 ConfigMap 的名称会包括 Kubernetes 的主要版本和次要版本
(例如:kubelet-config-1.31
)。
kubeadm 会确保用于读写 ConfigMap 的 RBAC 规则适合你设置的值。
当 kubeadm 写入此 ConfigMap 时(在 kubeadm init
或 kubeadm upgrade apply
期间),
kubeadm 根据 UnversionedKubeletConfigMap
的设置值来执行操作。
当读取此 ConfigMap 时(在执行 kubeadm join
、kubeadm reset
、kubeadm upgrade
等操作期间),
kubeadm 尝试首先使用无版本(后缀)的 ConfigMap 名称;
如果不成功,kubeadm 将回退到使用该 ConfigMap 的旧(带版本号的)名称。
UpgradeAddonsBeforeControlPlane
- 此特性门控已被移除。它在 v1.28 中作为一个已弃用的特性被引入,在 v1.31 中被移除。
有关旧版本的文档,请切换到相应的网站版本。
添加 kube-proxy 参数
kubeadm 配置中有关 kube-proxy 的说明请查看:
使用 kubeadm 启用 IPVS 模式的说明请查看:
向控制平面组件传递自定义的命令行参数
有关向控制平面组件传递命令行参数的说明请查看:
在没有互联网连接的情况下运行 kubeadm
要在没有互联网连接的情况下运行 kubeadm,你必须提前拉取所需的控制平面镜像。
你可以使用 kubeadm config images
子命令列出并拉取镜像:
kubeadm config images list
kubeadm config images pull
你可以通过 --config
把 kubeadm 配置文件 传递给上述命令来控制
kubernetesVersion
和 imageRepository
字段。
kubeadm 需要的所有默认 registry.k8s.io
镜像都支持多种硬件体系结构。
使用自定义的镜像
默认情况下,kubeadm 会从 registry.k8s.io
仓库拉取镜像。如果请求的 Kubernetes 版本是 CI 标签
(例如 ci/latest
),则使用 gcr.io/k8s-staging-ci-images
。
你可以通过使用带有配置文件的 kubeadm 来重写此操作。
允许的自定义功能有:
- 提供影响镜像版本的
kubernetesVersion
。 - 使用其他的
imageRepository
来代替 registry.k8s.io
。 - 为 etcd 或 CoreDNS 提供特定的
imageRepository
和 imageTag
。
由于向后兼容的原因,使用 imageRepository
所指定的定制镜像库可能与默认的
registry.k8s.io
镜像路径不同。例如,某镜像的子路径可能是 registry.k8s.io/subpath/image
,
但使用自定义仓库时默认为 my.customrepository.io/image
。
确保将镜像推送到 kubeadm 可以使用的自定义仓库的路径中,你必须:
- 使用
kubeadm config images {list|pull}
从 registry.k8s.io
的默认路径中拉取镜像。 - 将镜像推送到
kubeadm config images list --config=config.yaml
的路径,
其中 config.yaml
包含自定义的 imageRepository
和/或用于 etcd 和 CoreDNS 的 imageTag
。 - 将相同的
config.yaml
传递给 kubeadm init
。
定制沙箱(pause)镜像
如果需要为这些组件设置定制的镜像,
你需要在你的容器运行时中完成一些配置。
参阅你的容器运行时的文档以了解如何改变此设置。
对于某些容器运行时而言,
你可以在容器运行时主题下找到一些建议。
将控制平面证书上传到集群
通过将参数 --upload-certs
添加到 kubeadm init
,你可以将控制平面证书临时上传到集群中的 Secret。
请注意,此 Secret 将在 2 小时后自动过期。这些证书使用 32 字节密钥加密,可以使用 --certificate-key
指定该密钥。
通过将 --control-plane
和 --certificate-key
传递给 kubeadm join
,
可以在添加其他控制平面节点时使用相同的密钥下载证书。
以下阶段命令可用于证书到期后重新上传证书:
kubeadm init phase upload-certs --upload-certs --config=SOME_YAML_FILE
说明:
在使用 --config
传递配置文件时,
可以在 InitConfiguration
中提供预定义的 certificateKey
。
如果未将预定义的证书密钥传递给 kubeadm init
和 kubeadm init phase upload-certs
,
则会自动生成一个新密钥。
以下命令可用于按需生成新密钥:
kubeadm certs certificate-key
使用 kubeadm 管理证书
有关使用 kubeadm 进行证书管理的详细信息,
请参阅使用 kubeadm 进行证书管理。
该文档包括有关使用外部 CA、自定义证书和证书续订的信息。
管理 kubeadm 为 kubelet 提供的 systemd 配置文件
kubeadm
包自带了关于 systemd
如何运行 kubelet
的配置文件。
请注意 kubeadm
客户端命令行工具永远不会修改这份 systemd
配置文件。
这份 systemd
配置文件属于 kubeadm DEB/RPM 包。
有关更多信息,请阅读管理 systemd 的 kubeadm 内嵌文件。
结合 CRI 运行时使用 kubeadm
默认情况下,kubeadm 尝试检测你的容器运行环境。有关此检测的更多详细信息,请参见
kubeadm CRI 安装指南。
设置节点的名称
默认情况下,kubeadm
基于机器的主机地址分配一个节点名称。你可以使用 --node-name
参数覆盖此设置。
此标识将合适的 --hostname-override
值传递给 kubelet。
要注意,重载主机名可能会与云驱动发生冲突。
kubeadm 自动化
除了像文档
kubeadm 基础教程中所描述的那样,
将从 kubeadm init
取得的令牌复制到每个节点,你还可以并行地分发令牌以实现更简单的自动化。
要实现自动化,你必须知道控制平面节点启动后将拥有的 IP 地址,或使用 DNS 名称或负载均衡器的地址。
生成一个令牌。这个令牌必须采用的格式为:<6 个字符的字符串>.<16 个字符的字符串>
。
更加正式的说法是,它必须符合正则表达式:[a-z0-9]{6}\.[a-z0-9]{16}
。
kubeadm 可以为你生成一个令牌:
- 使用这个令牌同时启动控制平面节点和工作节点。这些节点一旦运行起来应该就会互相寻找对方并且形成集群。
同样的
--token
参数可以同时用于 kubeadm init
和 kubeadm join
命令。
当接入其他控制平面节点时,可以对 --certificate-key
执行类似的操作。可以使用以下方式生成密钥:
kubeadm certs certificate-key
一旦集群启动起来,你就可以从控制平面节点的 /etc/kubernetes/admin.conf
文件获取管理凭证,
并使用这个凭证同集群通信。
一旦集群启动起来,你就可以从控制平面节点中的 /etc/kubernetes/admin.conf
文件获取管理凭证或通过为其他用户生成的 kubeconfig 文件与集群通信。
注意这种搭建集群的方式在安全保证上会有一些宽松,因为这种方式不允许使用
--discovery-token-ca-cert-hash
来验证根 CA 的哈希值
(因为当配置节点的时候,它还没有被生成)。
更多信息请参阅 kubeadm join 文档。
接下来
3 - kubeadm join
此命令用来初始化 Kubernetes 工作节点并将其加入集群。
在你希望加入现有集群的任何机器上运行它。
摘要
当节点加入 kubeadm 初始化的集群时,我们需要建立双向信任。
这个过程可以分解为发现(让待加入节点信任 Kubernetes 控制平面节点)和
TLS 引导(让 Kubernetes 控制平面节点信任待加入节点)两个部分。
有两种主要的发现方案。
第一种方案是使用共享令牌和 API 服务器的 IP 地址。
第二种是以文件形式提供标准 kubeconfig 文件的一个子集。
发现/kubeconfig 文件支持令牌、client-go 鉴权插件(“exec”)、“tokenFile" 和
"authProvider"。该文件可以是本地文件,也可以通过 HTTPS URL 下载。
格式是 kubeadm join --discovery-token abcdef.1234567890abcdef 1.2.3.4:6443
、
kubeadm join --discovery-file path/to/file.conf
或者
kubeadm join --discovery-file https://url/file.conf
。
只能使用其中一种。
如果发现信息是从 URL 加载的,必须使用 HTTPS。
此外,在这种情况下,主机安装的 CA 包用于验证连接。
如果使用共享令牌进行发现,还应该传递 --discovery-token-ca-cert-hash 参数来验证
Kubernetes 控制平面节点提供的根证书颁发机构(CA)的公钥。
此参数的值指定为 "<hash-type>:<hex-encoded-value>",
其中支持的哈希类型为 "sha256"。哈希是通过 Subject Public Key Info(SPKI)对象的字节计算的(如 RFC7469)。
这个值可以从 "kubeadm init" 的输出中获得,或者可以使用标准工具进行计算。
可以多次重复 --discovery-token-ca-cert-hash 参数以允许多个公钥。
如果无法提前知道 CA 公钥哈希,则可以通过 --discovery-token-unsafe-skip-ca-verification 参数禁用此验证。
这削弱了 kubeadm 安全模型,因为其他节点可能会模仿 Kubernetes 控制平面节点。
TLS 引导机制也通过共享令牌驱动。
这用于向 Kubernetes 控制平面节点进行临时的身份验证,以提交本地创建的密钥对的证书签名请求(CSR)。
默认情况下,kubeadm 将设置 Kubernetes 控制平面节点自动批准这些签名请求。
这个令牌通过 --tls-bootstrap-token abcdef.1234567890abcdef 参数传入。
通常两个部分会使用相同的令牌。
在这种情况下可以使用 --token 参数,而不是单独指定每个令牌。
"join [api-server-endpoint]" 命令执行下列阶段:
- preflight:运行接入前检查
- control-plane-prepare:准备用作控制平面的机器
- download-certs:[实验] 从 kubeadm-certs Secret 下载控制平面节点之间共享的证书
- certs:为新的控制平面组件生成证书
- kubeconfig:为新的控制平面组件生成 kubeconfig
- control-plane:生成新控制平面组件的清单
- kubelet-start:写入 kubelet 设置、证书并(重新)启动 kubelet
- control-plane-join:将机器加入为控制平面实例
- etcd:添加新的本地 etcd 成员
- update-status:将新的控制平面节点注册到 kubeadm-config ConfigMap 中维护的 ClusterStatus 中(已弃用)
- mark-control-plane:将节点标记为控制平面
- wait-control-plane:[实验] 等待控制平面启动
kubeadm join [api-server-endpoint] [flags]
选项
--apiserver-advertise-address string |
| 如果该节点托管一个新的控制平面实例,则 API 服务器将公布其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 |
--apiserver-bind-port int32 默认值: 6443 |
| 如果节点应该托管新的控制平面实例,则为 API 服务器要绑定的端口。 |
--certificate-key string |
| 使用此密钥可以解密由 init 上传的证书 Secret。
证书密钥为一个十六进制编码的字符串,它是大小为 32 字节的 AES 密钥。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--cri-socket string |
| 要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值;
仅当安装了多个 CRI 或存在非标准的 CRI 套接字时,才使用此选项。 |
--discovery-file string |
| 对于基于文件的发现,给出用于加载集群信息的文件或者 URL。 |
--discovery-token string |
| 对于基于令牌的发现,该令牌用于验证从 API 服务器获取的集群信息。 |
--discovery-token-ca-cert-hash stringSlice |
| 对基于令牌的发现,验证根 CA 公钥是否与此哈希匹配 (格式:"<type>:<value>")。 |
--discovery-token-unsafe-skip-ca-verification |
| 对于基于令牌的发现,允许在未关联 --discovery-token-ca-cert-hash 参数的情况下添加节点。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| join 操作的帮助命令。 |
--ignore-preflight-errors strings |
| 错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 |
--node-name string |
| 指定节点的名称。 |
--patches string |
| 包含名为 "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" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 |
--skip-phases strings |
| 要跳过的阶段列表。 |
--tls-bootstrap-token string |
| 指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 |
--token string |
| 如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
join 工作流
kubeadm join
初始化 Kubernetes 工作节点或控制平面节点并将其添加到集群中。
对于工作节点,该操作包括以下步骤:
- kubeadm 从 API 服务器下载必要的集群信息。
默认情况下,它使用引导令牌和 CA 密钥哈希来验证数据的真实性。
也可以通过文件或 URL 直接发现根 CA。
一旦知道集群信息,kubelet 就可以开始 TLS 引导过程。
TLS 引导程序使用共享令牌与 Kubernetes API 服务器进行临时的身份验证,以提交证书签名请求 (CSR);
默认情况下,控制平面自动对该 CSR 请求进行签名。
- 最后,kubeadm 配置本地 kubelet 使用分配给节点的确定标识连接到 API 服务器。
对于控制平面节点,执行额外的步骤:
从集群下载控制平面节点之间共享的证书(如果用户明确要求)。
生成控制平面组件清单、证书和 kubeconfig。
添加新的本地 etcd 成员。
使用 kubeadm 的 join phase 命令
kubeadm 允许你使用 kubeadm join phase
分阶段将节点加入集群。
要查看阶段和子阶段的有序列表,可以调用 kubeadm join --help
。
该列表将位于帮助屏幕的顶部,每个阶段旁边都有一个描述。
注意,通过调用 kubeadm join
,所有阶段和子阶段都将按照此确切顺序执行。
有些阶段具有唯一的标志,因此,如果要查看可用选项列表,请添加 --help
,例如:
kubeadm join phase kubelet-start --help
类似于 kubeadm init phase 命令,
kubeadm join phase
允许你使用 --skip-phases
标志跳过阶段列表。
例如:
sudo kubeadm join --skip-phases=preflight --config=config.yaml
特性状态:
Kubernetes v1.22 [beta]
或者,你可以使用 JoinConfiguration
中的 skipPhases
字段。
发现要信任的集群 CA
kubeadm 的发现有几个选项,每个选项都有安全性上的优缺点。
适合你的环境的正确方法取决于节点是如何准备的以及你对网络的安全性期望
和节点的生命周期特点。
带 CA 锁定模式的基于令牌的发现
这是 kubeadm 的默认模式。
在这种模式下,kubeadm 下载集群配置(包括根 CA)并使用令牌验证它,
并且会验证根 CA 的公钥与所提供的哈希是否匹配,
以及 API 服务器证书在根 CA 下是否有效。
CA 键哈希格式为 sha256:<hex_encoded_hash>
。
默认情况下,哈希值会打印在 kubeadm init
命令输出的末尾
或者从 kubeadm token create --print-join-command
命令的输出信息中返回。
它使用标准格式(请参考 RFC7469)
并且也能通过第三方工具或者制备系统进行计算。
例如,使用 OpenSSL CLI:
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
kubeadm join
命令示例
对于工作节点:
kubeadm join --discovery-token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:1234..cdef 1.2.3.4:6443
对于控制面节点:
kubeadm join --discovery-token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:1234..cdef --control-plane 1.2.3.4:6443
如果使用 --upload-certs
调用 kubeadm init
命令,
你也可以对控制平面节点调用带 --certificate-key
参数的 join
命令,
将证书复制到该节点。
优势:
劣势:
- CA 哈希通常在控制平面节点被提供之前是不知道的,这使得构建使用 kubeadm 的自动化配置工具更加困难。
通过预先生成 CA,你可以解除这个限制。
无 CA 锁定模式的基于令牌的发现
此模式仅依靠对称令牌来签署 (HMAC-SHA256) 为控制平面建立信任根的发现信息。
要使用该模式,加入节点必须使用
--discovery-token-unsafe-skip-ca-verification
跳过 CA 公钥的哈希验证。
如果可以,你应该考虑使用其他模式。
kubeadm join
命令示例
kubeadm join --token abcdef.1234567890abcdef --discovery-token-unsafe-skip-ca-verification 1.2.3.4:6443
优势
劣势
- 如果攻击者能够通过某些漏洞窃取引导令牌,那么他们可以使用该令牌(连同网络级访问)
为其它处于引导过程中的节点提供假冒的控制平面节点。
在你的环境中,这可能是一个适当的折衷方法,也可能不是。
基于 HTTPS 或文件发现
这种方案提供了一种带外方式在控制平面节点和引导节点之间建立信任根。
如果使用 kubeadm 构建自动配置,请考虑使用此模式。
发现文件的格式为常规的 Kubernetes
kubeconfig 文件。
如果发现文件不包含凭据,则将使用 TLS 发现令牌。
kubeadm join
命令示例:
优势:
- 允许引导节点安全地发现控制平面节点的信任根,即使网络或其他工作节点受到损害。
劣势:
- 要求你有某种方法将发现信息从控制平面节点传送到引导节点。
如果发现文件包含凭据,你必须对其保密并通过安全通道进行传输。
这可能通过你的云提供商或供应工具来实现。
将自定义 kubelet 凭据与 kubeadm join
结合使用
要允许 kubeadm join
使用预定义的 kubelet 凭据并跳过客户端 TLS 引导程序和新节点的 CSR 批准:
- 从集群中带有
/etc/kubernetes/pki/ca.key
的工作控制平面节点执行
kubeadm kubeconfig user --org system:nodes --client-name system:node:$NODE > kubelet.conf
。
$NODE
必须设置为新节点的名称。 - 手动修改生成的
kubelet.conf
以调整集群名称和服务器端点,
或运行 kubeadm kubeconfig user --config
(它接受 InitConfiguration
)。
如果集群没有 ca.key
文件,你必须在外部对 kubelet.conf
中嵌入的证书进行签名。
有关更多信息,请参阅 PKI 证书和要求和
使用 kubeadm 进行证书管理。
- 将生成的
kubelet.conf
复制为新节点上的 /etc/kubernetes/kubelet.conf
。 - 在新节点上带着标志
--ignore-preflight-errors=FileAvailable--etc-kubernetes-kubelet.conf
执行 kubeadm join
。
确保你的安装更加安全
kubeadm 的默认值可能不适用于所有人。
本节说明如何以牺牲可用性为代价来加强 kubeadm 安装。
关闭节点客户端证书的自动批准
默认情况下,Kubernetes 启用了 CSR 自动批准器,如果在身份验证时使用启动引导令牌,
它会批准对 kubelet 的任何客户端证书的请求。
如果不希望集群自动批准 kubelet 客户端证书,可以通过执行以下命令关闭它:
kubectl delete clusterrolebinding kubeadm:node-autoapprove-bootstrap
关闭后,kubeadm join
操作将会被阻塞,直到管理员已经手动批准了在途中的 CSR 才会继续:
使用 kubectl get csr
,你可以看到原来的 CSR 处于 Pending 状态。
输出类似于:
NAME AGE REQUESTOR CONDITION
node-csr-c69HXe7aYcqkS1bKmH4faEnHAWxn6i2bHZ2mD04jZyQ 18s system:bootstrap:878f07 Pending
kubectl certificate approve
允许管理员批准 CSR。
此操作告知证书签名控制器向请求者颁发一个证书,该证书具有 CSR 中所请求的那些属性。
kubectl certificate approve node-csr-c69HXe7aYcqkS1bKmH4faEnHAWxn6i2bHZ2mD04jZyQ
输出类似于:
certificatesigningrequest "node-csr-c69HXe7aYcqkS1bKmH4faEnHAWxn6i2bHZ2mD04jZyQ" approved
这会将 CRS 资源更改为 Active 状态。
输出类似于:
NAME AGE REQUESTOR CONDITION
node-csr-c69HXe7aYcqkS1bKmH4faEnHAWxn6i2bHZ2mD04jZyQ 1m system:bootstrap:878f07 Approved,Issued
这迫使工作流只有在运行了 kubectl certificate approve
后,kubeadm join
才能成功。
关闭对 cluster-info
ConfigMap 的公开访问
为了实现使用令牌作为唯一验证信息的加入工作流,默认情况下会公开带有验证控制平面节点标识所需数据的 ConfigMap。
虽然此 ConfigMap 中没有私有数据,但一些用户可能希望无论如何都关闭它。
这样做需要禁用 kubeadm join
工作流的 --discovery-token
参数。
以下是实现步骤:
- 从 API 服务器获取
cluster-info
文件:
kubectl -n kube-public get cm cluster-info -o jsonpath='{.data.kubeconfig}' | tee cluster-info.yaml
输出类似于:
apiVersion: v1
kind: Config
clusters:
- cluster:
certificate-authority-data: <ca-cert>
server: https://<ip>:<port>
name: ""
contexts: []
current-context: ""
preferences: {}
users: []
这些命令应该在执行 kubeadm init
之后、在 kubeadm join
之前执行。
使用带有配置文件的 kubeadm join
注意:
配置文件目前是 beta 功能,在将来的版本中可能会变动。
可以用配置文件替代命令行参数的方法配置 kubeadm join
,一些进阶功能也只有在使用配置文件时才可选用。
该文件通过 --config
参数来传递,并且文件中必须包含 JoinConfiguration
结构。
在某些情况下,不允许将 --config
与其他标志混合使用。
使用 kubeadm config print
命令可以打印默认配置。
如果你的配置没有使用最新版本,
推荐使用 kubeadm config migrate
命令转换。
有关配置的字段和用法的更多信息,你可以导航到我们的
API 参考页。
接下来
4 - kubeadm upgrade
kubeadm upgrade
是一个对用户友好的命令,它将复杂的升级逻辑包装在一条命令后面,支持升级的规划和实际执行。
kubeadm upgrade 指南
本文档概述使用
kubeadm 执行升级的步骤。与 kubeadm 旧版本相关的文档,请参阅 Kubernetes 网站的旧版文档。
你可以使用 kubeadm upgrade diff
来查看将应用于静态 Pod 清单的更改。
在 Kubernetes v1.15.0 和更高版本中,kubeadm upgrade apply
和 kubeadm upgrade node
也将自动续订节点上的 kubeadm 托管证书,包括存储在 kubeconfig 文件中的证书。
如果不想续订,可以传递参数 --certificate-renewal=false
。
有关证书续订的更多详细信息请参见证书管理文档。
说明:
kubeadm upgrade apply
和 kubeadm upgrade plan
命令都具有遗留的 --config
标志,
可以在执行特定控制平面节点的规划或升级时重新配置集群。
请注意,升级工作流不是为这种情况而设计的,并且有意外结果的报告。
kubeadm upgrade plan
检查可升级到哪些版本,并验证你当前的集群是否可升级。
概述
检查可升级到哪些版本,并验证你当前的集群是否可升级。
该命令只能在存在 kubeconfig 文件 admin.conf
的控制平面节点上运行。
要跳过互联网检查,请传入可选参数 [version]。
kubeadm upgrade plan [version] [flags]
选项
--allow-experimental-upgrades |
| 显示不稳定版本的 Kubernetes 作为升级替代方案,并允许升级到 Kubernetes 的 Alpha、Beta 或 RC 版本。 |
--allow-missing-template-keys Default: true |
| 如果为 true,则当模板中缺少字段或映射键时,忽略模板中的错误。仅适用于 golang 和
jsonpath 输出格式。 |
--allow-release-candidate-upgrades |
| 显示 Kubernetes 的发行候选版本作为升级选择,并允许升级到 Kubernetes 的 RC 版本。 |
--config string |
| 配置文件的路径。 |
-o, --experimental-output string Default: "text" |
| 输出格式为
text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file
其中一种。 |
--feature-gates string |
| 一组描述各种特征特性门控的键值对。选项有: EtcdLearnerMode=true|false (BETA - 默认值=true) PublicKeysECDSA=true|false (DEPRECATED - 默认值=false) RootlessControlPlane=true|false (ALPHA - 默认值=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED - 默认值=false)
WaitForAllControlPlaneComponents=true|false (ALPHA - 默认值=false) |
-h, --help |
| plan 操作的帮助命令。 |
--ignore-preflight-errors strings |
| 其错误将显示为警告的检查列表。例如:'IsPrivilegedUser,Swap'。值 'all' 忽略所有检查错误。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果标志为未设置,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
-o, --output string
默认值:"text" |
--print-config |
| 指定是否打印将在升级中使用的配置文件。 |
--show-managed-fields |
| 如果开启,以 JSON 或 YAML 格式打印对象时会保留 managedField。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向 “真实” 宿主机根文件系统的路径。 |
kubeadm upgrade apply
将 Kubernetes 集群升级到指定版本。
概要
将 Kubernetes 集群升级到指定版本。
kubeadm upgrade apply [version]
选项
--allow-experimental-upgrades |
| 显示 Kubernetes 的不稳定版本作为升级替代方案,并允许升级到 Kubernetes 的 Alpha、Beta 或 RC 版本。 |
--allow-release-candidate-upgrades |
| 显示 Kubernetes 的候选版本作为升级替代方案,并允许升级到 Kubernetes 的 RC 版本。 |
--certificate-renewal Default: true |
| 执行升级期间更改的组件所使用的证书的更新。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不要更改任何状态,只输出要执行的操作。 |
--etcd-upgrade 默认值: true |
| 执行 etcd 的升级。 |
--feature-gates string |
| 一组键值对,用于描述各种功能。选项包括: EtcdLearnerMode=true|false (ALPHA - 默认值=false) PublicKeysECDSA=true|false (BETA - 默认值=true) RootlessControlPlane=true|false (DEPRECATED - 默认值=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED - 默认值=false)
WaitForAllControlPlaneComponents=true|false (ALPHA - 默认值=false) |
-f, --force |
| 强制升级,但可能无法满足某些要求。这也意味着非交互模式。 |
-h, --help |
| apply 操作的帮助命令。 |
-ignore-preflight-errors strings |
| 错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置标志,则在相关目录下搜索以查找现有 kubeconfig 文件。 |
--patches string |
| 包含名为 "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" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 |
--print-config |
| 指定是否应打印将在升级中使用的配置文件。 |
-y, --yes |
| 执行升级,不提示确认(非交互模式)。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
kubeadm upgrade diff
显示哪些差异将被应用于现有的静态 Pod 资源清单。参考:kubeadm upgrade apply --dry-run
概要
显示哪些差异将被应用于现有的静态 Pod 资源清单。另请参考:kubeadm upgrade apply --dry-run
kubeadm upgrade diff [version] [flags]
选项
--api-server-manifest string 默认值:"/etc/kubernetes/manifests/kube-apiserver.yaml" |
| API 服务器清单的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-c, --context-lines int 默认值:3 |
| diff 涉及了多少行上下文。 |
--controller-manager-manifest string 默认值:"/etc/kubernetes/manifests/kube-controller-manager.yaml" |
| 控制器清单的路径。 |
-h, --help |
| diff 操作的帮助命令 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件,如果标志是未设置,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--scheduler-manifest string 默认值:"/etc/kubernetes/manifests/kube-scheduler.yaml" |
| 调度程序清单的路径。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向“真实”主机根文件系统的路径。 |
kubeadm upgrade node
升级集群中某个节点的命令。
概要
升级集群中某个节点的命令。
"node" 命令执行以下阶段:
preflight 执行节点升级前检查
control-plane 如果存在的话,升级部署在该节点上的管理面实例
kubelet-config 更新该节点上的 kubelet 配置
kubeadm upgrade node [flags]
选项
--certificate-renewal 默认值: true |
| 对升级期间变化的组件所使用的证书执行续订。 |
--config string |
| 到 kubeadm 配置文件的路径。 |
--dry-run |
| 不更改任何状态,只输出将要执行的操作。 |
--etcd-upgrade 默认值: true |
| 执行 etcd 的升级。 |
-h, --help |
| node 操作的帮助命令。 |
--ignore-preflight-errors strings |
| 其错误将显示为警告的检查列表。示例:'IsPrivilegedUser,Swap'。值 'all' 忽略所有检查中的错误。 |
--kubeconfig string 默认值: "/etc/kubernetes/admin.conf" |
| 用于与集群交互的 kubeconfig 文件。如果参数未指定,将从一系列标准位置检索存在的 kubeconfig 文件。 |
--patches string |
| 包含名为 "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" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 |
--skip-phases strings |
| 要跳过的阶段的列表。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
接下来
- 如果你使用 kubeadm v1.7.x 或更低版本初始化了集群,则可以参考
kubeadm config,
为
kubeadm upgrade
配置你的集群。
5 - kubeadm config
在 kubeadm init
执行期间,kubeadm 将 ClusterConfiguration
对象上传
到你的集群的 kube-system
名字空间下名为 kubeadm-config
的 ConfigMap 对象中。
然后在 kubeadm join
、kubeadm reset
和 kubeadm upgrade
执行期间读取此配置。
你可以使用 kubeadm config print
命令打印默认静态配置,
kubeadm 运行 kubeadm init
and kubeadm join
时将使用此配置。
说明:
此命令的输出旨在作为示例。你必须手动编辑此命令的输出来适配你的设置。
删除你不确定的字段,kubeadm 将通过检查主机来尝试在运行时给它们设默认值。
更多有关 init
和 join
的信息请浏览使用带配置文件的 kubeadm init
或使用带配置文件的 kubeadm join。
有关使用 kubeadm 的配置 API 的更多信息,
请浏览使用 kubeadm API 来自定义组件。
你可以使用 kubeadm config migrate
来转换旧配置文件,
把其中已弃用的 API 版本更新为受支持的 API 版本。
kubeadm config validate
可用于验证配置文件。
kubeadm config images list
和 kubeadm config images pull
可以用来列出和拉取 kubeadm 所需的镜像。
kubeadm config print
打印配置
概要
此命令打印子命令所提供的配置信息。相关细节可参阅:
https://pkg.go.dev/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm#section-directories
kubeadm config print [flags]
选项
从父命令继承而来的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如此标志未设置,将在一组标准位置中搜索现有的 kubeconfig 文件。 |
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm config print init-defaults
打印用于 'kubeadm init' 的默认 init 配置。
概要
此命令打印对象,例如用于 'kubeadm init' 的默认 init 配置对象。
请注意,Bootstrap Token 字段之类的敏感值已替换为 "abcdef.0123456789abcdef"
之类的占位符值以通过验证,但不执行创建令牌的实际计算。
kubeadm config print init-defaults [flags]
选项
--component-configs strings |
| 以逗号分隔的组件配置 API 对象的列表,打印其默认值。可用值:[KubeProxyConfiguration KubeletConfiguration]。
如果未设置此参数,则不会打印任何组件配置。 |
-h, --help |
| init-defaults 操作的帮助命令。 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm config print join-defaults
打印默认的节点添加配置,该配置可用于 'kubeadm join' 命令。
概要
此命令打印对象,例如用于 'kubeadm join' 的默认 join 配置对象。
请注意,诸如启动引导令牌字段之类的敏感值已替换为 "abcdef.0123456789abcdef" 之类的占位符值以通过验证,
但不执行创建令牌的实际计算。
kubeadm config print join-defaults [flags]
选项
-h, --help |
| join-defaults 操作的帮助命令。 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm config migrate
从文件中读取旧版本的 kubeadm 配置的 API 类型,并为新版本输出类似的配置对象
概要
此命令允许你在 CLI 工具中将本地旧版本的配置对象转换为最新支持的版本,而无需变更集群中的任何内容。
在此版本的 kubeadm 中,支持以下 API 版本:
因此,无论你在此处传递 --old-config 参数的版本是什么,当写入到 stdout 或 --new-config (如果已指定)时,
都会读取、反序列化、默认、转换、验证和重新序列化 API 对象。
换句话说,如果你将此文件传递给 "kubeadm init",则该命令的输出就是 kubeadm 实际上在内部读取的内容。
kubeadm config migrate [flags]
选项
-h, --help |
| migrate 操作的帮助信息。 |
--new-config string |
| 使用新的 API 版本生成的 kubeadm 配置文件的路径。这个路径是可选的。如果没有指定,输出将被写到 stdout。 |
--old-config string |
| 使用旧 API 版本且应转换的 kubeadm 配置文件的路径。此参数是必需的。 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果未设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm config validate
读取包含 kubeadm 配置 API 的文件,并报告所有验证问题。
概要
这个命令允许你验证 kubeadm 配置 API 文件并报告所有警告和错误。
如果没有错误,退出状态将为零;否则,将为非零。
诸如未知 API 字段等任何解包问题都会触发错误。
未知的 API 版本和具有无效值的字段也会触发错误。
根据输入文件的内容,可能会报告任何其他错误或警告。
在这个版本的 kubeadm 中,支持以下 API 版本:
kubeadm config validate [flags]
选项
--allow-experimental-api |
| 允许验证试验性的、未发布的 API。 |
--config string |
| 指向 kubeadm 配置文件的路径。 |
-h, --help |
| validate 的帮助命令。 |
从父命令继承而来的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 在与集群通信时要使用的 kubeconfig 文件。
如果此标志未被设置,则会在一组标准位置中搜索现有的 kubeconfig 文件。 |
--rootfs string |
| [试验性] 指向“真实”主机根文件系统的路径。 |
kubeadm config images list
打印 kubeadm 要使用的镜像列表。配置文件用于自定义镜像或镜像存储库。
概要
打印 kubeadm 要使用的镜像列表。配置文件用于自定义镜像或镜像存储库。
kubeadm config images list [flags]
选项
--allow-missing-template-keys 默认值:true |
| 如果设置为 true,则在模板中缺少字段或哈希表的键时忽略模板中的任何错误。
仅适用于 golang 和 jsonpath 输出格式。 |
--config string |
| kubeadm 配置文件的路径。 |
-o, --experimental-output string 默认值:"text" |
| 输出格式:text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file 其中之一。 |
--feature-gates string |
| 一组键值对(key=value),用于描述各种特性。这些选项是: EtcdLearnerMode=true|false (BETA - 默认值=true) PublicKeysECDSA=true|false (DEPRECATED - 默认值=false) RootlessControlPlane=true|false (ALPHA - 默认值=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED - 默认值=false) WaitForAllControlPlaneComponents=true|false (ALPHA - 默认值=false) |
-h, --help |
| list 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择要从中拉取控制平面镜像的容器仓库。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择一个特定的 Kubernetes 版本。 |
--show-managed-fields |
| 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留 managedFields。 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--rootfs string |
| [实验] 到“真实”主机根文件系统的路径。 |
kubeadm config images pull
拉取 kubeadm 使用的镜像。
概要
拉取 kubeadm 使用的镜像。
kubeadm config images pull [flags]
选项
--config string |
| kubeadm 配置文件的路径。 |
--cri-socket string |
| 要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值;仅当安装了多个 CRI 或具有非标准 CRI 插槽时,才使用此选项。 |
--feature-gates string |
| 一系列键值对(key=value),用于描述各种特性。可选项是: EtcdLearnerMode=true|false (BETA - 默认值=true) PublicKeysECDSA=true|false (DEPRECATED - 默认值=false) RootlessControlPlane=true|false (ALPHA - 默认值=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED - 默认值=false) WaitForAllControlPlaneComponents=true|false (ALPHA - 默认值=false) |
-h, --help |
| pull 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择用于拉取控制平面镜像的容器仓库。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择一个特定的 Kubernetes 版本。 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
接下来
6 - kubeadm reset
该命令尽力还原由 kubeadm init
或 kubeadm join
所做的更改。
尽最大努力还原通过 'kubeadm init' 或者 'kubeadm join' 操作对主机所作的更改。
概要
尽最大努力还原通过 'kubeadm init' 或者 'kubeadm join' 操作对主机所作的更改。
"reset" 命令执行以下阶段:
preflight 重置预检
remove-etcd-member 移除本地 etcd 成员
cleanup-node 清理节点
kubeadm reset [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的目录路径。如果已指定,则需要清空此目录。 |
--cleanup-tmp-dir |
| 清理 "/etc/kubernetes/tmp" 目录。 |
--config string |
| kubeadm 配置文件的路径。 |
--cri-socket string |
| 要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值;
仅当安装了多个 CRI 或存在非标准的 CRI 套接字时,才使用此选项。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-f, --force |
| 在不提示确认的情况下重置节点。 |
-h, --help |
| reset 操作的帮助命令。 |
--ignore-preflight-errors strings |
| 错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该标志,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--skip-phases strings |
| 要跳过的阶段列表。 |
从父命令继承的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
Reset 工作流程
kubeadm reset
负责从使用 kubeadm init
或 kubeadm join
命令创建的文件中清除节点本地文件系统。
对于控制平面节点,reset
还从 etcd 集群中删除该节点的本地 etcd Stacked 部署的成员。
kubeadm reset phase
可用于执行上述工作流程的各个阶段。
要跳过阶段列表,你可以使用 --skip-phases
参数,该参数的工作方式类似于 kubeadm join
和 kubeadm init
阶段运行器。
外部 etcd 清理
如果使用了外部 etcd,kubeadm reset
将不会删除任何 etcd 中的数据。
这意味着,如果再次使用相同的 etcd 端点运行 kubeadm init
,你将看到先前集群的状态。
要清理 etcd 中的数据,建议你使用 etcdctl 这样的客户端,例如:
更多详情请参考 etcd 文档。
体面关闭 kube-apiserver
如果你为 kube-apiserver
配置了 --shutdown-delay-duration
标志,
你可以在运行 kubeadm reset
之前,运行以下命令尝试体面关闭正在运行的 API 服务器 Pod:
yq eval -i '.spec.containers[0].command = []' /etc/kubernetes/manifests/kube-apiserver.yaml
timeout 60 sh -c 'while pgrep kube-apiserver >/dev/null; do sleep 1; done' || true
接下来
7 - kubeadm token
如使用引导令牌进行身份验证所述,
引导令牌用于在即将加入集群的节点和控制平面节点间建立双向认证。
kubeadm init
创建了一个有效期为 24 小时的令牌,下面的命令允许你管理令牌,也可以创建和管理新的令牌。
kubeadm token create
在服务器上创建引导令牌。
概要
这个命令将为你创建一个引导令牌。
你可以设置此令牌的用途,"有效时间" 和可选的人性化的描述。
这里的 [token] 是指将要生成的实际令牌。
该令牌应该是一个通过安全机制生成的随机令牌,形式为 "[a-z0-9]{6}.[a-z0-9]{16}"。
如果没有给出 [token],kubeadm 将生成一个随机令牌。
kubeadm token create [token]
选项
--certificate-key string |
| 当与 “--print-join-command” 一起使用时,打印作为控制平面加入集群时所需的所有 “kubeadm join” 标志。
要创建新的证书密钥,你必须使用 “kubeadm init phase upload-certs --upload-certs”。 |
--config string |
| kubeadm 配置文件的路径。 |
--description string |
| 针对令牌用途的人性化的描述。 |
--groups stringSlice 默认值:[system:bootstrappers:kubeadm:default-node-token] |
| 此令牌用于身份验证时将对其他组进行身份验证。必须匹配 "\\Asystem:bootstrappers:[a-z0-9:-]{0,255}[a-z0-9]\\z" |
-h, --help |
| create 操作的帮助命令。 |
--print-join-command |
| 不仅仅打印令牌,而是打印使用令牌加入集群所需的完整 'kubeadm join' 参数。 |
--ttl duration 默认值:24h0m0s |
| 令牌有效时间,超过该时间令牌被自动删除。(例如:1s, 2m, 3h)。如果设置为 '0',令牌将永远不过期。 |
--usages stringSlice 默认值:[signing,authentication] |
| 描述可以使用此令牌的方式。你可以多次使用 `--usages` 或者提供一个以逗号分隔的选项列表。
合法选项有:[signing,authentication] |
从父命令继承的选项
--dry-run |
| 是否启用 `dry-run` 运行模式。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
kubeadm token delete
删除服务器上的引导令牌。
概要
这个命令将为你删除指定的引导令牌列表。
[token-value]
是要删除的 "[a-z0-9]{6}.[a-z0-9]{16}" 形式的完整令牌或者是 "[a-z0-9]{6}" 形式的令牌 ID。
kubeadm token delete [token-value] ...
选项
-h, --help |
| delete 操作的帮助命令。 |
从父命令继承的选项
--dry-run |
| 是否启用 `dry-run` 运行模式。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
kubeadm token generate
生成并打印一个引导令牌,但不要在服务器上创建它。
概要
此命令将打印一个随机生成的可以被 "init" 和 "join" 命令使用的引导令牌。
你不必使用此命令来生成令牌。你可以自己设定,只要格式符合 "[a-z0-9]{6}.[a-z0-9]{16}"。
之所以提供这个命令是为了方便生成规定格式的令牌。
你也可以使用 "kubeadm init" 并且不指定令牌,该命令会生成一个令牌并打印出来。
kubeadm token generate [flags]
选项
-h, --help |
| generate 操作的帮助命令。 |
从父命令继承的选项
--dry-run |
| 是否启用 `dry-run` 模式。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
kubeadm token list
列出服务器上的引导令牌。
概要
此命令将为你列出所有的引导令牌。
kubeadm token list [flags]
选项
--allow-missing-template-keys 默认值:true |
| 如果设置为 true,则在模板中缺少字段或哈希表的键时忽略模板中的任何错误。
仅适用于 golang 和 jsonpath 输出格式。 |
-o, --experimental-output string 默认值:"text" |
| 输出格式:text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file 其中之一 |
-h, --help |
| list 操作的帮助命令。 |
--show-managed-fields |
| 如果为 true,则在以 JSON 或 YAML 格式打印对象时保留 managedFields。 |
从父命令继承的选项
--dry-run |
| 是否启用 `dry-run` 模式。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
接下来
8 - kubeadm version
此命令用来输出 kubeadm 的版本。
打印 kubeadm 的版本。
概要
打印 kubeadm 的版本。
kubeadm version [flags]
选项
-h, --help |
| version 操作的帮助命令。 |
-o, --output string |
| 输出格式;可用的选项有 'yaml'、'json' 和 'short'。 |
从父命令继承的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。设置此标志将导致 kubeadm 切换到所提供的路径。 |
9 - kubeadm alpha
注意:
kubeadm alpha
提供了一组可用于收集社区反馈的预览性质功能。
请试用这些功能并给我们提供反馈!
目前在 kubeadm alpha
之下没有试验性质的命令。
接下来
10 - kubeadm certs
kubeadm certs
提供管理证书的工具。关于如何使用这些命令的细节,
可参见使用 kubeadm 管理证书。
kubeadm certs
用来操作 Kubernetes 证书的一组命令。
处理 Kubernetes 证书的相关命令。
概要
处理 Kubernetes 证书相关的命令。
kubeadm certs [flags]
选项
从父命令继承的选项
--rootfs string |
| [实验] 到'真实'主机根文件系统的路径。 |
kubeadm certs renew
你可以使用 all
子命令来续订所有 Kubernetes 证书,也可以选择性地续订部分证书。更多的相关细节,
可参见手动续订证书。
为 Kubernetes 集群更新证书
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm certs renew [flags]
选项
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
续订所有可用证书。
概要
续订运行控制平面所需的所有已知证书。续订是无条件进行的,与到期日期无关。续订也可以单独运行以进行更多控制。
kubeadm certs renew all [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| all 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--use-api |
| 使用 Kubernetes 证书 API 续订证书。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
续订 kubeconfig 文件中嵌入的证书,供管理员和 kubeadm 自身使用。
概要
续订 kubeconfig 文件中嵌入的证书,供管理员和 kubeadm 自身使用。
无论证书的到期日期如何,续订都是无条件进行的;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用由 kubeadm 管理的本地 PKI 中的证书机构;作为替代方案,
也可以使用 K8s 证书 API 进行证书续订,或者(作为最后一种选择)生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防证书文件在其他地方使用。
kubeadm certs renew admin.conf [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存证书的路径。 |
--config string |
| 到 kubeadm 配置文件的路径。 |
-h, --help |
| admin.conf 操作的帮助命令。 |
--kubeconfig string Default: "/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--use-api |
| 使用 Kubernetes 证书 API 续订证书。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
续订 apiserver 用于访问 etcd 的证书。
概要
续订 apiserver 用于访问 etcd 的证书。
无论证书的到期日期如何,续订都会无条件地进行;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订尝试使用在 kubeadm 所管理的本地 PKI 中的证书颁发机构;作为替代方案,
可以使用 K8s 证书 API 进行证书更新,或者作为最后一个选择来生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew apiserver-etcd-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| apiserver-etcd-client 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
续订 apiserver 用于连接 kubelet 的证书。
概要
续订 apiserver 用于连接 kubelet 的证书。
无论证书的到期日期如何,续订都会无条件地进行;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订尝试使用位于 kubeadm 所管理的本地 PKI 中的证书颁发机构;作为替代方案,
也可能调用 K8s 证书 API 进行证书更新;亦或者,作为最后一个选择,生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew apiserver-kubelet-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| apiserver-kubelet-client 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--use-api |
| 使用 Kubernetes 证书 API 续订证书。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
续订用于提供 Kubernetes API 的证书。
概要
续订用于提供 Kubernetes API 的证书。
无论证书的到期日期如何,续订都会无条件地进行;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订尝试在 kubeadm 管理的本地 PKI 中使用证书颁发机构;作为替代方案,
可以使用 K8s 证书 API 进行证书更新,或者作为最后一个选择来生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew apiserver [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| apiserver 子操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
续订 kubeconfig 文件中嵌入的证书,以供控制器管理器(Controller Manager)使用。
概要
续订 kubeconfig 文件中嵌入的证书,以供控制器管理器(Controller Manager)使用。
续订无条件地进行,与证书的到期日期无关;SAN 等额外属性将基于现有的文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用 kubeadm 管理的本地 PKI 中的证书颁发机构;作为替代方案,
可以使用 K8s 证书 API 进行证书续订;亦或者,作为最后一种选择,生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew controller-manager.conf [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| controller-manager.conf 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--use-api |
| 使用 Kubernetes 证书 API 续订证书。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
续订存活态探针的证书,用于对 etcd 执行健康检查。
概要
续订存活态探针的证书,用于对 etcd 执行健康检查。
无论证书的到期日期如何,续订都是无条件进行的;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用由 kubeadm 管理的本地 PKI 中的证书机构;作为替代方案,
也可以使用 K8s certificate API 进行证书续订,或者(作为最后一种选择)生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防证书文件在其他地方使用。
kubeadm certs renew etcd-healthcheck-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| etcd-healthcheck-client 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
续订 etcd 节点间用来相互通信的证书。
概要
续订 etcd 节点间用来相互通信的证书。
无论证书的到期日期如何,续订都是无条件进行的;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用由 kubeadm 管理的本地 PKI 中的证书机构;
作为替代方案,也可以使用 K8s certificate API 进行证书续订,或者(作为最后一种选择)生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发续订的证书,以防证书文件在其他地方使用。
kubeadm certs renew etcd-peer [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| etcd-peer 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--use-api |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
续订用于提供 etcd 服务的证书。
概要
续订用于提供 etcd 服务的证书。
续订无条件地进行,与证书的到期日期无关;SAN 等额外属性将基于现有的文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试在 kubeadm 管理的本地 PKI 中使用证书颁发机构;作为替代方案,
可以使用 K8s 证书 API 进行证书续订,或者作为最后一种选择来生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发续订的证书,以防文件在其他地方使用。
kubeadm certs renew etcd-server [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| etcd-server 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--use-api |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
为前端代理客户端续订证书。
概要
为前端代理客户端续订证书。
无论证书的到期日期如何,续订都会无条件地进行;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订尝试使用位于 kubeadm 所管理的本地 PKI 中的证书颁发机构;作为替代方案,
也可以使用 K8s certificate API 进行证书续订;亦或者,作为最后一种方案,生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew front-proxy-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| front-proxy-client 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--use-api |
| 使用 Kubernetes certificate API 续订证书。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
续订 kubeconfig 文件中嵌入的证书,以供调度管理器使用。
概要
续订 kubeconfig 文件中嵌入的证书,以供调度管理器使用。
续订无条件地进行,与证书的到期日期无关;SAN 等额外属性将基于现有的文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用在 kubeadm 所管理的本地 PKI 中的证书颁发机构;作为替代方案,
也可以使用 K8s certificate API 进行证书续订;亦或者,作为最后一种选择,生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew scheduler.conf [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| scheduler.conf 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
为 super-admin 对嵌入于 kubeconfig 文件中的证书续期。
概要
为 super-admin 对嵌入于 kubeconfig 文件中的证书续期。
续期操作将无条件进行,不论证书的到期日期是何时;诸如 SAN 之类的额外属性将基于现有文件/证书,无需重新提供。
默认情况下,续期会尝试使用由 kubeadm 管理的本地 PKI 中的证书颁发机构;
作为替代方案,可以使用 K8s 证书 API 进行证书续期,或者作为最后的选项,生成一个 CSR 请求。
续期后,为了使更改生效,需要重启控制平面组件,并且如果该文件在其他地方使用,最终需要重新分发续期后的证书。
kubeadm certs renew super-admin.conf [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
-h, --help |
| super-admin.conf 的帮助信息。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。
如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| [实验性功能] 指向‘真实’宿主根文件系统的路径。 |
kubeadm certs certificate-key
此命令可用来生成一个新的控制面证书密钥。密钥可以作为 --certificate-key
标志的取值传递给 kubeadm init
和 kubeadm join
命令,从而在添加新的控制面节点时能够自动完成证书复制。
生成证书密钥。
概要
该命令将打印出可以与 "init" 命令一起使用的安全的随机生成的证书密钥。
你也可以使用 kubeadm init --upload-certs
而无需指定证书密钥;
此命令将为你生成并打印一个证书密钥。
kubeadm certs certificate-key [flags]
选项
-h, --help |
| certificate-key 操作的帮助命令。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm certs check-expiration
此命令检查 kubeadm 所管理的本地 PKI 中的证书是否以及何时过期。更多的相关细节,
可参见检查证书过期。
为一个 Kubernetes 集群检查证书的到期时间。
概要
检查 kubeadm 管理的本地 PKI 中证书的到期时间。
kubeadm certs check-expiration [flags]
选项
--allow-missing-template-keys 默认值:true |
| 如果为 true,忽略模板中缺少某字段或映射键的错误。仅适用于 golang 和 jsonpath 输出格式。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存证书的路径。 |
--config string |
| 到 kubeadm 配置文件的路径。 |
-o, --experimental-output string 默认值:"text" |
| 输出格式。可选值为:
text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file。 |
-h, --help |
| check-expiration 操作的帮助命令。 |
--kubeconfig string 默认为:"/etc/kubernetes/admin.conf" |
| 在和集群连接时使用该 kubeconfig 文件。
如果此标志未被设置,那么将会在一些标准的位置去搜索存在的 kubeconfig 文件。 |
--show-managed-fields |
| 如果为 true,在以 JSON 或 YAML 格式打印对象时保留 managedFields。 |
从父命令继承的选项
--rootfs string |
| [实验] 到'真实'主机根文件系统的路径。 |
kubeadm certs generate-csr
此命令可用来为所有控制面证书和 kubeconfig 文件生成密钥和 CSR(签名请求)。
用户可以根据自身需要选择 CA 为 CSR 签名。要了解如何使用该命令的更多信息,
请参阅签署由 kubeadm 生成的证书签名请求(CSR)。
生成密钥和证书签名请求。
概要
为运行控制平面所需的所有证书生成密钥和证书签名请求(CSR)。该命令会生成部分 kubeconfig 文件,
其中 "users > user > client-key-data" 字段包含私钥数据,并为每个 kubeconfig
文件创建一个随附的 ".csr" 文件。
此命令设计用于 Kubeadm 外部 CA 模式。
它生成你可以提交给外部证书颁发机构进行签名的 CSR。
你需要使用 ".crt" 作为文件扩展名将 PEM 编码的签名证书与密钥文件一起保存。
或者,对于 kubeconfig 文件,PEM 编码的签名证书应使用 base64 编码,
并添加到 "users > user > client-certificate-data" 字段。
kubeadm certs generate-csr [flags]
示例
# 以下命令将为所有控制平面证书和 kubeconfig 文件生成密钥和 CSR:
kubeadm certs generate-csr --kubeconfig-dir /tmp/etc-k8s --cert-dir /tmp/etc-k8s/pki
选项
--cert-dir string |
| 保存证书的路径。 |
--config string |
| 到 kubeadm 配置文件的路径。 |
-h, --help |
| generate-csr 操作的帮助命令。 |
--kubeconfig-dir string 默认值:"/etc/kubernetes" |
| 保存 kubeconfig 文件的路径。 |
从父命令继承的选项
--rootfs string |
| [实验] 到'真实'主机根文件系统的路径。 |
接下来
11 - kubeadm init phase
kubeadm init phase
能确保调用引导过程的原子步骤。
因此,如果希望自定义应用,则可以让 kubeadm 做一些工作,然后填补空白。
kubeadm init phase
与 kubeadm init 工作流
一致,后台都使用相同的代码。
kubeadm init phase preflight
使用此命令可以在控制平面节点上执行启动前检查。
运行预检。
概要
运行 kubeadm init 前的预检。
kubeadm init phase preflight [flags]
示例
# 使用配置文件对 kubeadm init 进行预检
kubeadm init phase preflight --config kubeadm-config.yaml
选项
--config string |
| kubeadm 配置文件的路径。 |
--cri-socket string |
| 要连接的 CRI 套接字的路径。如果该值为空,kubeadm 将尝试自动检测;
仅当你安装了多个 CRI 或使用非标准的 CRI 套接字时才应使用此选项。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| preflight 操作的帮助命令。 |
--ignore-preflight-errors strings |
| 错误将显示为警告的检查列表。例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择拉取控制平面镜像的容器仓库。 |
继承于父命令的选项
--rootfs string |
| [实验] 到'真实'主机根文件系统的路径。 |
kubeadm init phase kubelet-start
此阶段将写入 kubelet 配置文件和环境文件,然后启动 kubelet。
编写 kubelet 配置并(重新)启动 kubelet
概要
使用 kubelet 配置文件编写一个文件,并使用特定节点的 kubelet 设置编写一个环境文件,然后(重新)启动 kubelet。
kubeadm init phase kubelet-start [flags]
示例
# 将来自 InitConfiguration 文件中的 kubelet 参数写入一个动态环境文件。
kubeadm init phase kubelet-start --config config.yaml
选项
--config string |
| kubeadm 配置文件的路径。 |
--cri-socket string |
| 连接到 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测该值;仅当安装了多个 CRI 或具有非标准 CRI 套接字时,才使用此选项。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| kubelet-start 操作的帮助命令 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择一个容器镜像仓库来从中拉取控制平面组件的镜像 |
--node-name string |
| 指定节点名称。 |
--patches string |
| 目录路径,指向包含名为 “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" 是一个可选字符串,可用于确定按字母顺序首先应用哪些补丁。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm init phase certs
该阶段可用于创建 kubeadm 所需的所有证书。
证书生成。
概要
此命令不应单独运行。请参阅可用子命令列表。
kubeadm init phase certs [flags]
选项
从父指令中继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
生成所有证书。
概要
生成所有证书。
kubeadm init phase certs all [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,将使用默认网络接口。 |
--apiserver-cert-extra-sans strings |
| 用于 API 服务器服务证书的可选额外替代名称(SAN)。可以同时使用 IP 地址和 DNS 名称。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 证书的存储路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| all 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
--service-cidr string 默认值:"10.96.0.0/12" |
| VIP 服务使用其它的 IP 地址范围。 |
--service-dns-domain string 默认值:"cluster.local" |
| 服务使用其它的域名,例如:"myorg.internal"。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
生成自签名的 Kubernetes CA 以便为其他 Kubernetes 组件提供身份标识。
概要
生成自签名的 Kubernetes CA 以便为其他 Kubernetes 组件提供身份标识,并将其保存到 ca.crt 和 ca.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
kubeadm init phase certs ca [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 证书的存储路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| ca 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
生成用于服务 Kubernetes API 的证书。
概要
生成用于服务 Kubernetes API 的证书,并将其保存到 apiserver.crt 和 apiserver.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
kubeadm init phase certs apiserver [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认的网络接口。 |
--apiserver-cert-extra-sans strings |
| 用于 API Server 服务证书的可选附加主体备用名称(SAN)。可以是 IP 地址和 DNS 名称。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 证书的存储路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| apiserver 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定特定的 Kubernetes 版本。 |
--service-cidr string 默认值:"10.96.0.0/12" |
| 指定服务 VIP 可使用的其他 IP 地址段。 |
--service-dns-domain string 默认值:"cluster.local" |
| 为服务使用其他域名,例如 "myorg.internal"。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
生成供 API 服务器连接 kubelet 的证书。
概要
生成供 API 服务器连接 kubelet 的证书,并将其保存到 apiserver-kubelet-client.crt 和 apiserver-kubelet-client.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
kubeadm init phase certs apiserver-kubelet-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| apiserver-kubelet-client 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string |
| [实验] 指向宿主机上的 '实际' 根文件系统的路径。 |
生成自签名 CA 来提供前端代理的身份。
概要
生成自签名 CA 来提供前端代理的身份,并将其保存到 front-proxy-ca.cert 和 front-proxy-ca.key 文件中。
如果两个文件都已存在,kubeadm 将跳过生成步骤并将使用现有文件。
kubeadm init phase certs front-proxy-ca [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| front-proxy-ca 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
为前端代理客户端生成证书。
概要
为前端代理客户端生成证书,并将其保存到 front-proxy-client.crt 和 front-proxy-client.key 文件中。
如果两个文件都已存在,kubeadm 将跳过生成步骤并将使用现有文件。
kubeadm init phase certs front-proxy-client [flags]
选项
--cert-dir string 默认:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| front-proxy-client 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
生成用于为 etcd 设置身份的自签名 CA。
概要
生成用于为 etcd 设置身份的自签名 CA,并将其保存到 etcd/ca.crt 和 etcd/ca.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
kubeadm init phase certs etcd-ca [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 证书的存储路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| etcd-ca 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
生成用于提供 etcd 服务的证书。
概要
生成用于提供 etcd 服务的证书,并将其保存到 etcd/server.crt 和 etcd/server.key 文件中。
默认 SAN 为 localhost、127.0.0.1、127.0.0.1、:: 1
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
kubeadm init phase certs etcd-server [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| etcd-server 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
生成 etcd 节点相互通信的证书。
概要
生成 etcd 节点相互通信的证书,并将其保存到 etcd/peer.crt 和 etcd/peer.key 文件中。
默认 SAN 为 localhost、127.0.0.1、127.0.0.1、:: 1
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
kubeadm init phase certs etcd-peer [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| etcd-peer 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
生成用于 etcd 健康检查的活跃性探针的证书。
概要
生成用于 etcd 健康检查的活跃性探针的证书,并将其保存到 etcd/healthcheck-client.crt 和 etcd/healthcheck-client.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
kubeadm init phase certs etcd-healthcheck-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 证书存储的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| etcd-healthcheck-client 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
生成 apiserver 用来访问 etcd 的证书。
概要
生成 apiserver 用于访问 etcd 的证书,并将其保存到 apiserver-etcd-client.crt 和 apiserver-etcd-client.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
kubeadm init phase certs apiserver-etcd-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 证书的存储路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| apiserver-etcd-client 操作的帮助命令。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
生成用来签署服务账号令牌的私钥及其公钥。
概要
生成用来签署服务账号令牌的私钥及其公钥,并将其保存到 sa.key 和 sa.pub 文件中。
如果两个文件都已存在,则 kubeadm 会跳过生成步骤,而将使用现有文件。
kubeadm init phase certs sa [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
-h, --help |
| sa 操作的帮助命令。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm init phase kubeconfig
可以通过调用 all
子命令来创建所有必需的 kubeconfig 文件,或者分别调用它们。
生成所有建立控制平面和管理员(admin)所需的 kubeconfig 文件。
概要
此命令并非设计用来单独运行。请阅读可用子命令列表。
kubeadm init phase kubeconfig [flags]
选项
-h, --help |
| kubeconfig 操作的帮助命令 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
生成所有 kubeconfig 文件。
概要
生成所有 kubeconfig 文件。
kubeadm init phase kubeconfig all [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果没有设置,将使用默认的网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| 要绑定到 API 服务器的端口。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| all 操作的帮助命令。 |
--kubeconfig-dir string 默认值:"/etc/kubernetes" |
| kubeconfig 文件的保存路径。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定特定的 Kubernetes 版本。 |
--node-name string |
| 指定节点名称。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
为管理员(admin)和 kubeadm 本身生成 kubeconfig 文件。
概要
为管理员和 kubeadm 本身生成 kubeconfig 文件,并将其保存到 admin.conf 文件中。
kubeadm init phase kubeconfig admin [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认的网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| 要绑定到 API 服务器的端口。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| admin 操作的帮助命令。 |
--kubeconfig-dir string 默认值:"/etc/kubernetes" |
| kubeconfig 文件的保存路径。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
为 kubelet 生成一个 kubeconfig 文件,仅仅用于集群引导目的。
概要
生成 kubelet 要使用的 kubeconfig 文件,并将其保存到 kubelet.conf 文件。
请注意,该操作目的是仅用于引导集群。在控制平面启动之后,应该从 CSR API 请求所有 kubelet 凭据。
kubeadm init phase kubeconfig kubelet [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认的网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| 要绑定到 API 服务器的端口。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| kubelet 操作的帮助命令。 |
--kubeconfig-dir string 默认值:"/etc/kubernetes" |
| kubeconfig 文件的保存路径。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
--node-name string |
| 指定节点的名称。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
生成控制器管理器要使用的 kubeconfig 文件。
概要
生成控制器管理器要使用的 kubeconfig 文件,并保存到 controller-manager.conf 文件中。
kubeadm init phase kubeconfig controller-manager [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认的网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| 要绑定到 API 服务器的端口。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 | --dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| controller-manager 操作的帮助命令。 |
--kubeconfig-dir string 默认值:"/etc/kubernetes" |
| kubeconfig 文件的保存路径。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs 字符串 |
| [实验] 到 '真实' 主机根文件系统的路径。 |
生成调度器使用的 kubeconfig 文件。
概要
生成调度器(scheduler)要使用的 kubeconfig 文件,并保存到 scheduler.conf 文件中。
kubeadm init phase kubeconfig scheduler [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认的网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| 要绑定到 API 服务器的端口。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| scheduler 操作的帮助命令。 |
--kubeconfig-dir string 默认值:"/etc/kubernetes" |
| kubeconfig 文件的保存路径。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
为 super-admin 生成一个 kubeconfig 文件。
概要
为 super-admin 生成一个 kubeconfig 文件,并将其保存到 super-admin.conf 文件中。
kubeadm init phase kubeconfig super-admin [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布其监听的 IP 地址。如果未设置,则使用默认的网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| API 服务器绑定的端口。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| super-admin 的帮助信息。 |
--kubeconfig-dir string 默认值:"/etc/kubernetes" |
| 保存 kubeconfig 文件的路径。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面指定一个特定的 Kubernetes 版本。 |
从父命令继承的选项
--rootfs string |
| [实验性功能] 指向‘真实’宿主根文件系统的路径。 |
kubeadm init phase control-plane
使用此阶段,可以为控制平面组件创建所有必需的静态 Pod 文件。
生成建立控制平面所需的静态 Pod 清单文件。
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm init phase control-plane [flags]
选项
-h, --help |
| control-plane 操作的帮助命令。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
生成所有静态 Pod 清单文件。
概要
生成所有的静态 Pod 清单文件。
kubeadm init phase control-plane all [flags]
示例
# 为控制平面组件生成静态 Pod 清单文件,其功能等效于 kubeadm init 生成的文件。
kubeadm init phase control-plane all
# 使用从某配置文件中读取的选项为生成静态 Pod 清单文件。
kubeadm init phase control-plane all --config config.yaml
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,将使用默认的网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| API 服务器要绑定的端口。 |
--apiserver-extra-args <逗号分割的 'key=value' 对> |
| 形式为 <flagname>=<value> 的一组额外参数,用来传递给 API 服务器,
或者覆盖其默认配置值。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面选择一个稳定的 IP 地址或者 DNS 名称。 |
--controller-manager-extra-args <逗号分割的 'key=value' 对> |
| 一组形式为 <flagname>=<value> 的额外参数,用来传递给控制管理器(Controller Manager)
或覆盖其默认设置值。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
--feature-gates string |
| 一组用来描述各种特性门控的键值(key=value)对。选项是: EtcdLearnerMode=true|false (BETA - 默认值=true) PublicKeysECDSA=true|false (DEPRECATED - 默认值=false) RootlessControlPlane=true|false (ALPHA - 默认值=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED - 默认值=false)
WaitForAllControlPlaneComponents=true|false (ALPHA - 默认值=false) |
-h, --help |
| all 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择用于拉取控制平面镜像的容器仓库。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择指定的 Kubernetes 版本。 |
--patches string |
| 包含名为 "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" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 |
--pod-network-cidr string |
| 指定 Pod 网络的 IP 地址范围。如果设置了此标志,控制平面将自动地为每个节点分配 CIDR。 |
--scheduler-extra-args <逗号分割的 'key=value' 对> |
| 一组形式为 <flagname>=<value> 的额外参数,用来传递给调度器(Scheduler)
或覆盖其默认设置值。 |
--service-cidr string 默认值:"10.96.0.0/12" |
| 为服务 VIP 选择 IP 地址范围。 |
从父指令继承的选项
--rootfs string |
| [实验] 指向'真实'宿主机的根文件系统的路径。 |
生成 kube-apiserver 静态 Pod 清单。
概要
生成 kube-apiserver 静态 Pod 清单。
kubeadm init phase control-plane apiserver [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,将使用默认网络接口。 |
--apiserver-bind-port int32 默认值: 6443 |
| 要绑定到 API 服务器的端口。 |
--apiserver-extra-args <逗号分隔的 'key=value' 对> |
| 一组 <flagname>=<value> 形式的额外参数,用来传递给 API
服务器或者覆盖其默认参数配置。 |
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
--feature-gates string |
| 一组键值对,用于描述各种功能特性的特性门控。选项是: EtcdLearnerMode=true|false (BETA - 默认值=true) PublicKeysECDSA=true|false (DEPRECATED - 默认值=false) RootlessControlPlane=true|false (ALPHA - 默认值=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED - 默认值=false) WaitForAllControlPlaneComponents=true|false (ALPHA - 默认值=false) |
-h, --help |
| apiserver 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择要从中拉取控制平面镜像的容器仓库。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
--patches string |
| 包含名为 "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" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 |
--service-cidr string 默认值:"10.96.0.0/12" |
| 指定服务 VIP 使用 IP 地址的其他范围。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统路径。 |
生成 kube-controller-manager 静态 Pod 清单。
概要
生成 kube-controller-manager 静态 Pod 清单。
kubeadm init phase control-plane controller-manager [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--controller-manager-extra-args <comma-separated 'key=value' pairs> |
| 一组 <flagname>=< 形式的额外参数,传递给控制器管理器(Controller Manager)
或者覆盖其默认配置值 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| controller-manager 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.ioo" |
| 选择要从中拉取控制平面镜像的容器仓库。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
--patches string |
| 包含名为 "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
所支持的 patch 格式相匹配。默认的 "patchtype" 是 "strategic"。
"extension" 必须是 "json" 或 "yaml"。
"suffix" 是一个可选的字符串,用来确定按字母顺序排序时首先应用哪些 patch。 |
--pod-network-cidr string |
| 指定 Pod 网络的 IP 地址范围。如果设置,控制平面将自动为每个节点分配 CIDR。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
生成 kube-scheduler 静态 Pod 清单。
概要
生成 kube-scheduler 静态 Pod 清单。
kubeadm init phase control-plane scheduler [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| scheduler 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择要从中拉取控制平面镜像的容器仓库。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
--patches string |
| 包含名为 "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
所支持的 patch 格式相匹配。默认的 "patchtype" 是 "strategic"。
"extension" 必须是 "json" 或 "yaml"。
"suffix" 是一个可选的字符串,用来确定按字母顺序排序时首先应用哪些 patch。 |
--scheduler-extra-args <逗号分隔的 'key=value' 键值对> |
| 一组 <flagname>=<value> 形式的额外参数,用来传递给调度器或者覆盖其默认参数配置。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm init phase etcd
根据静态 Pod 文件,使用以下阶段创建一个本地 etcd 实例。
为本地 etcd 生成静态 Pod 的清单文件。
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm init phase etcd [flags]
选项
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
为本地单节点 etcd 实例生成静态 Pod 清单文件。
概要
为本地单节点 etcd 实例生成静态 Pod 清单文件。
kubeadm init phase etcd local [flags]
示例
# 为 etcd 生成静态 Pod 清单文件,其功能等效于 kubeadm init 生成的文件。
kubeadm init phase etcd local
# 使用从配置文件读取的选项为 etcd 生成静态 Pod 清单文件。
kubeadm init phase etcd local --config config.yaml
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| local 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择要从中拉取控制平面镜像的容器仓库。 |
--patches string |
| 包含名为 "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" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm init phase upload-config
可以使用此命令将 kubeadm 配置上传到集群。或者使用
kubeadm config。
上传 kubeadm 和 kubelet 配置到 ConfigMap 中。
概要
此命令并非设计用来单独运行。请参阅可用的子命令列表。
kubeadm init phase upload-config [flags]
选项
-h, --help |
| upload-config 操作的帮助命令。 |
从父命令中继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
将所有配置上传到 ConfigMap。
概要
将所有配置上传到 ConfigMap
kubeadm init phase upload-config all [flags]
选项
--config string |
| kubeadm 配置文件的路径。 |
--cri-socket string |
| 要连接的 CRI 套接字的路径。如果该值为空,kubeadm 将尝试自动检测;
仅当你安装了多个 CRI 或使用非标准的 CRI 套接字时才应使用此选项。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| all 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
将 kubeadm ClusterConfiguration 上传到 ConfigMap。
概要
将 kubeadm ClusterConfiguration 上传到 kube-system 命名空间中名为 kubeadm-config 的 ConfigMap 中。
这样就可以正确配置系统组件,并在升级时提供无缝的用户体验。
另外,可以使用 kubeadm 配置。
kubeadm init phase upload-config kubeadm [flags]
示例
# 上传集群配置
kubeadm init phase upload-config --config=myConfig.yaml
选项
--config string |
| kubeadm 配置文件的路径。 |
--cri-socket string |
| 要连接的 CRI 套接字的路径。如果该值为空,kubeadm 将尝试自动检测;
仅当你安装了多个 CRI 或使用非标准的 CRI 套接字时才应使用此选项。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| kubeadm 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
将 kubelet 组件配置上传到 ConfigMap。
概要
将从 kubeadm InitConfiguration 对象提取的 kubelet 配置上传到集群中的
kubelet-config
ConfigMap。
kubeadm init phase upload-config kubelet [flags]
示例
# 将 kubelet 配置从 kubeadm 配置文件上传到集群中的 ConfigMap。
kubeadm init phase upload-config kubelet --config kubeadm.yaml
选项
--config string |
| 到 kubeadm 配置文件的路径。 |
--cri-socket string |
| 要连接的 CRI 套接字的路径。如果该值为空,kubeadm 将尝试自动检测;
仅当你安装了多个 CRI 或使用非标准的 CRI 套接字时才应使用此选项。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| kubelet 操作的帮助命令。 |
-- kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该标签,
则可以通过一组标准路径来寻找已有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm init phase upload-certs
使用以下阶段将控制平面证书上传到集群。默认情况下,证书和加密密钥会在两个小时后过期。
将证书上传到 kubeadm-certs。
概要
将控制平面证书上传到 kubeadm-certs Secret。
kubeadm init phase upload-certs [flags]
选项
--certificate-key string |
| 用于加密 kubeadm-certs Secret 中的控制平面证书的密钥。
证书密钥是十六进制编码的字符串,是大小为 32 字节的 AES 密钥。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| upload-certs 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用来与集群通信的 kubeconfig 文件。
如果此标志未设置,则可以在一组标准的位置搜索现有的 kubeconfig 文件。 |
--skip-certificate-key-print |
| 不要打印输出用于加密控制平面证书的密钥。 |
--upload-certs |
| 将控制平面证书上传到 kubeadm-certs Secret。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm init phase mark-control-plane
使用以下阶段来给作为控制平面的节点
打标签(label)和记录污点(taint)。
标记节点为控制平面节点。
概要
标记节点为控制平面节点。
kubeadm init phase mark-control-plane [flags]
示例
# 将控制平面标签和污点应用于当前节点,其功能等效于 kubeadm init 执行的操作
kubeadm init phase mark-control-plane --config config.yaml
# 将控制平面标签和污点应用于特定节点
kubeadm init phase mark-control-plane --node-name myNode
选项
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| mark-control-plane 操作的帮助命令。 |
--node-name string |
| 指定节点名称。 |
从父命令继承的选项
--rootfs 字符串 |
| [实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm init phase bootstrap-token
使用以下阶段来配置引导令牌。
生成用于将节点加入集群的引导令牌
概要
启动引导令牌(bootstrap token)用于在即将加入集群的节点和控制平面节点之间建立双向信任。
该命令使启动引导令牌(bootstrap token)所需的所有配置生效,然后创建初始令牌。
kubeadm init phase bootstrap-token [flags]
示例
# 进行所有引导令牌配置,并创建一个初始令牌,功能上与 kubeadm init 生成的令牌等效。
kubeadm init phase bootstrap-token
选项
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| bootstrap-token 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--skip-token-print |
| 跳过打印 'kubeadm init' 生成的默认引导令牌。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm init phase kubelet-finalize
使用以下阶段在 TLS 引导后更新与 kubelet 相关的设置。
你可以使用 all
子命令来运行所有 kubelet-finalize
阶段。
TLS 引导后更新与 kubelet 相关的设置
概要
TLS 引导后更新与 kubelet 相关的设置
kubeadm init phase kubelet-finalize [flags]
示例
# 在 TLS 引导后更新与 kubelet 相关的设置
kubeadm init phase kubelet-finalize all --config
选项
-h, --help |
| kubelet-finalize 操作的帮助命令 |
继承于父命令的选项
--rootfs string |
| [实验] 到'真实'主机根文件系统的路径。 |
运行 kubelet-finalize 的所有阶段
概要
运行 kubelet-finalize 的所有阶段
kubeadm init phase kubelet-finalize all [flags]
示例
# 在 TLS 引导后更新与 kubelet 相关的设置
kubeadm init phase kubelet-finalize all --config
选项
--cert-dir string 默认值: "/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| all 操作的帮助命令 |
继承于父命令的选项
--rootfs string |
| [实验] 到'真实'主机根文件系统的路径。 |
启用 kubelet 客户端证书轮换
概要
启用 kubelet 客户端证书轮换
kubeadm init phase kubelet-finalize experimental-cert-rotation [flags]
选项
--cert-dir string Default: "/etc/kubernetes/pki" |
| 保存和存储证书的路径。 |
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| experimental-cert-rotation 操作的帮助命令 |
继承于父命令的选项
--rootfs string |
| [实验] 到'真实'主机根文件系统的路径。 |
kubeadm init phase addon
可以使用 all
子命令安装所有可用的插件,或者有选择性地安装它们。
安装必要的插件以通过一致性测试。
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm init phase addon [flags]
选项
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
安装所有插件。
概要
安装所有插件(addon)。
kubeadm init phase addon all [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,则将使用默认网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| API 服务器绑定的端口。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
--feature-gates string |
| 一组键值对(key=value),描述了各种特征。选项包括: EtcdLearnerMode=true|false (BETA - 默认值=true) PublicKeysECDSA=true|false (DEPRECATED - 默认值=false) RootlessControlPlane=true|false (ALPHA - 默认值=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED - 默认值=false) WaitForAllControlPlaneComponents=true|false (ALPHA - 默认值=false) |
-h, --help |
| all 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择用于拉取控制平面镜像的容器仓库。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
--pod-network-cidr string |
| 指定 Pod 网络的 IP 地址范围。如果已设置,控制平面将自动为每个节点分配 CIDR。 |
--service-cidr string 默认值:"10.96.0.0/12" |
| 为服务 VIP 使用 IP 地址的其他范围。 |
--service-dns-domain string 默认值:"cluster.local" |
| 为服务使用其他域名,例如 "myorg.internal"。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
将 CoreDNS 插件安装到 Kubernetes 集群。
概要
通过 API 服务器安装 CoreDNS 附加组件。请注意,即使 DNS 服务器已部署,在安装 CNI
之前 DNS 服务器不会被调度执行。
kubeadm init phase addon coredns [flags]
选项
--config string |
| kubeadm 配置文件的路径。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
--feature-gates string |
| 一组用来描述各种特性门控的键值对(key=value)。选项是: EtcdLearnerMode=true|false (BETA - 默认值=true) PublicKeysECDSA=true|false (DEPRECATED - 默认值=false) RootlessControlPlane=true|false (ALPHA - 默认值=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED - 默认值=false) WaitForAllControlPlaneComponents=true|false (ALPHA - 默认值=false) |
-h, --help |
| coredns 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择用于拉取控制平面镜像的容器仓库。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的
kubeconfig 文件。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
--print-manifest |
| 向 STDOUT 输出插件清单,而不是安装这些插件。 |
--service-cidr string 默认值:"10.96.0.0/12" |
| 为服务 VIP 选择 IP 地址范围。 |
--service-dns-domain string 默认值:"cluster.local" |
| 为服务使用其它域名,例如:"myorg.internal"。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
将 kube-proxy 插件安装到 Kubernetes 集群
概要
通过 API 服务器安装 kube-proxy 附加组件。
kubeadm init phase addon kube-proxy [flags]
选项
--apiserver-advertise-address string |
| API 服务器所公布的其正在监听的 IP 地址。如果未设置,则将使用默认网络接口。 |
--apiserver-bind-port int32 默认值: 6443 |
| API 服务器绑定的端口。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane-endpoint string |
| 为控制平面指定一个稳定的 IP 地址或 DNS 名称。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| kube-proxy 操作的帮助命令。 |
--image-repository string 默认值:"registry.k8s.io" |
| 选择用于拉取控制平面镜像的容器仓库。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
--kubernetes-version string 默认值:"stable-1" |
| 为控制平面选择特定的 Kubernetes 版本。 |
--pod-network-cidr string |
| 指定 Pod 网络的 IP 地址范围。如果已设置,控制平面将自动为每个节点分配 CIDR。 |
--print-manifest |
| 向 STDOUT 打印插件清单,而非安装这些插件。 |
继承于父命令的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
有关 v1beta4
配置中每个字段的更多详细信息,可以访问
API。
接下来
12 - kubeadm join phase
kubeadm join phase
使你能够调用 join
过程的基本原子步骤。
因此,如果希望执行自定义操作,可以让 kubeadm 做一些工作,然后由用户来补足剩余操作。
kubeadm join phase
与
kubeadm join 工作流程一致,
后台都使用相同的代码。
kubeadm join phase
使用此命令来调用 join
工作流程的某个阶段。
概要
使用此命令来调用 join
工作流程的某个阶段。
选项
从父命令中继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
kubeadm join phase preflight
使用此命令可以在即将加入集群的节点上执行启动前检查。
运行 join 命令前检查。
概要
运行 kubeadm join 命令添加节点前检查。
kubeadm join phase preflight [api-server-endpoint] [flags]
示例
# 使用配置文件运行 kubeadm join 命令添加节点前检查。
kubeadm join phase preflight --config kubeadm-config.yaml
选项
--apiserver-advertise-address string |
| 对于将要托管新的控制平面实例的节点,指定 API 服务器将公布的其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| 针对将要托管新的控制平面实例的节点,设置 API 服务器要绑定的端口。 |
--certificate-key string |
| 使用此密钥可以解密由 `init` 操作上传的证书 Secret。
证书密钥为十六进制编码的字符串,是大小为 32 字节的 AES 密钥。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--cri-socket string |
| 提供给 CRI 套接字建立连接的路径。如果为空,则 kubeadm 将尝试自动检测该值;
仅当安装了多个 CRI 或存在非标准的 CRI 套接字时,才使用此选项。 |
--discovery-file string |
| 对于基于文件的发现,给出用于加载集群信息的文件或者 URL。 |
--discovery-token string |
| 对于基于令牌的发现,该令牌用于验证从 API 服务器获取的集群信息。 |
--discovery-token-ca-cert-hash strings |
| 对于基于令牌的发现,验证根 CA 公钥是否匹配此哈希值(格式:"<type>:<value>")。 |
--discovery-token-unsafe-skip-ca-verification |
| 对于基于令牌的发现,允许在未关联 --discovery-token-ca-cert-hash 参数的情况下添加节点。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| preflight 操作的帮助命令。 |
--ignore-preflight-errors stringSlice |
| 错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 |
--node-name string |
| 指定节点名称。 |
--tls-bootstrap-token string |
| 指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 |
--token string |
| 如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
kubeadm join phase control-plane-prepare
使用此阶段,你可以准备一个作为控制平面的节点。
准备为控制平面服务的机器。
概要
准备为控制平面服务的机器。
kubeadm join phase control-plane-prepare [flags]
示例
# 准备为控制平面服务的机器
kubeadm join phase control-plane-prepare all
选项
-h, --help |
| control-plane-prepare 操作的帮助命令。 |
从父命令中继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
准备为控制平面服务的机器。
概要
准备为控制平面服务的机器。
kubeadm join phase control-plane-prepare all [api-server-endpoint] [flags]
选项
--apiserver-advertise-address string |
| 如果该节点托管一个新的控制平面实例,则 API 服务器将公布其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| 如果该节点托管一个新的控制平面实例,则为 API 服务器要绑定的端口。 |
--certificate-key string |
| 使用此密钥解密由 init 上传的证书 Secret。
证书密钥是十六进制编码的字符串,是大小为 32 字节的 AES 密钥。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--discovery-file string |
| 对于基于文件的发现,给出用于加载集群信息的文件或者 URL。 |
--discovery-token string |
| 对于基于令牌的发现,该令牌用于验证从 API 服务器获取的集群信息。 |
--discovery-token-ca-cert-hash strings |
| 对于基于令牌的发现,请验证根 CA 公钥是否匹配此哈希值(格式:"<type>:<value>")。 |
--discovery-token-unsafe-skip-ca-verification |
| 对于基于令牌的发现,允许在未关联 --discovery-token-ca-cert-hash 参数的情况下添加节点。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| all 操作的帮助命令。 |
--node-name string |
| 指定节点名称。 |
--patches string |
| 包含名为 “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” 是一个可选字符串,可用于基于字母数字顺序确定首先应用哪些补丁。 |
--tls-bootstrap-token string |
| 指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 |
--token string |
| 如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
[实验] 从 kubeadm-certs Secret 下载控制平面节点之间共享的证书。
概要
[实验] 从 kubeadm-certs Secret 下载控制平面节点之间共享的证书。
kubeadm join phase control-plane-prepare download-certs [api-server-endpoint] [flags]
选项
--certificate-key string |
| 使用此密钥可以解密由 init 上传的证书 Secret。
证书密钥为一个十六进制编码的字符串,是大小为 32 字节的 AES 密钥。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--discovery-file string |
| 对于基于文件的发现,给出用于加载集群信息的文件或者 URL。 |
--discovery-token string |
| 对于基于令牌的发现,该令牌用于验证从 API 服务器获取的集群信息。 |
--discovery-token-ca-cert-hash stringSlice |
| 对于基于令牌的发现,请验证根 CA 公钥是否匹配此哈希值(格式:"<type>:<value>")。 |
--discovery-token-unsafe-skip-ca-verification |
| 对于基于令牌的发现,允许在未关联 --discovery-token-ca-cert-hash 参数的情况下添加节点。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| download-certs 操作的帮助命令。 |
--tls-bootstrap-token string |
| 指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 |
--token string |
| 如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令中继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
为新的控制平面组件生成证书。
概要
为新的控制平面组件生成证书。
kubeadm join phase control-plane-prepare certs [api-server-endpoint] [flags]
选项
--apiserver-advertise-address string |
| 如果该节点托管一个新的控制平面实例,则 API 服务器将公布其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--discovery-file string |
| 对于基于文件的发现,给出用于加载集群信息的文件或者 URL。 |
--discovery-token string |
| 对于基于令牌的发现,该令牌用于验证从 API 服务器获取的集群信息。 |
--discovery-token-ca-cert-hash strings |
| 对于基于令牌的发现,请验证根 CA 公钥是否匹配此哈希值(格式:"<type>:<value>")。 |
--discovery-token-unsafe-skip-ca-verification |
| 对于基于令牌的发现,允许在未关联 --discovery-token-ca-cert-hash 参数的情况下添加节点。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| certs 操作的帮助命令。 |
--node-name string |
| 指定节点名称。 |
--tls-bootstrap-token string |
| 指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 |
--token string |
| 如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
为新的控制平面组件生成 kubeconfig。
概要
为新的控制平面组件生成 kubeconfig。
kubeadm join phase control-plane-prepare kubeconfig [api-server-endpoint] [flags]
选项
--certificate-key string |
| 使用此密钥可以解密由 init 上传的证书 Secret。
证书密钥为一个十六进制编码的字符串,它是大小为 32 字节的 AES 密钥。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--discovery-file string |
| 对于基于文件的发现,给出用于加载集群信息的文件或者 URL。 |
--discovery-token string |
| 对于基于令牌的发现,该令牌用于验证从 API 服务器获取的集群信息。 |
--discovery-token-ca-cert-hash stringSlice |
| 对于基于令牌的发现,请验证根 CA 公钥是否匹配此哈希值(格式:"<type>:<value>")。 |
--discovery-token-unsafe-skip-ca-verification |
| 对于基于令牌的发现,允许在未关联 --discovery-token-ca-cert-hash 参数的情况下添加节点。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| kubeconfig 操作的帮助命令。 |
--tls-bootstrap-token string |
| 指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 |
--token string |
| 如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令中继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
为新的控制平面组件生成清单。
概要
为新的控制平面组件生成清单(manifest)。
kubeadm join phase control-plane-prepare control-plane [flags]
选项
--apiserver-advertise-address string |
| 对于将要托管新的控制平面实例的节点,指定 API 服务器将公布的其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 |
--apiserver-bind-port int32 默认值:6443 |
| 针对将要托管新的控制平面实例的节点,设置 API 服务器要绑定的端口。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| control-plane 操作的帮助命令。 |
--patches string |
| 包含名为 "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" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 |
从父命令中继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
kubeadm join phase kubelet-start
使用此阶段,你可以配置 kubelet 设置、证书和(重新)启动 kubelet。
配置 kubelet、证书并(重新)启动 kubelet。
概要
生成一个包含 KubeletConfiguration 的文件和一个包含特定于节点的 kubelet 配置的环境文件,然后(重新)启动 kubelet。
kubeadm join phase kubelet-start [api-server-endpoint] [flags]
选项
--config string |
| kubeadm 配置文件的路径。 |
--cri-socket string |
| 提供给 CRI 套接字建立连接的路径。如果为空,则 kubeadm 将尝试自动检测该值;
仅当安装了多个 CRI 或存在非标准的 CRI 套接字时,才使用此选项。 |
--discovery-file string |
| 对于基于文件的发现,给出用于加载集群信息的文件或者 URL。 |
--discovery-token string |
| 对于基于令牌的发现,该令牌用于验证从 API 服务器获取的集群信息。 |
--discovery-token-ca-cert-hash stringSlice |
| 对于基于令牌的发现,验证根 CA 公钥是否匹配此哈希值(格式:"<type>:<value>")。 |
--discovery-token-unsafe-skip-ca-verification |
| 对于基于令牌的发现,允许在未关联 --discovery-token-ca-cert-hash 参数的情况下添加节点。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| kubelet-start 操作的帮助命令。 |
--node-name string |
| 指定节点名称。 |
--patches string |
| 目录路径,指向的目录中包含名为 “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" 是一个可选字符串,可用于确定按字母顺序首先应用哪些补丁。 |
--tls-bootstrap-token string |
| 指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 |
--token string |
| 如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
kubeadm join phase control-plane-join
使用此阶段,你可以将节点作为控制平面实例加入。
添加作为控制平面实例的机器。
概要
添加作为控制平面实例的机器。
kubeadm join phase control-plane-join [flags]
示例
# 将机器作为控制平面实例加入
kubeadm join phase control-plane-join all
选项
-h, --help |
| control-plane-join 操作的帮助命令。 |
从父命令中继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
添加作为控制平面实例的机器。
概要
添加作为控制平面实例的机器。
kubeadm join phase control-plane-join all [flags]
选项
--apiserver-advertise-address string |
| 如果该节点托管一个新的控制平面实例,则 API 服务器将公布其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| all 操作的帮助命令。 |
--node-name string |
| 指定节点名称。 |
--patches string |
| 包含名为 “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” 是一个可选字符串,可用于基于字母数字顺序确定首先应用哪些补丁。 |
从父命令继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
添加一个新的本地 etcd 成员。
概要
添加新的本地 etcd 成员。
kubeadm join phase control-plane-join etcd [flags]
选项
--apiserver-advertise-address string |
| 如果该节点托管一个新的控制平面实例,则 API 服务器将公布其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 |
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| etcd 操作的帮助命令。 |
--node-name string |
| 指定节点的名称。 |
--patches string |
| 包含名为 “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” 是一个可选字符串,可用于基于字母数字顺序确定首先应用哪些补丁。 |
从父命令中继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
将节点标记为控制平面节点。
概要
将节点标记为控制平面节点。
kubeadm join phase control-plane-join mark-control-plane [flags]
选项
--config string |
| kubeadm 配置文件的路径。 |
--control-plane |
| 在此节点上创建一个新的控制平面实例。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| mark-control-plane 操作的帮助命令。 |
--node-name string |
| 指定节点的名称。 |
从父命令中继承的选项
--rootfs string |
| [实验] 到 '真实' 主机根文件系统的路径。 |
接下来
13 - kubeadm kubeconfig
kubeadm kubeconfig
提供用来管理 kubeconfig 文件的工具。
如果希望查看如何使用 kubeadm kubeconfig user
的示例,
请参阅为其他用户生成 kubeconfig 文件。
kubeadm kubeconfig
kubeconfig 文件工具。
概要
kubeconfig 文件工具。
选项
-h, --help |
| kubeconfig 操作的帮助命令。 |
从父命令继承的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。设置此标志将导致 kubeadm 切换到所提供的路径。 |
kubeadm kubeconfig user
此命令可用来为其他用户生成一个 kubeconfig 文件。
为其他用户输出一个 kubeconfig 文件。
概要
为其他用户输出一个 kubeconfig 文件。
kubeadm kubeconfig user [flags]
示例
# 为一个名为 foo 的其他用户输出 kubeconfig 文件
kubeadm kubeconfig user --client-name=foo
# 使用 kubeadm 配置文件 bar 为另一个名为 foo 的用户输出 kubeconfig 文件
kubeadm alpha kubeconfig user --client-name=foo --config=bar
选项
--client-name string |
| 用户名。如果生成客户端证书,则用作其 CN。 |
--config string |
| 指向 kubeadm 配置文件的路径。 |
-h, --help |
| user 操作的帮助命令。 |
--org strings |
| 客户端证书的组织。如果创建客户端证书,此值将用作其 O 字段值。 |
--token string |
| 应该用此令牌做为 kubeconfig 的身份验证机制,而不是客户端证书。 |
--validity-period duration Default: 8760h0m0s |
| 客户证书的合法期限。所设置值为相对当前时间的偏移。 |
从父命令继承的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。设置此标志将导致 kubeadm 切换到所提供的路径。 |
14 - kubeadm reset phase
kubeadm reset phase
使你能够调用 reset
过程的基本原子步骤。
因此,如果希望执行自定义操作,你可以让 kubeadm 做一些工作,然后由用户来补足剩余操作。
kubeadm reset phase
与
kubeadm reset 工作流程一致,
后台都使用相同的代码。
kubeadm reset phase
使用此命令来调用 reset
工作流程的某个阶段。
概要
使用此命令来调用 reset
工作流程的某个阶段。
选项
从父命令继承的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
kubeadm reset phase preflight
使用此阶段,你可以在要重置的节点上执行启动前检查阶段。
kubeadm reset(重置)前运行启动前检查。
概要
kubeadm reset(重置)前运行启动前检查。
kubeadm reset phase preflight [flags]
选项
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-f, --force |
| 在不提示确认的情况下重置节点。 |
-h, --help |
| preflight 操作的帮助命令。 |
--ignore-preflight-errors strings |
| 错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 |
从父命令继承的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
kubeadm reset phase remove-etcd-member
使用此阶段,你可以从 etcd 集群中移除此控制平面节点的 etcd 成员。
移除本地 etcd 成员。
概要
移除控制平面节点的本地 etcd 成员。
kubeadm reset phase remove-etcd-member [flags]
选项
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| remove-etcd-member 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 与集群通信时使用的 kubeconfig 文件。如果未设置该标志,则可以在默认位置中查找现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
kubeadm reset phase cleanup-node
使用此阶段,你可以在此节点上执行清理工作。
执行 cleanup node(清理节点)操作。
概要
执行 cleanup node(清理节点)操作。
kubeadm reset phase cleanup-node [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" |
| 存储证书的目录路径。如果已指定,则需要清空此目录。 |
--cleanup-tmp-dir |
| 清理 "/etc/kubernetes/tmp" 目录。 |
--cri-socket string |
| 要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值;
仅当安装了多个 CRI 或具有非标准 CRI 套接字时,才使用此选项。 |
--dry-run |
| 不做任何更改;只输出将要执行的操作。 |
-h, --help |
| cleanup-node 操作的帮助命令。 |
从父命令继承的选项
--rootfs string |
| 到“真实”主机根文件系统的路径。这将导致 kubeadm 切换到所提供的路径。 |
接下来
15 - kubeadm upgrade phase
在 Kubernetes v1.15.0 版本中,kubeadm 引入了对 kubeadm upgrade node
阶段的初步支持。
其他 kubeadm upgrade
子命令如 apply
等阶段将在未来发行版中添加。
kubeadm upgrade node 阶段
使用此阶段,你可以选择执行辅助控制平面或工作节点升级的单独步骤。
请注意,kubeadm upgrade apply
命令仍然必须在主控制平面节点上调用。
使用此命令调用 node 工作流的某个阶段。
概要
使用此命令调用 node 工作流的某个阶段。
选项
从父命令继承的选项
--rootfs string |
| [实验] 指向 '真实' 宿主机根文件系统的路径。 |
执行升级节点的预检。
概要
执行 kubeadm 升级节点的预检。
kubeadm upgrade node phase preflight [flags]
选项
-h, --help |
| preflight 操作的帮助命令。 |
--ignore-preflight-errors strings |
| 错误将显示为警告的检查清单。示例:'IsPrivilegedUser,Swap'。值为 'all' 表示忽略所有检查的错误。 |
继承于父命令的选项
--rootfs string |
| [实验] 指向 “真实” 主机根文件系统的路径。 |
升级部署在此节点上的控制平面实例,如果有的话。
概要
升级部署在此节点上的控制平面实例,如果有的话。
kubeadm upgrade node phase control-plane [flags]
选项
--certificate-renewal |
| 续订在升级期间变更的组件所使用的证书。 |
--dry-run |
| 不改变任何状态,只输出将要执行的动作。 |
--etcd-upgrade 默认值: true |
| 执行 etcd 的升级。 |
-h, --help |
| control-plane 操作的帮助命令。 |
--kubeconfig string 默认值: "/etc/kubernetes/admin.conf" |
| 用于和集群通信的 KubeConfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 KubeConfig 文件。 |
--patches string |
| 包含名为 "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" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 |
从父命令继承的选项
--rootfs string |
| [实验] 指向 “真实” 主机根文件系统的路径。 |
升级此节点的 kubelet 配置。
概要
从集群中 ConfigMap kubelet-config 下载 kubelet 配置。
kubeadm upgrade node phase kubelet-config [flags]
选项
--dry-run |
| 不改变任何状态,只输出将要执行的操作。 |
-h, --help |
| kubelet-config 操作的帮助命令。 |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" |
| 用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 |
--patches string |
| 目录路径,指向的目录中包含名为 “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" 是一个可选字符串,可用于确定按字母顺序首先应用哪些补丁。 |
从父命令继承的选项
--rootfs string |
| [实验] 到'真实'主机根文件系统的路径。 |
接下来
16 - 实现细节
特性状态:
Kubernetes v1.10 [stable]
kubeadm init
和 kubeadm join
结合在一起为从头开始创建最基本的 Kubernetes
集群提供了良好的用户体验,这与最佳实践一致。
但是,kubeadm 如何做到这一点可能并不明显。
本文档提供了更多幕后的详细信息,旨在分享有关 Kubernetes 集群最佳实践的知识。
核心设计原则
kubeadm init
和 kubeadm join
设置的集群该是:
- 安全的:它应采用最新的最佳实践,例如:
- 实施 RBAC 访问控制
- 使用节点鉴权机制(Node Authorizer)
- 在控制平面组件之间使用安全通信
- 在 API 服务器和 kubelet 之间使用安全通信
- 锁定 kubelet API
- 锁定对系统组件(例如 kube-proxy 和 CoreDNS)的 API 的访问
- 锁定启动引导令牌(Bootstrap Token)可以访问的内容
- 用户友好:用户只需要运行几个命令即可:
kubeadm init
export KUBECONFIG=/etc/kubernetes/admin.conf
kubectl apply -f <所选网络.yaml>
kubeadm join --token <令牌> <端点>:<端口>
- 可扩展的:
- 不应偏向任何特定的网络提供商,不涉及配置集群网络
- 应该可以使用配置文件来自定义各种参数
常量以及众所周知的值和路径
为了降低复杂性并简化基于 kubeadm 的高级工具的开发,对于众所周知的路径和文件名,
kubeadm 使用了一组有限的常量值。
Kubernetes 目录 /etc/kubernetes
在应用程序中是一个常量,
因为在大多数情况下它显然是给定的路径,并且是最直观的位置;其他路径常量和文件名有:
/etc/kubernetes/
作为带有控制平面组件身份标识的 kubeconfig 文件的路径。kubeconfig 文件的名称为:kubelet.conf
(在 TLS 引导时名称为 bootstrap-kubelet.conf
)controller-manager.conf
scheduler.conf
admin.conf
用于集群管理员和 kubeadm 本身super-admin.conf
用于可以绕过 RBAC 的集群超级管理员
- 证书和密钥文件的名称:
ca.crt
、ca.key
用于 Kubernetes 证书颁发机构apiserver.crt
、apiserver.key
用于 API 服务器证书apiserver-kubelet-client.crt
、apiserver-kubelet-client.key
用于 API 服务器安全地连接到 kubelet 的客户端证书sa.pub
、sa.key
用于控制器管理器签署 ServiceAccount 时使用的密钥front-proxy-ca.crt
、front-proxy-ca.key
用于前端代理证书颁发机构front-proxy-client.crt
、front-proxy-client.key
用于前端代理客户端
kubeadm init 工作流程内部设计
kubeadm init
内部工作流程
包含一系列要执行的原子性工作任务,如 kubeadm init
中所述。
kubeadm init phase
命令允许用户分别调用每个任务,并最终提供可重用且可组合的 API 或工具箱,
其他 Kubernetes 引导工具、任何 IT 自动化工具和高级用户都可以使用它来创建自定义集群。
预检
kubeadm 在启动 init 之前执行一组预检,目的是验证先决条件并避免常见的集群启动问题。
用户可以使用 --ignore-preflight-errors
选项跳过特定的预检或全部检查。
- [警告] 如果要使用的 Kubernetes 版本(由
--kubernetes-version
标志指定)比 kubeadm CLI
版本至少高一个小版本。 - Kubernetes 系统要求:
- 如果在 Linux 上运行:
- [错误] 如果内核早于最低要求的版本
- [错误] 如果未设置所需的 Cgroups 子系统
- [错误] 如果 CRI 端点未应答
- [错误] 如果用户不是 root 用户
- [错误] 如果机器主机名不是有效的 DNS 子域
- [警告] 如果通过网络查找无法访问主机名
- [错误] 如果 kubelet 版本低于 kubeadm 支持的最低 kubelet 版本(当前小版本 -1)
- [错误] 如果 kubelet 版本比所需的控制平面板版本至少高一个小版本(不支持的版本偏差)
- [警告] 如果 kubelet 服务不存在或已被禁用
- [警告] 如果 firewalld 处于活动状态
- [错误] 如果 API 服务器绑定的端口或 10250/10251/10252 端口已被占用
- [错误] 如果
/etc/kubernetes/manifest
文件夹已经存在并且不为空 - [错误] 如果启用了交换分区
- [错误] 如果命令路径中没有
conntrack
、ip
、iptables
、mount
、nsenter
命令
- [警告] 如果命令路径中没有
ebtables
、ethtool
、socat
、tc
、touch
、crictl
命令 - [警告] 如果 API 服务器、控制器管理器、调度程序的其他参数标志包含一些无效选项
- [警告] 如果与 https://API.AdvertiseAddress:API.BindPort 的连接通过代理
- [警告] 如果服务子网的连接通过代理(仅检查第一个地址)
- [警告] 如果 Pod 子网的连接通过代理(仅检查第一个地址)
- 如果提供了外部 etcd:
- [错误] 如果 etcd 版本低于最低要求版本
- [错误] 如果指定了 etcd 证书或密钥,但无法找到
- 如果未提供外部 etcd(因此将安装本地 etcd):
- [错误] 如果端口 2379 已被占用
- [错误] 如果 Etcd.DataDir 文件夹已经存在并且不为空
- 如果授权模式为 ABAC:
- [错误] 如果 abac_policy.json 不存在
- 如果授权方式为 Webhook
- [错误] 如果 webhook_authz.conf 不存在
生成必要的证书
kubeadm 生成用于不同目的的证书和私钥对:
- Kubernetes 集群的自签名证书颁发机构会保存到
ca.crt
文件和 ca.key
私钥文件中
用于 API 服务器安全连接到 kubelet 的客户端证书,使用 ca.crt
作为 CA 生成,
并保存到 apiserver-kubelet-client.crt
,私钥保存到 apiserver-kubelet-client.key
文件中。该证书应该在 system:masters
组织中。
用于签名 ServiceAccount 令牌的私钥保存到 sa.key
文件中,公钥保存到 sa.pub
文件中。
证书默认情况下存储在 /etc/kubernetes/pki
中,但是该目录可以使用 --cert-dir
标志进行配置。
请注意:
- 如果证书和私钥对都存在,并且其内容经过评估符合上述规范,将使用现有文件,
并且跳过给定证书的生成阶段。
这意味着用户可以将现有的 CA 复制到
/etc/kubernetes/pki/ca.{crt,key}
,
kubeadm 将使用这些文件对其余证书进行签名。
请参阅使用自定义证书。 - 仅对 CA 来说,如果所有其他证书和 kubeconfig 文件都已就位,则可以只提供
ca.crt
文件,
而不提供 ca.key
文件。
kubeadm 能够识别出这种情况并启用 ExternalCA,这也意味着了控制器管理器中的
csrsigner
控制器将不会启动。
- 如果 kubeadm 在外部 CA 模式
下运行,所有证书必须由用户提供,因为 kubeadm 无法自行生成证书。
- 如果在
--dry-run
模式下执行 kubeadm,证书文件将写入一个临时文件夹中。 - 可以使用
kubeadm init phase certs all
命令单独生成证书。
为控制平面组件生成 kubeconfig 文件
kubeadm 生成具有用于控制平面组件身份标识的 kubeconfig 文件:
- 控制器管理器的 kubeconfig 文件 ——
/etc/kubernetes/controller-manager.conf
;
在此文件中嵌入了一个具有控制器管理器身份标识的客户端证书。
此客户端证书应具有 CN:system:kube-controller-manager
,
该 CN 由 RBAC 核心组件角色
默认定义的。
- 调度器的 kubeconfig 文件 ——
/etc/kubernetes/scheduler.conf
;
此文件中嵌入了具有调度器身份标识的客户端证书。此客户端证书应具有 CN:system:kube-scheduler
,
该 CN 由 RBAC 核心组件角色
默认定义的。
此外,还会生成将 kubeadm 作为管理实体的 kubeconfig 文件并将其保存到 /etc/kubernetes/admin.conf
中。
该文件包含一个带有 Subject: O = kubeadm:cluster-admins, CN = kubernetes-admin
的证书。kubeadm:cluster-admins
是一个由 kubeadm 管理的组,
它在 kubeadm init
期间通过使用 super-admin.conf
文件绑定到
cluster-admin
ClusterRole,不需要 RBAC。
此 admin.conf
文件必须保留在控制平面节点上,并且不得与其他用户共享。
在 kubeadm init
期间,会生成另一个 kubeconfig 文件并将其存储在 /etc/kubernetes/super-admin.conf
中。
该文件包含一个带有 Subject: O = system:masters, CN = kubernetes-super-admin
的证书。
system:masters
是一个绕过 RBAC 的超级用户组,使 super-admin.conf
在紧急情况下非常有用,因为 RBAC 配置错误导致集群被锁定。
super-admin.conf
文件可以存储在安全位置,并且不会与其他用户共享。
有关 RBAC 和内置 ClusterRoles 和组的其他信息,
请参阅面向用户的 RBAC 角色绑定。
请注意:
ca.crt
证书内嵌在所有 kubeconfig 文件中。- 如果给定的 kubeconfig 文件存在且其内容经过评估符合上述规范,则 kubeadm 将使用现有文件,
并跳过给定 kubeconfig 的生成阶段。
- 如果 kubeadm 以 ExternalCA 模式
运行,则所有必需的 kubeconfig 也必须由用户提供,因为 kubeadm 不能自己生成。
- 如果在
--dry-run
模式下执行 kubeadm,则 kubeconfig 文件将写入一个临时文件夹中。 - 可以使用
kubeadm init phase kubeconfig all
命令分别生成 kubeconfig 文件。
为控制平面组件生成静态 Pod 清单
kubeadm 将用于控制平面组件的静态 Pod 清单文件写入 /etc/kubernetes/manifests
目录。
kubelet 启动后会监视这个目录以便创建 Pod。
静态 Pod 清单有一些共同的属性:
所有静态 Pod 都部署在 kube-system
名字空间
所有静态 Pod 都打上 tier:control-plane
和 component:{组件名称}
标签
所有静态 Pod 均使用 system-node-critical
优先级
所有静态 Pod 都设置了 hostNetwork:true
,使得控制平面在配置网络之前启动;结果导致:
- 控制器管理器和调度器用来调用 API 服务器的地址为
127.0.0.1
- 如果在本地设置 etcd 服务器,
etcd-servers
地址将被设置为 127.0.0.1:2379
- 同时为控制器管理器和调度器启用了领导者选举
- 控制器管理器和调度器将引用 kubeconfig 文件及其各自的唯一标识
- 如将自定义参数传递给控制平面组件
中所述,所有静态 Pod 都会获得用户指定的额外标志
- 所有静态 Pod 都会获得用户指定的额外卷(主机路径)
请注意:
- 所有镜像默认从 registry.k8s.io 拉取。关于自定义镜像仓库,
请参阅使用自定义镜像。
- 如果在
--dry-run
模式下执行 kubeadm,则静态 Pod 文件写入一个临时文件夹中。 - 可以使用
kubeadm init phase control-plane all
命令分别生成主控组件的静态 Pod 清单。
API 服务器
API 服务器的静态 Pod 清单会受到用户提供的以下参数的影响:
- 要绑定的
apiserver-advertise-address
和 apiserver-bind-port
;
如果未提供,则这些值默认为机器上默认网络接口的 IP 地址和 6443 端口。 service-cluster-ip-range
给 Service 使用
- 如果指定了外部 etcd 服务器,则应指定
etcd-servers
地址和相关的 TLS 设置
(etcd-cafile
、etcd-certfile
、etcd-keyfile
);
如果未提供外部 etcd 服务器,则将使用本地 etcd(通过主机网络) - 如果指定了云提供商,则配置相应的
--cloud-provider
参数,如果该路径存在,则配置 --cloud-config
(这是实验性的,是 Alpha 版本,将在以后的版本中删除)
无条件设置的其他 API 服务器标志有:
--insecure-port=0
禁止到 API 服务器不安全的连接--enable-bootstrap-token-auth=true
启用 BootstrapTokenAuthenticator
身份验证模块。
更多细节请参见 TLS 引导。--allow-privileged
设为 true
(诸如 kube-proxy 这些组件有此要求)--requestheader-client-ca-file
设为 front-proxy-ca.crt
--kubelet-preferred-address-types
设为 InternalIP,ExternalIP,Hostname;
这使得在节点的主机名无法解析的环境中,kubectl log
和 API 服务器与 kubelet
的其他通信可以工作
使用在前面步骤中生成的证书的标志:
--client-ca-file
设为 ca.crt
--tls-cert-file
设为 apiserver.crt
--tls-private-key-file
设为 apiserver.key
--kubelet-client-certificate
设为 apiserver-kubelet-client.crt
--kubelet-client-key
设为 apiserver-kubelet-client.key
--service-account-key-file
设为 sa.pub
--requestheader-client-ca-file
设为 front-proxy-ca.crt
--proxy-client-cert-file
设为 front-proxy-client.crt
--proxy-client-key-file
设为 front-proxy-client.key
控制器管理器
控制器管理器的静态 Pod 清单受用户提供的以下参数的影响:
- 如果指定了云提供商,则指定相应的
--cloud-provider
,如果存在这样的配置文件,
则指定 --cloud-config
路径(此为试验性功能,是 Alpha 版本,将在以后的版本中删除)。
其他无条件设置的标志包括:
使用先前步骤中生成的证书的标志:
--root-ca-file
设为 ca.crt
- 如果禁用了 External CA 模式,则
--cluster-signing-cert-file
设为 ca.crt
,否则设为 ""
- 如果禁用了 External CA 模式,则
--cluster-signing-key-file
设为 ca.key
,否则设为 ""
--service-account-private-key-file
设为 sa.key
调度器
调度器的静态 Pod 清单不受用户提供的参数的影响。
为本地 etcd 生成静态 Pod 清单
如果你指定的是外部 etcd,则应跳过此步骤,否则 kubeadm 会生成静态 Pod 清单文件,
以创建在 Pod 中运行的、具有以下属性的本地 etcd 实例:
- 在
localhost:2379
上监听并使用 HostNetwork=true
- 将
hostPath
从 dataDir
挂载到主机的文件系统 - 用户指定的任何其他标志
请注意:
- etcd 容器镜像默认从
registry.gcr.io
拉取。有关自定义镜像仓库,
请参阅使用自定义镜像。 - 如果你以
--dry-run
模式执行 kubeadm 命令,etcd 的静态 Pod 清单将被写入一个临时文件夹。 - 你可以使用 'kubeadm init phase etcd local'
命令为本地 etcd 直接调用静态 Pod 清单生成逻辑。
等待控制平面启动
kubeadm 等待(最多 4m0s),直到 localhost:6443/healthz
(kube-apiserver 存活)返回 ok
。
但是为了检测死锁条件,如果 localhost:10255/healthz
(kubelet 存活)或
localhost:10255/healthz/syncloop
(kubelet 就绪)未能在 40s 和 60s 内未返回 ok
,
则 kubeadm 会快速失败。
kubeadm 依靠 kubelet 拉取控制平面镜像并将其作为静态 Pod 正确运行。
控制平面启动后,kubeadm 将完成以下段落中描述的任务。
将 kubeadm ClusterConfiguration 保存在 ConfigMap 中以供以后参考
kubeadm 将传递给 kubeadm init
的配置保存在 kube-system
名字空间下名为
kubeadm-config
的 ConfigMap 中。
这将确保将来执行的 kubeadm 操作(例如 kubeadm upgrade
)将能够确定实际/当前集群状态,
并根据该数据做出新的决策。
请注意:
- 在保存 ClusterConfiguration 之前,从配置中删除令牌等敏感信息。
- 可以使用
kubeadm init phase upload-config
命令单独上传主控节点配置。
将节点标记为控制平面
一旦控制平面可用,kubeadm 将执行以下操作:
- 给节点打上
node-role.kubernetes.io/control-plane=""
标签,标记其为控制平面 - 给节点打上
node-role.kubernetes.io/control-plane:NoSchedule
污点
请注意,标记控制面的这个阶段可以单独通过
kubeadm init phase mark-control-plane
命令来实现。
kubeadm 使用引导令牌认证
将新节点连接到现有集群;更多的详细信息,
请参见设计提案。
kubeadm init
确保为该过程正确配置了所有内容,这包括以下步骤以及设置 API
服务器和控制器标志,如前几段所述。
创建引导令牌
kubeadm init
创建第一个引导令牌,该令牌是自动生成的或由用户提供的 --token
标志的值;如引导令牌规范文档中所述,令牌应保存在 kube-system
名字空间下名为
bootstrap-token-<令牌 ID>
的 Secret 中。
请注意:
- 由
kubeadm init
创建的默认令牌将用于在 TLS 引导过程中验证临时用户;
这些用户会成为 system:bootstrappers:kubeadm:default-node-token
组的成员。 - 令牌的有效期有限,默认为 24 小时(间隔可以通过
-token-ttl
标志进行更改)。 - 可以使用
kubeadm token
命令创建其他令牌,这些令牌还提供其他有用的令牌管理功能。
允许加入的节点调用 CSR API
kubeadm 确保 system:bootstrappers:kubeadm:default-node-token
组中的用户能够访问证书签名 API。
这是通过在上述组与默认 RBAC 角色 system:node-bootstrapper
之间创建名为
kubeadm:kubelet-bootstrap
的 ClusterRoleBinding 来实现的。
为新的引导令牌设置自动批准
kubeadm 确保 csrapprover 控制器自动批准引导令牌的 CSR 请求。
这是通过在 system:bootstrappers:kubeadm:default-node-token
用户组和
system:certificates.k8s.io:certificatesigningrequests:nodeclient
默认角色之间
创建名为 kubeadm:node-autoapprove-bootstrap
的 ClusterRoleBinding 来实现的。
还应创建 system:certificates.k8s.io:certificatesigningrequests:nodeclient
角色,
授予对 /apis/certificates.k8s.io/certificatesigningrequests/nodeclient
执行 POST 的权限。
通过自动批准设置节点证书轮换
kubeadm 确保节点启用了证书轮换,csrapprover 控制器将自动批准节点的新证书的 CSR 请求。
这是通过在 system:nodes
组和
system:certificates.k8s.io:certificatesigningrequests:selfnodeclient
默认角色之间创建名为 kubeadm:node-autoapprove-certificate-rotation
的
ClusterRoleBinding 来实现的。
创建公共 cluster-info ConfigMap
本步骤在 kube-public
名字空间中创建名为 cluster-info
的 ConfigMap。
另外,它创建一个 Role 和一个 RoleBinding,为未经身份验证的用户授予对 ConfigMap
的访问权限(即 RBAC 组 system:unauthenticated
中的用户)。
说明:
对 cluster-info
ConfigMap 的访问不受速率限制。
如果你把 API 服务器暴露到外网,这可能是一个问题,也可能不是;
这里最坏的情况是 DoS 攻击,攻击者使用 kube-apiserver 可处理的所有当前请求来为
cluster-info
ConfigMap 提供服务。
安装插件
kubeadm 通过 API 服务器安装内部 DNS 服务器和 kube-proxy 插件。
代理
在 kube-system
名字空间中创建一个用于 kube-proxy
的 ServiceAccount;
然后以 DaemonSet 的方式部署 kube-proxy:
- 主控节点凭据(
ca.crt
和 token
)来自 ServiceAccount - API 服务器节点的位置(URL)来自 ConfigMap
kube-proxy
的 ServiceAccount 绑定了 system:node-proxier
ClusterRole 中的特权
DNS
CoreDNS Service 的名称为 kube-dns
。
这样做是为了防止当用户通过此处描述的
--config
方法将集群 DNS 从 kube-dns 切换到 CoreDNS 时出现服务中断。
在 kube-system
名字空间中创建 CoreDNS 的 ServiceAccount
coredns
的 ServiceAccount 绑定了 system:coredns
ClusterRole 中的特权
在 Kubernetes 1.21 版本中,kubeadm 对 kube-dns
的支持被移除。
你可以在 kubeadm 使用 CoreDNS,即使相关的 Service 名字仍然是 kube-dns
。
kubeadm join 步骤内部设计
与 kubeadm init
类似,kubeadm join
内部工作流由一系列待执行的原子工作任务组成。
这分为发现(让该节点信任 Kubernetes 的主控节点)和 TLS 引导
(让 Kubernetes 的主控节点信任该节点)。
请参阅使用引导令牌进行身份验证
或相应的设计提案。
预检
kubeadm
在开始执行之前执行一组预检,目的是验证先决条件,避免常见的集群启动问题。
请注意:
kubeadm join
预检基本上是 kubeadm init
预检的一个子集。- 从 1.24 开始,kubeadm 使用 crictl 与所有已知的 CRI 端点进行通信。
- 从 1.9 开始,kubeadm 支持加入在 Windows 上运行的节点;在这种情况下,
将跳过 Linux 特定的控制参数。
- 在任何情况下,用户都可以通过
--ignore-preflight-errors
选项跳过特定的预检(或者进而跳过所有预检)。
发现 cluster-info
主要有两种发现方案。第一种是使用一个共享令牌以及 API 服务器的 IP 地址。
第二种是提供一个文件(它是标准 kubeconfig 文件的子集)。
共享令牌发现
如果带 --discovery-token
参数调用 kubeadm join
,则使用了令牌发现功能;
在这种情况下,节点基本上从 kube-public
名字空间中的 cluster-info
ConfigMap
中检索集群 CA 证书。
为了防止“中间人”攻击,采取了以下步骤:
说明:
通过设置 --discovery-token-unsafe-skip-ca-verification
标志可以跳过公钥验证;
这样做会削弱 kubeadm 安全模型,因为其他人可能冒充 Kubernetes 主控节点。
文件/HTTPS 发现
如果带 --discovery-file
参数调用 kubeadm join
,则使用文件发现功能;
该文件可以是本地文件或通过 HTTPS URL 下载;对于 HTTPS,主机安装的 CA 包用于验证连接。
通过文件发现,集群 CA 证书是文件本身提供;事实上,这个发现文件是一个 kubeconfig 文件,
只设置了 server
和 certificate-authority-data
属性,
如 kubeadm join
参考文档中所述,当与集群建立连接时,kubeadm 尝试访问 cluster-info
ConfigMap,
如果可用,就使用它。
TLS 引导
知道集群信息后,kubeadm 将写入文件 bootstrap-kubelet.conf
,从而允许 kubelet 执行
TLS 引导。
TLS 引导机制使用共享令牌对 Kubernetes API 服务器进行临时身份验证,
以便为本地创建的密钥对提交证书签名请求(CSR)。
该请求会被自动批准,并且该操作保存 ca.crt
文件和 kubelet.conf
文件,用于
kubelet 加入集群,同时删除 bootstrap-kubelet.conf
。
说明:
- 临时身份验证根据
kubeadm init
过程中保存的令牌进行验证(或者使用 kubeadm token
命令创建的其他令牌) - 临时身份验证解析到
system:bootstrappers:kubeadm:default-node-token
组的一个用户成员,
该成员在 kubeadm init
过程中被授予对 CSR API 的访问权 - 自动的 CSR 审批由 csrapprover 控制器基于
kubeadm init
过程中给出的配置来管理