安装工具
- 1: Kubeadm
- 1.1: 创建 Kubeadm
- 1.1.1:
- 1.1.2:
- 1.1.3:
- 1.1.4:
- 1.1.5:
- 1.1.6:
- 1.1.7:
- 1.1.8:
- 1.1.9:
- 1.1.10:
- 1.1.11:
- 1.1.12:
- 1.1.13:
- 1.1.14:
- 1.1.15:
- 1.1.16:
- 1.1.17:
- 1.1.18:
- 1.1.19:
- 1.1.20:
- 1.1.21:
- 1.1.22:
- 1.1.23:
- 1.1.24:
- 1.1.25:
- 1.1.26:
- 1.1.27:
- 1.1.28:
- 1.1.29:
- 1.1.30:
- 1.1.31:
- 1.1.32:
- 1.1.33:
- 1.1.34:
- 1.1.35:
- 1.1.36:
- 1.1.37:
- 1.1.38:
- 1.1.39:
- 1.1.40:
- 1.1.41:
- 1.1.42:
- 1.1.43:
- 1.1.44:
- 1.1.45:
- 1.1.46:
- 1.1.47:
- 1.1.48:
- 1.1.49:
- 1.1.50:
- 1.1.51:
- 1.1.52:
- 1.1.53:
- 1.1.54:
- 1.1.55:
- 1.1.56:
- 1.1.57:
- 1.1.58:
- 1.1.59:
- 1.1.60:
- 1.1.61:
- 1.1.62:
- 1.1.63:
- 1.1.64:
- 1.1.65:
- 1.1.66:
- 1.1.67:
- 1.1.68:
- 1.1.69:
- 1.1.70:
- 1.1.71:
- 1.1.72:
- 1.1.73:
- 1.1.74:
- 1.1.75:
- 1.1.76:
- 1.1.77:
- 1.1.78:
- 1.1.79:
- 1.1.80:
- 1.1.81:
- 1.1.82:
- 1.1.83:
- 1.1.84:
- 1.1.85:
- 1.1.86:
- 1.1.87:
- 1.1.88:
- 1.1.89:
- 1.1.90:
- 1.1.91:
- 1.1.92:
- 1.1.93:
- 1.1.94:
- 1.1.95:
- 1.1.96:
- 1.1.97:
- 1.1.98:
- 1.1.99:
- 1.1.100:
- 1.1.101:
- 1.1.102:
- 1.1.103:
- 1.1.104:
- 1.1.105:
- 1.1.106:
- 1.1.107:
- 1.1.108:
- 1.1.109:
- 1.1.110:
- 1.1.111:
- 1.1.112:
- 1.1.113:
- 1.1.114:
- 1.1.115:
- 1.1.116:
- 1.2: kubeadm init
- 1.3: kubeadm join
- 1.4: kubeadm upgrade
- 1.5: kubeadm config
- 1.6: kubeadm reset
- 1.7: kubeadm token
- 1.8: kubeadm version
- 1.9: kubeadm alpha
- 1.10: kubeadm certs
- 1.11: kubeadm init phase
- 1.12: kubeadm join phase
- 1.13: kubeadm reset phase
- 1.14: kubeadm upgrade phase
- 1.15: 实现细节
1 - Kubeadm
Kubeadm 是一个提供了 kubeadm init
和 kubeadm join
的工具,作为创建 Kubernetes 集群的 “快捷途径” 的最佳实践。
kubeadm 通过执行必要的操作来启动和运行最小可用集群。按照设计,它只关注启动引导,而非配置机器。同样的,安装各种 “锦上添花” 的扩展,例如 Kubernetes Dashboard, 监控方案,以及特定云平台的扩展,都不在讨论范围内。
相反,我们希望在 kubeadm 之上构建更高级别以及更加合规的工具,理想情况下,使用 kubeadm 作为所有部署工作的基准将会更加易于创建一致性集群。
如何安装
要安装 kubeadm, 请查阅安装指南.
接下来
- kubeadm init 用于搭建控制平面节点
- kubeadm join 用于搭建工作节点并将其加入到集群中
- kubeadm upgrade 用于升级 Kubernetes 集群到新版本
- kubeadm config 如果你使用了 v1.7.x 或更低版本的 kubeadm 版本初始化你的集群,则使用
kubeadm upgrade
来配置你的集群 - kubeadm token 用于管理
kubeadm join
使用的令牌 - kubeadm reset 用于恢复通过
kubeadm init
或者kubeadm join
命令对节点进行的任何变更 - kubeadm version 用于打印 kubeadm 的版本信息
- kubeadm alpha 用于预览一组可用于收集社区反馈的特性
1.1 - 创建 Kubeadm
1.1.1 -
摘要
┌──────────────────────────────────────────────────────────┐
│ 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 | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.2 -
概要
kubeadm 实验子命令
选项
-h, --help | |
alpha 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机的根文件系统的路径。 |
1.1.3 -
概要
kubeconfig 文件应用程序。
Alpha 免责声明:此命令当前为 alpha 功能。
选项
-h, --help | |
kubeconfig 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.4 -
概要
为其他用户输出 kubeconfig 文件。
Alpha 免责声明:此命令当前为 Alpha 功能。
kubeadm alpha kubeconfig user [flags]
示例
# 使用名为 bar 的 kubeadm 配置文件为名为 foo 的另一用户输出 kubeconfig 文件
kubeadm alpha kubeconfig user --client-name=foo --config=bar
选项
--client-name string | |
用户名。如果生成客户端证书,则用作其 CN。 | |
--config string | |
指向 kubeadm 配置文件的路径 | |
-h, --help | |
user 操作的帮助命令 | |
--org stringSlice | |
客户端证书的组织。如果创建客户端证书,此值将用作其 O 字段值。 | |
--token string | |
应该用此 kubeconfig 的身份验证机制的令牌,而不是客户端证书 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机的根目录。 |
1.1.5 -
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
选项
-h, --help | |
kubelet 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机的根目录。 |
1.1.6 -
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
选项
-h, --help | |
config 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 指向宿主机上的 '实际' 根文件系统的路径。 |
1.1.7 -
概要
针对集群中的 kubelet-config-1.X ConfigMap 启用或更新节点的动态 kubelet 配置,其中 X 是所需 kubelet 版本的次要版本。
警告:此功能仍处于试验阶段,默认情况下处于禁用状态。仅当知道自己在做什么时才启用它,因为在此阶段它可能会产生令人惊讶的副作用。
Alpha 免责声明:此命令当前为 Alpha 功能。
kubeadm alpha kubelet config enable-dynamic [flags]
示例
# 为节点启用动态 kubelet 配置。
kubeadm alpha phase kubelet enable-dynamic-config --node-name node-1 --kubelet-version 1.16.0
WARNING: This feature is still experimental, and disabled by default. Enable only if you know what you are doing, as it
may have surprising side-effects at this stage.
选项
-h, --help | |
enable-dynamic 操作的帮助命令 | |
--kubeconfig string 默认值: "/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该标志,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--kubelet-version string | |
kubelet 所需版本 | |
--node-name string | |
应该启用动态 kubelet 配置节点的名称 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机的根目录。 |
1.1.8 -
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
选项
-h, --help | |
selfhosting 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机的根目录。 |
1.1.9 -
概要
将用于控制平面组件的静态 Pod 文件转换为通过 Kubernetes API 配置的自托管 DaemonSet。
有关自托管的限制,请参阅相关文档。
Alpha 免责声明:此命令当前为 alpha 功能。
kubeadm alpha selfhosting pivot [flags]
示例
# 将静态 Pod 托管的控制平面转换为自托管的控制平面。
kubeadm alpha phase self-hosting convert-from-staticpods
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
证书存储的路径 | |
--config string | |
kubeadm 配置文件的路径。 | |
-f, --force | |
在不提示确认的情况下转换集群 | |
-h, --help | |
pivot 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
-s, --store-certs-in-secrets | |
启用 secret 存储证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.10 -
概要
与处理 kubernetes 证书相关的命令
选项
-h, --help | |
certs 命令的帮助 |
继承于父命令的选项
--rootfs string | |
[实验] 到'真实'主机根文件系统的路径。 |
1.1.11 -
概要
该命令将打印出可以与 "init" 命令一起使用的安全的随机生成的证书密钥。
你也可以使用 kubeadm init --upload-certs
而无需指定证书密钥;
命令将为你生成并打印一个证书密钥。
kubeadm certs certificate-key [flags]
选项
-h, --help | |
certificate-key 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.12 -
概要
检查 kubeadm 管理的本地 PKI 中证书的到期时间。
kubeadm certs check-expiration [flags]
选项
--cert-dir string 默认值: "/etc/kubernetes/pki" | |
保存证书的路径 | |
--config string | |
kubeadm 配置文件的路径 | |
-h, --help | |
check-expiration 的帮助命令 |
继承于父命令的选项
--rootfs string | |
[实验] 到'真实'主机根文件系统的路径。 |
1.1.13 -
为运行控制平面所需的所有证书生成密钥和证书签名请求(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.1.14 -
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm certs renew [flags]
选项
-h, --help | |
renew 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.15 -
概要
续订 kubeconfig 文件中嵌入的证书,供管理员 和 kubeadm 自身使用。
无论证书的到期日期如何,续订都是无条件进行的;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用由 kubeadm 管理的本地 PKI 中的证书机构;作为替代方案, 也可以使用 K8s 证书 API 进行证书续订,或者(作为最后一种选择)生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防证书文件在其他地方使用。
kubeadm certs renew admin.conf [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
CSR 和私钥的输出路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
admin.conf 子操作的帮助命令 | |
--kubeconfig string Default: "/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.16 -
概要
续订运行控制平面所需的所有已知证书。续订是无条件进行的,与到期日期无关。续订也可以单独运行以进行更多控制。
kubeadm certs renew all [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
输出 CSR 和私钥的路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
all 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.17 -
概要
续订 apiserver 用于访问 etcd 的证书。
无论证书的到期日期如何,续订都会无条件地进行;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订尝试使用在 kubeadm 所管理的本地 PKI 中的证书颁发机构;作为替代方案, 可以使用 K8s 证书 API 进行证书更新,或者作为最后一个选择来生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew apiserver-etcd-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
输出 CSR 和私钥的路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
apiserver-etcd-client 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.18 -
概要
续订 apiserver 用于连接 kubelet 的证书。
无论证书的到期日期如何,续订都会无条件地进行;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订尝试使用位于 kubeadm 所管理的本地 PKI 中的证书颁发机构;作为替代方案, 也可能调用 K8s 证书 API 进行证书更新;亦或者,作为最后一个选择,生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew apiserver-kubelet-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
输出 CSR 和私钥的路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
apiserver-kubelet-client 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.19 -
概要
续订用于提供 Kubernetes API 的证书。
无论证书的到期日期如何,续订都会无条件地进行;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订尝试在 kubeadm 管理的本地 PKI 中使用证书颁发机构;作为替代方案, 可以使用 K8s 证书 API 进行证书更新,或者作为最后一个选择来生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew apiserver [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
CSR 和私钥的输出路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
apiserver 子操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.20 -
概要
续订 kubeconfig 文件中嵌入的证书,以供控制器管理器(Controller Manager)使用。
续订无条件地进行,与证书的到期日期无关;SAN 等额外属性将基于现有的文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用 kubeadm 管理的本地 PKI 中的证书颁发机构;作为替代方案, 可以使用 K8s 证书 API 进行证书续订;亦或者,作为最后一种选择,生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm alpha renew controller-manager.conf [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
CSR 和私钥的输出路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
controller-manager.conf 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.21 -
概要
续订存活态探针的证书,用于对 etcd 执行健康检查。
无论证书的到期日期如何,续订都是无条件进行的;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用由 kubeadm 管理的本地 PKI 中的证书机构;作为替代方案, 也可以使用 K8s certificate API 进行证书续订,或者(作为最后一种选择)生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防证书文件在其他地方使用。
kubeadm certs renew etcd-healthcheck-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
CSR 和私钥的输出路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
etcd-healthcheck-client 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.22 -
概要
续订 etcd 节点间用来相互通信的证书。
无论证书的到期日期如何,续订都是无条件进行的;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用由 kubeadm 管理的本地 PKI 中的证书机构; 作为替代方案,也可以使用 K8s certificate API 进行证书续订,或者(作为最后一种选择)生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防证书文件在其他地方使用。
kubeadm certs renew etcd-peer [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
CSR 和私钥的输出路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
etcd-peer 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.23 -
概要
续订用于提供 etcd 服务的证书。
续订无条件地进行,与证书的到期日期无关;SAN 等额外属性将基于现有的文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试在 kubeadm 管理的本地 PKI 中使用证书颁发机构;作为替代方案, 可以使用 K8s 证书 API 进行证书续订,或者作为最后一种选择来生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew etcd-server [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
CSR 和私钥的输出路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
etcd-server 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.24 -
概要
为前端代理客户端续订证书。
无论证书的到期日期如何,续订都会无条件地进行;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订尝试使用位于 kubeadm 所管理的本地 PKI 中的证书颁发机构;作为替代方案, 也可以使用 K8s 证书 API 进行证书续订;亦或者,作为最后一种方案,生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew front-proxy-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
输出 CSR 和私钥的路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
front-proxy-client 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.25 -
概要
续订 kubeconfig 文件中嵌入的证书,以供调度管理器使用。
续订无条件地进行,与证书的到期日期无关;SAN 等额外属性将基于现有的文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用在 kubeadm 所管理的本地 PKI 中的证书颁发机构;作为替代方案, 也可以使用 K8s 证书 API 进行证书续订;亦或者,作为最后一种选择,生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew scheduler.conf [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
CSR 和私钥的输出路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
scheduler.conf 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.26 -
概要
为指定的 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 | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.27 -
概要
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.1.28 -
概要
与 kubeadm 使用的容器镜像交互。
kubeadm config images [flags]
选项
-h, --help | |
images 的帮助命令 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 | |
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.29 -
概要
打印 kubeadm 要使用的镜像列表。配置文件用于自定义任何镜像或镜像存储库。
kubeadm config images 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 其中之一 | |
--config string | |
kubeadm 配置文件的路径。 | |
--feature-gates string | |
一组键值对(key=value),用于描述各种特征。选项是: Auditing=true|false (ALPHA - 默认=false) CoreDNS=true|false (默认=true) DynamicKubeletConfig=true|false (BETA - 默认=false) | |
-h, --help | |
list 操作的帮助命令 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择要从中拉取控制平面镜像的容器仓库 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择一个特定的 Kubernetes 版本 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 | |
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.30 -
概要
拉取 kubeadm 使用的镜像。
kubeadm config images pull [flags]
选项
--config string | |
kubeadm 配置文件的路径。 | |
--cri-socket string | |
要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值;仅当安装了多个 CRI 或具有非标准 CRI 插槽时,才使用此选项。 | |
--feature-gates string | |
一系列键值对(key=value),用于描述各种特征。可选项是: IPv6DualStack=true|false (ALPHA - 默认值=false) | |
-h, --help | |
pull 操作的帮助命令 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择用于拉取控制平面镜像的容器仓库 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择一个特定的 Kubernetes 版本。 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 | |
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.31 -
概要
此命令允许您在 CLI 工具中将本地旧版本的配置对象转换为最新支持的版本,而无需变更集群中的任何内容。在此版本的 kubeadm 中,支持以下 API 版本:
- kubeadm.k8s.io/v1beta2
因此,无论您在此处传递 --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.1.32 -
概要
此命令显示所提供子命令的配置。 有关详细信息,请参阅:https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2
kubeadm config print [flags]
选项
-h, --help | |
print 操作的帮助命令 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 | |
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.33 -
概要
此命令打印对象,例如用于 'kubeadm init' 的默认 init 配置对象。
请注意,Bootstrap Token 字段之类的敏感值已替换为 {"abcdef.0123456789abcdef" "" "nil" <nil> [] []} 之类的占位符值以通过验证,但不执行创建令牌的实际计算。
kubeadm config print init-defaults [flags]
选项
--component-configs stringSlice | |
组件配置 API 对象的逗号分隔列表,打印其默认值。可用值:[KubeProxyConfiguration KubeletConfiguration]。如果未设置此参数,则不会打印任何组件配置。 | |
-h, --help | |
init-defaults 操作的帮助命令 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.34 -
概要
此命令打印对象,例如用于 'kubeadm join' 的默认 join 配置对象。
请注意,诸如启动引导令牌字段之类的敏感值已替换为 {"abcdef.0123456789abcdef" "" "nil" <nil> [] []} 之类的占位符值以通过验证,但不执行创建令牌的实际计算。
kubeadm config print join-defaults [flags]
选项
--component-configs stringSlice | |
组件配置 API 对象的逗号分隔列表,打印其默认值。可用值:[KubeProxyConfiguration KubeletConfiguration]。如果未设置此参数,则不会打印任何组件配置。 | |
-h, --help | |
join-defaults 操作的帮助命令 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.35 -
概要
使用此命令,可以查看 kubeadm 配置的集群中的 ConfigMap。 该配置位于 "kube-system" 命名空间中的名为 "kubeadm-config" 的 ConfigMap 中。
kubeadm config view [flags]
选项
-h, --help | |
view 操作的帮助命令 |
继承于父命令的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
用于和集群通信的 KubeConfig 文件。如果未设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 KubeConfig 文件。 | |
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.36 -
概要
运行此命令来搭建 Kubernetes 控制平面节点。
"init" 命令执行以下阶段:
preflight Run pre-flight checks
certs Certificate generation
/ca Generate the self-signed Kubernetes CA to provision identities for other Kubernetes components
/apiserver Generate the certificate for serving the Kubernetes API
/apiserver-kubelet-client Generate the certificate for the API server to connect to kubelet
/front-proxy-ca Generate the self-signed CA to provision identities for front proxy
/front-proxy-client Generate the certificate for the front proxy client
/etcd-ca Generate the self-signed CA to provision identities for etcd
/etcd-server Generate the certificate for serving etcd
/etcd-peer Generate the certificate for etcd nodes to communicate with each other
/etcd-healthcheck-client Generate the certificate for liveness probes to healthcheck etcd
/apiserver-etcd-client Generate the certificate the apiserver uses to access etcd
/sa Generate a private key for signing service account tokens along with its public key
kubeconfig Generate all kubeconfig files necessary to establish the control plane and the admin kubeconfig file
/admin Generate a kubeconfig file for the admin to use and for kubeadm itself
/kubelet Generate a kubeconfig file for the kubelet to use *only* for cluster bootstrapping purposes
/controller-manager Generate a kubeconfig file for the controller manager to use
/scheduler Generate a kubeconfig file for the scheduler to use
kubelet-start Write kubelet settings and (re)start the kubelet
control-plane Generate all static Pod manifest files necessary to establish the control plane
/apiserver Generates the kube-apiserver static Pod manifest
/controller-manager Generates the kube-controller-manager static Pod manifest
/scheduler Generates the kube-scheduler static Pod manifest
etcd Generate static Pod manifest file for local etcd
/local Generate the static Pod manifest file for a local, single-node local etcd instance
upload-config Upload the kubeadm and kubelet configuration to a ConfigMap
/kubeadm Upload the kubeadm ClusterConfiguration to a ConfigMap
/kubelet Upload the kubelet component config to a ConfigMap
upload-certs Upload certificates to kubeadm-certs
mark-control-plane Mark a node as a control-plane
bootstrap-token Generates bootstrap tokens used to join a node to a cluster
kubelet-finalize Updates settings relevant to the kubelet after TLS bootstrap
/experimental-cert-rotation Enable kubelet client certificate rotation
addon Install required addons for passing Conformance tests
/coredns Install the CoreDNS addon to a Kubernetes cluster
/kube-proxy Install the kube-proxy addon to a Kubernetes cluster
kubeadm init [flags]
选项
--apiserver-advertise-address string | |
API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认网络接口。 | |
--apiserver-bind-port int32 默认值:6443 | |
API 服务器绑定的端口。 | |
--apiserver-cert-extra-sans stringSlice | |
用于 API Server 服务证书的可选附加主题备用名称(SAN)。可以是 IP 地址和 DNS 名称。 | |
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存和存储证书的路径。 | |
--certificate-key string | |
用于加密 kubeadm-certs Secret 中的控制平面证书的密钥。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--control-plane-endpoint string | |
为控制平面指定一个稳定的 IP 地址或 DNS 名称。 | |
--cri-socket string | |
要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值;仅当安装了多个 CRI 或具有非标准 CRI 插槽时,才使用此选项。 | |
--dry-run | |
不要应用任何更改;只是输出将要执行的操作。 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录路径。 例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
--feature-gates string | |
一组用来描述各种功能特性的键值(key=value)对。选项是: IPv6DualStack=true|false (ALPHA - default=false) | |
-h, --help | |
init 操作的帮助命令 | |
--ignore-preflight-errors stringSlice | |
错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择用于拉取控制平面镜像的容器仓库 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择一个特定的 Kubernetes 版本。 | |
--node-name string | |
指定节点的名称。 | |
--pod-network-cidr string | |
指明 pod 网络可以使用的 IP 地址段。如果设置了这个参数,控制平面将会为每一个节点自动分配 CIDRs。 | |
--service-cidr string 默认值:"10.96.0.0/12" | |
为服务的虚拟 IP 地址另外指定 IP 地址段 | |
--service-dns-domain string 默认值:"cluster.local" | |
为服务另外指定域名,例如:"myorg.internal"。 | |
--skip-certificate-key-print | |
不要打印用于加密控制平面证书的密钥。 | |
--skip-phases stringSlice | |
要跳过的阶段列表 | |
--skip-token-print | |
跳过打印 'kubeadm init' 生成的默认引导令牌。 | |
--token string | |
这个令牌用于建立控制平面节点与工作节点间的双向通信。格式为 [a-z0-9]{6}\.[a-z0-9]{16} - 示例:abcdef.0123456789abcdef | |
--token-ttl duration 默认值:24h0m0s | |
令牌被自动删除之前的持续时间(例如 1 s,2 m,3 h)。如果设置为 '0',则令牌将永不过期 | |
--upload-certs | |
将控制平面证书上传到 kubeadm-certs Secret。 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.37 -
概要
使用此命令可以调用 init 工作流程的单个阶段
选项
-h, --help | |
phase 操作的帮助命令 |
继承于父命令的选择项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.38 -
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm init phase addon [flags]
选项
-h, --help | |
addon 操作的帮助命令 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.39 -
概要
安装所有插件(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 名称。 | |
--feature-gates string | |
一组键值对(key=value),描述了各种特征。选项包括: IPv6DualStack=true|false (ALPHA - 默认值=false) | |
-h, --help | |
--image-repository string 默认值:"k8s.gcr.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.1.40 -
概要
通过 API 服务器安装 CoreDNS 附加组件。请注意,即使 DNS 服务器已部署,在安装 CNI 之前 DNS 服务器不会被调度执行。
kubeadm init phase addon coredns [flags]
选项
--config string | |
kubeadm 配置文件的路径。 | |
--feature-gates string | |
一组用来描述各种功能特性的键值(key=value)对。选项是: IPv6DualStack=true|false (ALPHA - 默认值=false) | |
-h, --help | |
coredns 操作的帮助命令 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择用于拉取控制平面镜像的容器仓库 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--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.1.41 -
概要
通过 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 名称。 | |
-h, --help | |
kube-proxy 操作的帮助命令 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择用于拉取控制平面镜像的容器仓库 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本。 | |
--pod-network-cidr string | |
指定 Pod 网络的 IP 地址范围。如果已设置,控制平面将自动为每个节点分配 CIDR。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.42 -
概要
启动引导令牌(bootstrap token)用于在即将加入集群的节点和控制平面节点之间建立双向信任。
该命令使启动引导令牌(bootstrap token)所需的所有配置生效,然后创建初始令牌。
kubeadm init phase bootstrap-token [flags]
示例
# 进行所有引导令牌配置,并创建一个初始令牌,功能上与 kubeadm init 生成的令牌等效。
kubeadm init phase bootstrap-token
选项
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
bootstrap-token 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 | |
--skip-token-print | |
跳过打印 'kubeadm init' 生成的默认引导令牌。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.43 -
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm init phase certs [flags]
选项
-h, --help | |
certs 操作的帮助命令 |
从父指令中继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.44 -
概要
生成所有证书
kubeadm init phase certs all [flags]
选项
--apiserver-advertise-address string | |
API 服务器所公布的其正在监听的 IP 地址。如果未设置,将使用默认网络接口。 | |
--apiserver-cert-extra-sans stringSlice | |
用于 API 服务器服务证书的可选额外替代名称(SAN)。可以同时使用 IP 地址和 DNS 名称。 | |
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
证书的存储路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--control-plane-endpoint string | |
为控制平面指定一个稳定的 IP 地址或 DNS 名称。 | |
-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.1.45 -
概要
生成 apiserver 用于访问 etcd 的证书,并将其保存到 apiserver-etcd-client.cert 和 apiserver-etcd-client.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
Alpha 免责声明:此命令当前为 Alpha 功能。
kubeadm init phase certs apiserver-etcd-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
证书的存储路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
apiserver-etcd-client 操作的帮助命令 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.46 -
概要
生成供 API 服务器连接 kubelet 的证书,并将其保存到 apiserver-kubelet-client.cert 和 apiserver-kubelet-client.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
Alpha 免责声明:此命令当前为 Alpha 功能。
kubeadm init phase certs apiserver-kubelet-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的路径。 | |
--config string | |
kubeadm 配置文件路径。 | |
-h, --help | |
apiserver-kubelet-client 操作的帮助命令 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string | |
[实验] 指向宿主机上的 '实际' 根文件系统的路径。 |
1.1.47 -
概要
生成用于服务 Kubernetes API 的证书,并将其保存到 apiserver.cert 和 apiserver.key 文件中。
默认 SAN 是 kubernetes、kubernetes.default、kubernetes.default.svc、kubernetes.default.svc.cluster.local、10.96.0.1、127.0.0.1。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
Alpha 免责声明:此命令当前为 Alpha 功能。
kubeadm init phase certs apiserver [flags]
选项
--apiserver-advertise-address string | |
API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认的网络接口。 | |
--apiserver-cert-extra-sans stringSlice | |
用于 API Server 服务证书的可选附加主体备用名称(SAN)。可以是 IP 地址和 DNS 名称。 | |
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
证书的存储路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--control-plane-endpoint string | |
为控制平面指定一个稳定的 IP 地址或 DNS 名称。 | |
-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.1.48 -
概要
生成自签名的 Kubernetes CA 以提供其他 Kubernetes 组件的身份,并将其保存到 ca.cert 和 ca.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
Alpha 免责声明:此命令当前为 Alpha 功能。
kubeadm init phase certs ca [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
证书的存储路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
ca 操作的帮助命令 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.49 -
概要
生成用于为 etcd 设置身份的自签名 CA,并将其保存到 etcd/ca.cert 和 etcd/ca.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
Alpha 免责声明:此命令当前为 Alpha 功能。
kubeadm init phase certs etcd-ca [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
证书的存储路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
etcd-ca 操作的帮助命令 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.50 -
概要
生成用于 etcd 健康检查的活跃性探针的证书,并将其保存到 healthcheck-client.cert 和 etcd/healthcheck-client.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
Alpha 免责声明:此命令当前为 alpha 功能。
kubeadm init phase certs etcd-healthcheck-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
证书存储的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
etcd-healthcheck-client 操作的帮助命令 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.51 -
概要
生成 etcd 节点相互通信的证书,并将其保存到 etcd/peer.cert 和 etcd/peer.key 文件中。
默认 SAN 为 localhost、127.0.0.1、127.0.0.1、:: 1
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
Alpha 免责声明:此命令当前为 alpha 功能。
kubeadm init phase certs etcd-peer [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存和存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
etcd-peer 操作的帮助命令 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.52 -
概要
生成用于提供 etcd 服务的证书,并将其保存到 etcd/server.cert 和 etcd/server.key 文件中。
默认 SAN 为 localhost、127.0.0.1、127.0.0.1、:: 1
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
Alpha 免责声明:此命令当前为 alpha 功能。
kubeadm init phase certs etcd-server [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存和存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
etcd-server 操作的帮助命令 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.53 -
概要
生成自签名 CA 来提供前端代理的身份,并将其保存到 front-proxy-ca.cert 和 front-proxy-ca.key 文件中。
如果两个文件都已存在,kubeadm 将跳过生成步骤并将使用现有文件。
Alpha 免责声明:此命令目前是 alpha 阶段。
kubeadm init phase certs front-proxy-ca [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
front-proxy-ca 操作的帮助命令 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本。 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.54 -
概要
为前端代理客户端生成证书,并将其保存到 front-proxy-client.cert 和 front-proxy-client.key 文件中。 如果两个文件都已存在,kubeadm 将跳过生成步骤并将使用现有文件。 Alpha 免责声明:此命令目前是 alpha 阶段。
kubeadm init phase certs front-proxy-client [flags]
选项
--cert-dir string 默认:"/etc/kubernetes/pki" | |
存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
front-proxy-client 操作的帮助命令 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本。 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.55 -
概要
生成用于签名 service account 令牌的私钥及其公钥,并将其保存到 sa.key 和 sa.pub 文件中。如果两个文件都已存在,则 kubeadm 会跳过生成步骤,而将使用现有文件。
Alpha 免责声明:此命令当前为 alpha 阶段。
kubeadm init phase certs sa [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存和存储证书的路径。 | |
-h, --help | |
sa 操作的帮助命令 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.56 -
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm init phase control-plane [flags]
选项
-h, --help | |
control-plane 操作的帮助命令 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.57 -
概要
生成所有的静态 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 mapStringString | |
形式为 <flagname>=<value> 的一组额外参数,用来传递给 API 服务器, 或者覆盖其默认配置值 | |
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--control-plane-endpoint string | |
为控制平面选择一个稳定的 IP 地址或者 DNS 名称。 | |
--controller-manager-extra-args mapStringString | |
一组形式为 <flagname>=<value> 的额外参数,用来传递给控制管理器(Controller Manager) 或覆盖其默认设置值 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录。 例如,"kube-apiserver0+merge.yaml" 或者 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,分别与 kubectl 所支持的 patch 格式相匹配。默认的 "patchtype" 是 "strategic"。 "extension" 必须是 "json" 或 "yaml"。 "suffix" 是一个可选的字符串,用来确定按字母顺序排序时首先应用哪些 patch。 | |
--feature-gates string | |
一组用来描述各种特性门控的键值(key=value)对。选项是: IPv6DualStack=true|false (ALPHA - 默认=false) PublicKeysECDSA=true|false (ALPHA - 默认=false) | |
-h, --help | |
all 操作的帮助命令 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择用于拉取控制平面镜像的容器仓库 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择指定的 Kubernetes 版本。 | |
--pod-network-cidr string | |
指定 Pod 网络的 IP 地址范围。如果设置了此标志,控制平面将自动地为每个节点分配 CIDR。 | |
--scheduler-extra-args mapStringString | |
一组形式为 <flagname>=<value> 的额外参数,用来传递给调度器(Scheduler)
或覆盖其默认设置值 传递给调度器(scheduler)一组额外的参数或者以 <flagname>=<value> 形式覆盖其默认值。 | |
--service-cidr string 默认值:"10.96.0.0/12" | |
为服务 VIP 选择 IP 地址范围。 |
从父指令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机的根文件系统的路径。 |
1.1.58 -
概要
生成 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 mapStringString | |
一组 <flagname>=<value> 形式的额外参数,用来传递给 API 服务器 或者覆盖其默认参数配置 | |
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存和存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--control-plane-endpoint string | |
为控制平面指定一个稳定的 IP 地址或 DNS 名称。 | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录。 例如,"kube-apiserver0+merge.yaml" 或者 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,分别与 kubectl 所支持的 patch 格式相匹配。默认的 "patchtype" 是 "strategic"。 "extension" 必须是 "json" 或 "yaml"。 "suffix" 是一个可选的字符串,用来确定按字母顺序排序时首先应用哪些 patch。 | |
--feature-gates string | |
一组键值对,用于描述各种功能特性的特性门控。选项是: IPv6DualStack=true|false (ALPHA - 默认=false) PublicKeysECDSA=true|false (ALPHA - 默认=false) | |
-h, --help | |
apiserver 操作的帮助命令 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择要从中拉取控制平面镜像的容器仓库 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本 | |
--service-cidr string 默认值:"10.96.0.0/12" | |
指定服务 VIP 使用 IP 地址的其他范围。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统路径。 |
1.1.59 -
概要
生成 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 mapStringString | |
一组 <flagname>=< 形式的额外参数,传递给控制器管理器(Controller Manager) 或者覆盖其默认配置值 | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录。 例如,"kube-apiserver0+merge.yaml" 或者 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,分别与 kubectl 所支持的 patch 格式相匹配。默认的 "patchtype" 是 "strategic"。 "extension" 必须是 "json" 或 "yaml"。 "suffix" 是一个可选的字符串,用来确定按字母顺序排序时首先应用哪些 patch。 | |
-h, --help | |
controller-manager 操作的帮助命令 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择要从中拉取控制平面镜像的容器仓库 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本。 | |
--pod-network-cidr string | |
指定 Pod 网络的 IP 地址范围。如果设置,控制平面将自动为每个节点分配 CIDR。 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.60 -
概要
生成 kube-scheduler 静态 Pod 清单
kubeadm init phase control-plane scheduler [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录。 例如,"kube-apiserver0+merge.yaml" 或者 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,分别与 kubectl 所支持的 patch 格式相匹配。默认的 "patchtype" 是 "strategic"。 "extension" 必须是 "json" 或 "yaml"。 "suffix" 是一个可选的字符串,用来确定按字母顺序排序时首先应用哪些 patch。 | |
-h, --help | |
scheduler 操作的帮助命令 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择要从中拉取控制平面镜像的容器仓库 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本。 | |
--scheduler-extra-args mapStringString | |
一组 <flagname>=<value> 形式的额外参数,用来传递给调度器 或者覆盖其默认参数配置 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.61 -
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm init phase etcd [flags]
选项
-h, --help | |
etcd 操作的帮助命令 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.62 -
概要
为本地单节点 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 配置文件的路径。 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
-h, --help | |
local 操作的帮助命令 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择要从中拉取控制平面镜像的容器仓库 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.63 -
概要
此命令并非设计用来单独运行。请阅读可用子命令列表。
kubeadm init phase kubeconfig [flags]
选项
-h, --help | |
kubeconfig 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.64 -
概要
为管理员和 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 名称。 | |
-h, --help | |
admin 操作的帮助命令 | |
--kubeconfig-dir string 默认值:"/etc/kubernetes" | |
kubeconfig 文件的保存路径。 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.65 -
概要
生成所有 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 名称。 | |
-h, --help | |
all 操作的帮助命令 | |
--kubeconfig-dir string 默认值:"/etc/kubernetes" | |
kubeconfig 文件的保存路径。 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面指定特定的 Kubernetes 版本。 | |
--node-name string | |
指定节点名称。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.66 -
概要
生成控制器管理器要使用的 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 名称。 |
-h, --help | |
controller-manager 操作的帮助命令 | |
--kubeconfig-dir string 默认值:"/etc/kubernetes" | |
kubeconfig 文件的保存路径。 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs 字符串 | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.67 -
概要
生成 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 名称。 | |
-h, --help | |
kubelet 操作的帮助命令 | |
--kubeconfig-dir string 默认值:"/etc/kubernetes" | |
kubeconfig 文件的保存路径。 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本。 | |
--node-name string | |
指定节点的名称。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.68 -
概要
生成调度器(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 名称。 | |
-h, --help | |
scheduler 操作的帮助命令 | |
--kubeconfig-dir string 默认值:"/etc/kubernetes" | |
kubeconfig 文件的保存路径。 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.69 -
TLS 引导后更新与 kubelet 相关的设置
kubeadm init phase kubelet-finalize [flags]
示例
# 在 TLS 引导后更新与 kubelet 相关的设置
kubeadm init phase kubelet-finalize all --config
选项
-h, --help | |
kubelet-finalize 操作的帮助命令 |
继承于父命令的选项
--rootfs string | |
[实验] 到'真实'主机根文件系统的路径。 |
1.1.70 -
运行所有 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 配置文件的路径。 | |
-h, --help | |
all 操作的帮助命令 |
继承于父命令的选项
--rootfs string | |
[实验] 到'真实'主机根文件系统的路径。 |
1.1.71 -
启用 kubelet 客户端证书轮换
kubeadm init phase kubelet-finalize experimental-cert-rotation [flags]
选项
--cert-dir string Default: "/etc/kubernetes/pki" | |
保存和存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
experimental-cert-rotation 操作的帮助命令 |
继承于父命令的选项
--rootfs string | |
[实验] 到'真实'主机根文件系统的路径。 |
1.1.72 -
概要
使用 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 套接字时,才使用此选项。 | |
-h, --help | |
kubelet-start 操作的帮助命令 | |
--node-name string | |
指定节点名称。 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.73 -
概要
标记 Node 节点为控制平面节点
kubeadm init phase mark-control-plane [flags]
示例
# 将控制平面标签和污点应用于当前节点,其功能等效于 kubeadm init执行的操作。
kubeadm init phase mark-control-plane --config config.yml
# 将控制平面标签和污点应用于特定节点
kubeadm init phase mark-control-plane --node-name myNode
选项
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
mark-control-plane 操作的帮助命令 | |
--node-name string | |
指定节点名称。 |
从父命令继承的选项
--rootfs 字符串 | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.74 -
概要
运行 kubeadm init 前的启动检查。
kubeadm init phase preflight [flags]
案例
# 使用配置文件对 kubeadm init 进行启动检查。
kubeadm init phase preflight --config kubeadm-config.yml
选项
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
preflight 操作的帮助命令 | |
--ignore-preflight-errors stringSlice | |
错误将显示为警告的检查列表:例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.75 -
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm init phase upload-certs [flags]
选项
--certificate-key string | |
用于加密 kubeadm-certs Secret 中的控制平面证书的密钥。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
upload-certs 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
用来与集群通信的 kubeconfig 文件。 如果此标志未设置,则可以在一组标准的位置搜索现有的 kubeconfig 文件。 | |
--skip-certificate-key-print | |
不要打印输出用于加密控制平面证书的密钥。 | |
--upload-certs | |
将控制平面证书上传到 kubeadm-certs Secret。 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.76 -
概要
此命令并非设计用来单独运行。请参阅可用的子命令列表。
kubeadm init phase upload-config [flags]
选项
-h, --help | |
upload-config 操作的帮助命令 |
从父命令中继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.77 -
概要
将所有配置上传到 ConfigMap
kubeadm init phase upload-config all [flags]
选项
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
all 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.78 -
概要
将 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 配置文件的路径。 | |
-h, --help | |
kubeadm 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.79 -
概要
将从 kubeadm InitConfiguration 对象提取的 kubelet 配置上传到集群中 kubelet-config-1.X 形式的 ConfigMap,其中 X 是当前(API 服务器)Kubernetes 版本的次要版本。
kubeadm init phase upload-config kubelet [flags]
示例
# 将 kubelet 配置从 kubeadm 配置文件上传到集群中的 ConfigMap。
kubeadm init phase upload-config kubelet --config kubeadm.yaml
选项
--config string | |
到 kubeadm 配置文件的路径。 | |
-h, --help | |
kubelet 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该标签,则可以通过一组标准路径来寻找已有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.80 -
摘要
当节点加入 kubeadm 初始化的集群时,我们需要建立双向信任。 这个过程可以分解为发现(让待加入节点信任 Kubernetes 控制平面节点)和 TLS 引导(让Kubernetes 控制平面节点信任待加入节点)两个部分。
有两种主要的发现方案。
第一种方法是使用共享令牌和 API 服务器的 IP 地址。
第二种是提供一个文件 - 标准 kubeconfig 文件的一个子集。
该文件可以是本地文件,也可以通过 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 Run join pre-flight checks
control-plane-prepare Prepare the machine for serving a control plane
/download-certs [EXPERIMENTAL] Download certificates shared among control-plane nodes from the kubeadm-certs Secret
/certs Generate the certificates for the new control plane components
/kubeconfig Generate the kubeconfig for the new control plane components
/control-plane Generate the manifests for the new control plane components
kubelet-start Write kubelet settings, certificates and (re)start the kubelet
control-plane-join Join a machine as a control plane instance
/etcd Add a new local etcd member
/update-status Register the new control-plane node into the ClusterStatus maintained in the kubeadm-config ConfigMap
/mark-control-plane Mark a node as a 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。 | |
--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 参数的情况下添加节点。 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
-h, --help | |
join 操作的帮助命令 | |
--ignore-preflight-errors stringSlice | |
错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 | |
--node-name string | |
指定节点的名称 | |
--skip-phases stringSlice | |
要跳过的阶段列表 | |
--tls-bootstrap-token string | |
指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 | |
--token string | |
如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.81 -
概要
使用此命令来调用 join
工作流程的某个阶段
选项
-h, --help | |
phase 操作的帮助命令 |
从父命令中继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.82 -
概要
添加作为控制平面实例的机器
kubeadm join phase control-plane-join [flags]
示例
# 将机器作为控制平面实例加入
kubeadm join phase control-plane-join all
选项
-h, --help | |
control-plane-join 操作的帮助命令 |
从父命令中继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.83 -
概要
添加作为控制平面实例的机器
kubeadm join phase control-plane-join all [flags]
选项
--apiserver-advertise-address string | |
如果该节点托管一个新的控制平面实例,则 API 服务器将公布其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--experimental-control-plane | |
在此节点上创建一个新的控制平面实例 | |
-h, --help | |
all 操作的帮助命令 | |
--node-name string | |
指定节点名称。 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.84 -
概要
添加新的本地 etcd 成员
kubeadm join phase control-plane-join etcd [flags]
选项
--apiserver-advertise-address string | |
如果该节点托管一个新的控制平面实例,则 API 服务器将公布其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--control-plane | |
在此节点上创建一个新的控制平面实例 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 "patchtype" 可以是"strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
-h, --help | |
etcd 操作的帮助命令 | |
--node-name string | |
指定节点的名称 |
从父命令中继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.85 -
概要
将 Node 节点标记为控制平面节点
kubeadm join phase control-plane-join mark-control-plane [flags]
选项
--config string | |
kubeadm 配置文件的路径。 | |
--control-plane | |
在此节点上创建一个新的控制平面实例 | |
-h, --help | |
mark-control-plane 操作的帮助命令 | |
--node-name string | |
指定节点的名称 |
从父命令中继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.86 -
概要
将新的控制平面节点注册到 kubeadm-config ConfigMap 维护的 ClusterStatus 中
kubeadm join phase control-plane-join update-status [flags]
选项
--apiserver-advertise-address string | |
如果该节点托管一个新的控制平面实例,则 API 服务器将公布其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--control-plane | |
在此节点上创建一个新的控制平面实例 | |
-h, --help | |
update-status 操作的帮助命令 | |
--node-name string | |
指定节点名称。 |
从父命令中继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
1.1.87 -
概要
准备为控制平面服务的机器
kubeadm join phase control-plane-prepare [flags]
示例
# 准备为控制平面服务的机器
kubeadm join phase control-plane-prepare all
选项
-h, --help | |
control-plane-prepare 操作的帮助命令 |
从父命令中继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.88 -
概要
准备为控制平面服务的机器
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 上传的证书 secrets。 | |
--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 参数的情况下添加节点。 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
-h, --help | |
all 操作的帮助命令 | |
--node-name string | |
指定节点名称。 | |
--tls-bootstrap-token string | |
指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 | |
--token string | |
如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.89 -
概要
为新的控制平面组件生成证书
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 stringSlice | |
对于基于令牌的发现,请验证根 CA 公钥是否匹配此哈希值(格式:"<type>:<value>")。 | |
--discovery-token-unsafe-skip-ca-verification | |
对于基于令牌的发现,允许在未关联 --discovery-token-ca-cert-hash 参数的情况下添加节点。 | |
-h, --help | |
certs 操作的帮助命令 | |
--node-name string | |
指定节点名称。 | |
--tls-bootstrap-token string | |
指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 | |
--token string | |
如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.90 -
概要
为新的控制平面组件生成清单(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 | |
在此节点上创建一个新的控制平面实例 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
-h, --help | |
control-plane 操作的帮助命令 |
从父命令中继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.91 -
概要
[实验]从 kubeadm-certs Secret 下载控制平面节点之间共享的证书
kubeadm join phase control-plane-prepare download-certs [api-server-endpoint] [flags]
选项
--certificate-key string | |
使用此密钥可以解密由 init 上传的证书 secret。 | |
--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 参数的情况下添加节点。 | |
-h, --help | |
kubeconfig 操作的帮助命令 | |
--tls-bootstrap-token string | |
指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 | |
--token string | |
如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令中继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.92 -
概要
为新的控制平面组件生成 kubeconfig
kubeadm join phase control-plane-prepare kubeconfig [api-server-endpoint] [flags]
选项
--certificate-key string | |
使用此密钥可以解密由 init 上传的证书 secret。 | |
--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 参数的情况下添加节点。 | |
-h, --help | |
kubeconfig 操作的帮助命令 | |
--tls-bootstrap-token string | |
指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 | |
--token string | |
如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令中继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.93 -
概要
生成一个包含 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 | |
For file-based discovery, a file or URL from which to load cluster information. 对于基于文件的发现,给出用于加载集群信息的文件或者 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 参数的情况下添加节点。 | |
-h, --help | |
kubelet-start 操作的帮助命令 | |
--node-name string | |
指定节点名称。 | |
--tls-bootstrap-token string | |
指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 | |
--token string | |
如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.94 -
概要
运行 kubeadm join 命令添加节点前检查。
kubeadm join phase preflight [api-server-endpoint] [flags]
示例
# 使用配置文件运行 kubeadm join 命令添加节点前检查。
kubeadm join phase preflight --config kubeadm-config.yml
选项
--apiserver-advertise-address string | |
对于将要托管新的控制平面实例的节点,指定 API 服务器将公布的其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 | |
--apiserver-bind-port int32 默认值:6443 | |
针对将要托管新的控制平面实例的节点,设置 API 服务器要绑定的端口。 | |
--certificate-key string | |
使用此密钥可以解密由 `init` 操作上传的证书 secret。 | |
--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 参数的情况下添加节点。 | |
-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.1.95 -
概要
尽最大努力还原通过 'kubeadm init' 或者 'kubeadm join' 操作对主机所做的更改
"reset" 命令执行以下阶段:
preflight Run reset pre-flight checks
update-cluster-status Remove this node from the ClusterStatus object.
remove-etcd-member Remove a local etcd member.
cleanup-node Run cleanup node.
kubeadm reset [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的目录路径。如果已指定,则需要清空此目录。 | |
--cri-socket string | |
要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值;仅当安装了多个CRI 或具有非标准 CRI 插槽时,才使用此选项。 | |
-f, --force | |
在不提示确认的情况下重置节点。 | |
-h, --help | |
reset 操作的帮助命令 | |
--ignore-preflight-errors stringSlice | |
错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该标志,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--skip-phases stringSlice | |
要跳过的阶段列表 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.96 -
概要
使用此命令来调用 reset
工作流程的某个阶段
选项
-h, --help | |
phase 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.97 -
概要
执行 cleanup node(清理节点)操作。
kubeadm reset phase cleanup-node [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的目录路径。如果已指定,则需要清空此目录。 | |
--cri-socket string | |
要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值;仅当安装了多个CRI 或具有非标准 CRI 插槽时,才使用此选项。 | |
-h, --help | |
cleanup-node 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.98 -
概要
kubeadm reset(重置)前运行启动前检查。
kubeadm reset phase preflight [flags]
选项
-f, --force | |
在不提示确认的情况下重置节点。 | |
-h, --help | |
preflight 操作的帮助命令 | |
--ignore-preflight-errors stringSlice | |
错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.99 -
概要
上传关于当前状态的配置,以便 'kubeadm upgrade' 以后可以知道如何配置升级后的集群。
kubeadm config upload [flags]
选项
-h, --help | |
upload 操作的帮助信息 |
从父命令继承的选项
--kubeconfig string 默认值: "/etc/kubernetes/admin.conf" | |
用于和集群通信的 KubeConfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 KubeConfig 文件。 | |
--rootfs string | |
[实验] 到'真实'主机根文件系统的路径。 |
1.1.100 -
概要
如果该节点是控制平面节点,从 ClusterStatus 对象中删除该节点。
kubeadm reset phase update-cluster-status [flags]
选项
-h, --help | |
update-cluster-status 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.101 -
概要
此命令管理引导令牌(bootstrap token)。它是可选的,仅适用于高级用例。
简而言之,引导令牌(bootstrap token)用于在客户端和服务器之间建立双向信任。 当客户端(例如,即将加入集群的节点)需要时,可以使用引导令牌相信正在与之通信的服务器。 然后可以使用具有 “签名” 的引导令牌。
引导令牌还可以作为一种允许对 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)的更多信息: /docs/admin/bootstrap-tokens/
kubeadm token [flags]
选项
--dry-run | |
是否启用 `dry-run` 模式 | |
-h, --help | |
token 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置,则搜索一组标准位置以查找现有 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.102 -
概要
这个命令将为你创建一个引导令牌。 您可以设置此令牌的用途,"有效时间" 和可选的人性化的描述。
这里的 [token] 是指将要生成的实际令牌。 该令牌应该是一个通过安全机制生成的随机令牌,形式为 "[a-z0-9]{6}.[a-z0-9]{16}"。 如果没有给出 [token],kubeadm 将生成一个随机令牌。
kubeadm token create [token]
选项
--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 | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.103 -
概要
这个命令将为你删除指定的引导令牌列表。
[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 | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.104 -
概要
此命令将打印一个随机生成的可以被 "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 | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.105 -
概要
此命令将为您列出所有的引导令牌。
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 操作的帮助命令 |
从父命令继承的选项
--dry-run | |
是否启用 `dry-run` 模式 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 | |
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.106 -
概要
此命令能将集群平滑升级到新版本
kubeadm upgrade [flags]
选项
-h, --help | |
upgrade 操作的帮助命令 |
继承于父命令的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.107 -
概要
将 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 的升级。 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
--feature-gates string | |
一组键值对,用于描述各种功能。选项包括: IPv6DualStack=true|false (ALPHA - 默认=false) PublicKeysECDSA=true|false (ALPHA - 默认=false) | |
-f, --force | |
强制升级,但可能无法满足某些要求。这也意味着非交互模式。 | |
-h, --help | |
apply 操作的帮助命令 | |
--ignore-preflight-errors stringSlice | |
错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置标志,则在相关目录下搜索以查找现有 kubeconfig 文件。 | |
--print-config | |
指定是否应打印将在升级中使用的配置文件。 | |
-y, --yes | |
执行升级,不提示确认(非交互模式)。 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.108 -
概述
显示哪些差异将被应用于现有的静态 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 | |
差异中有多少行上下文 | |
--controller-manager-manifest string 默认值: "/etc/kubernetes/manifests/kube-controller-manager.yaml" | |
控制器清单的路径 | |
-h, --help | |
帮助 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件,如果标志是未设置,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--scheduler-manifest string 默认值:"/etc/kubernetes/manifests/kube-scheduler.yaml" | |
调度程序清单的路径 |
从父命令继承的选项
--rootfs string | |
[EXPERIMENTAL] “真实”主机根文件系统的路径。 |
1.1.109 -
概要
升级集群中某个节点的命令
"node" 命令执行以下阶段:
preflight 执行节点升级前检查
control-plane 如果存在的话,升级部署在该节点上的管理面实例
kubelet-config 更新该节点上的 kubelet 配置
kubeadm upgrade node [flags]
选项
--certificate-renewal | |
对升级期间变化的组件所使用的证书执行更新。 | |
--dry-run | |
不更改任何状态,只输出将要执行的操作。 | |
--etcd-upgrade 默认值: true | |
执行 etcd 的升级。 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
-h, --help | |
node 操作的帮助命令 | |
--kubeconfig string 默认值: "/etc/kubernetes/admin.conf" | |
用于与集群交互的 kubeconfig 文件。如果参数未指定,将从一系列标准位置检索存在的 kubeconfig 文件。 | |
--kubelet-version string | |
升级后 *期望的* kubelet 配置版本。如未指定,将使用 kubeadm-config ConfigMap 中的 KubernetesVersion | |
--skip-phases stringSlice | |
要跳过的阶段的列表 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.110 -
概要
使用此命令调用 node 工作流的某个阶段
选项
-h, --help | |
phase 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.111 -
概要
升级部署在此节点上的控制平面实例,如果有的话
kubeadm upgrade node phase control-plane [flags]
选项
--certificate-renewal | |
更新在升级期间变更的组件使用的证书。 | |
--dry-run | |
不改变任何状态,只输出将要执行的动作。 | |
--etcd-upgrade 默认值: true | |
执行 etcd 的升级。 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
-h, --help | |
control-plane 的帮助信息 | |
--kubeconfig string 默认值: "/etc/kubernetes/admin.conf" | |
用于和集群通信的 KubeConfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 KubeConfig 文件。 |
从父命令继承的选项
--rootfs string | |
[实验] 到'真实'主机根文件系统的路径。 |
1.1.112 -
从群集中 "kubelet-config-1.X" 的 ConfigMap 下载 kubelet 配置,其中 X 是kubelet 的次要版本。 kubeadm 使用 --kubelet-version 参数来确定所需的 kubelet 版本。
kubeadm upgrade node phase kubelet-config [flags]
选项
--dry-run | |
不改变任何状态,只输出将要执行的操作 | |
-h, --help | |
配置操作的帮助信息 | |
--kubeconfig string 默认值: "/etc/kubernetes/kubelet.conf" | |
用于和集群通信的 KubeConfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 KubeConfig 文件。 | |
--kubelet-version string | |
升级后的 kubelet 的*期望*版本。 |
从父命令继承的选项
--rootfs string | |
[实验] 到'真实'主机根文件系统的路径。 |
1.1.113 -
执行 kubeadm 升级节点的预检。
kubeadm upgrade node phase preflight [flags]
选项
-h, --help | |
preflight 操作的帮助命令 | |
--ignore-preflight-errors stringSlice | |
错误将显示为警告的检查清单。示例:'IsPrivilegedUser,Swap'。值为'all'表示忽略所有检查的错误。 |
继承于父命令的选项
--rootfs string | |
[实验] 到'真实'主机根文件系统的路径。 |
1.1.114 -
概述
检查可升级到哪些版本,并验证您当前的集群是否可升级。 要跳过互联网检查,请传递可选的 [version] 参数
kubeadm upgrade plan [version] [flags]
选项
--allow-experimental-upgrades | |
显示不稳定版本的 Kubernetes 作为升级替代方案,并允许升级到 Kubernetes 的 Alpha/Beta/发行候选版本。 | |
--allow-release-candidate-upgrades | |
显示 Kubernetes 的发行候选版本作为升级选择,并允许升级到 Kubernetes 的发行候选版本。 | |
--config string | |
配置文件的路径。 | |
--feature-gates string | |
一组描述各种特征特性门控的键值对。选项有:IPv6DualStack=true|false (ALPHA - default=false) PublicKeysECDSA=true|false (ALPHA - default=false) | |
-h, --help | |
帮助 | |
--ignore-preflight-errors stringSlice | |
检查清单,其错误将显示为警告。 例如:“IsPrivilegedUser,Swap”。 值 “all” 忽略所有检查的错误。 | |
--kubeconfig string Default: "/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果标志为未设置,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--print-config | |
指定是否打印将在升级中使用的配置文件。 |
从父命令继承的选项
--rootfs string | |
[EXPERIMENTAL] “真实”主机根文件系统的路径。 |
1.1.115 -
概要
打印 kubeadm 的版本
kubeadm version [flags]
选项
-h, --help | |
version 操作的帮助命令 | |
-o, --output string | |
输出格式;可用的选项有 'yaml', 'json' 和 'short' |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.1.116 -
此目录下的所有文件都是从其他仓库自动生成的。 不要人工编辑它们。 您必须在上游仓库中编辑它们
1.2 - kubeadm init
此命令初始化一个 Kubernetes 控制平面节点。
概要
运行此命令来搭建 Kubernetes 控制平面节点。
"init" 命令执行以下阶段:
preflight Run pre-flight checks
certs Certificate generation
/ca Generate the self-signed Kubernetes CA to provision identities for other Kubernetes components
/apiserver Generate the certificate for serving the Kubernetes API
/apiserver-kubelet-client Generate the certificate for the API server to connect to kubelet
/front-proxy-ca Generate the self-signed CA to provision identities for front proxy
/front-proxy-client Generate the certificate for the front proxy client
/etcd-ca Generate the self-signed CA to provision identities for etcd
/etcd-server Generate the certificate for serving etcd
/etcd-peer Generate the certificate for etcd nodes to communicate with each other
/etcd-healthcheck-client Generate the certificate for liveness probes to healthcheck etcd
/apiserver-etcd-client Generate the certificate the apiserver uses to access etcd
/sa Generate a private key for signing service account tokens along with its public key
kubeconfig Generate all kubeconfig files necessary to establish the control plane and the admin kubeconfig file
/admin Generate a kubeconfig file for the admin to use and for kubeadm itself
/kubelet Generate a kubeconfig file for the kubelet to use *only* for cluster bootstrapping purposes
/controller-manager Generate a kubeconfig file for the controller manager to use
/scheduler Generate a kubeconfig file for the scheduler to use
kubelet-start Write kubelet settings and (re)start the kubelet
control-plane Generate all static Pod manifest files necessary to establish the control plane
/apiserver Generates the kube-apiserver static Pod manifest
/controller-manager Generates the kube-controller-manager static Pod manifest
/scheduler Generates the kube-scheduler static Pod manifest
etcd Generate static Pod manifest file for local etcd
/local Generate the static Pod manifest file for a local, single-node local etcd instance
upload-config Upload the kubeadm and kubelet configuration to a ConfigMap
/kubeadm Upload the kubeadm ClusterConfiguration to a ConfigMap
/kubelet Upload the kubelet component config to a ConfigMap
upload-certs Upload certificates to kubeadm-certs
mark-control-plane Mark a node as a control-plane
bootstrap-token Generates bootstrap tokens used to join a node to a cluster
kubelet-finalize Updates settings relevant to the kubelet after TLS bootstrap
/experimental-cert-rotation Enable kubelet client certificate rotation
addon Install required addons for passing Conformance tests
/coredns Install the CoreDNS addon to a Kubernetes cluster
/kube-proxy Install the kube-proxy addon to a Kubernetes cluster
kubeadm init [flags]
选项
--apiserver-advertise-address string | |
API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认网络接口。 | |
--apiserver-bind-port int32 默认值:6443 | |
API 服务器绑定的端口。 | |
--apiserver-cert-extra-sans stringSlice | |
用于 API Server 服务证书的可选附加主题备用名称(SAN)。可以是 IP 地址和 DNS 名称。 | |
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存和存储证书的路径。 | |
--certificate-key string | |
用于加密 kubeadm-certs Secret 中的控制平面证书的密钥。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--control-plane-endpoint string | |
为控制平面指定一个稳定的 IP 地址或 DNS 名称。 | |
--cri-socket string | |
要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值;仅当安装了多个 CRI 或具有非标准 CRI 插槽时,才使用此选项。 | |
--dry-run | |
不要应用任何更改;只是输出将要执行的操作。 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录路径。 例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
--feature-gates string | |
一组用来描述各种功能特性的键值(key=value)对。选项是: IPv6DualStack=true|false (ALPHA - default=false) | |
-h, --help | |
init 操作的帮助命令 | |
--ignore-preflight-errors stringSlice | |
错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择用于拉取控制平面镜像的容器仓库 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择一个特定的 Kubernetes 版本。 | |
--node-name string | |
指定节点的名称。 | |
--pod-network-cidr string | |
指明 pod 网络可以使用的 IP 地址段。如果设置了这个参数,控制平面将会为每一个节点自动分配 CIDRs。 | |
--service-cidr string 默认值:"10.96.0.0/12" | |
为服务的虚拟 IP 地址另外指定 IP 地址段 | |
--service-dns-domain string 默认值:"cluster.local" | |
为服务另外指定域名,例如:"myorg.internal"。 | |
--skip-certificate-key-print | |
不要打印用于加密控制平面证书的密钥。 | |
--skip-phases stringSlice | |
要跳过的阶段列表 | |
--skip-token-print | |
跳过打印 'kubeadm init' 生成的默认引导令牌。 | |
--token string | |
这个令牌用于建立控制平面节点与工作节点间的双向通信。格式为 [a-z0-9]{6}\.[a-z0-9]{16} - 示例:abcdef.0123456789abcdef | |
--token-ttl duration 默认值:24h0m0s | |
令牌被自动删除之前的持续时间(例如 1 s,2 m,3 h)。如果设置为 '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 服务器,它们每一个都有自己的身份标识,同时生成一个名为admin.conf
的独立的 kubeconfig 文件,用于管理操作。
为 API 服务器、控制器管理器和调度器生成静态 Pod 的清单文件。假使没有提供一个外部的 etcd 服务的话,也会为 etcd 生成一份额外的静态 Pod 清单文件。
静态 Pod 的清单文件被写入到
/etc/kubernetes/manifests
目录; kubelet 会监视这个目录以便在系统启动的时候创建 Pod。一旦控制平面的 Pod 都运行起来,
kubeadm init
的工作流程就继续往下执行。
- 对控制平面节点应用标签和污点标记以便不会在它上面运行其它的工作负载。
- 生成令牌,将来其他节点可使用该令牌向控制平面注册自己。
如 kubeadm token 文档所述,
用户可以选择通过
--token
提供令牌。
为了使得节点能够遵照启动引导令牌 和 TLS 启动引导 这两份文档中描述的机制加入到集群中,kubeadm 会执行所有的必要配置:
创建一个 ConfigMap 提供添加集群节点所需的信息,并为该 ConfigMap 设置相关的 RBAC 访问规则。
允许启动引导令牌访问 CSR 签名 API。
配置自动签发新的 CSR 请求。
更多相关信息,请查看 kubeadm join。
通过 API 服务器安装一个 DNS 服务器 (CoreDNS) 和 kube-proxy 附加组件。 在 Kubernetes 版本 1.11 和更高版本中,CoreDNS 是默认的 DNS 服务器。 要安装 kube-dns 而不是 CoreDNS,必须在 kubeadm
ClusterConfiguration
中配置 DNS 插件。 有关配置的更多信息,请参见下面的"带配置文件使用 kubeadm init" 一节。 请注意,尽管已部署 DNS 服务器,但直到安装 CNI 时才调度它。警告: 从 v1.18 开始,在 kubeadm 中使用 kube-dns 已废弃,并将在以后的版本中将其删除。
在 kubeadm 中使用 init phases
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
跳过这些阶段。
通过调用最后一个命令,你将使用自定义清单文件创建一个控制平面节点。
结合一份配置文件来使用 kubeadm init
注意: 配置文件的功能仍然处于 alpha 状态并且在将来的版本中可能会改变。
通过一份配置文件而不是使用命令行参数来配置 kubeadm init
命令是可能的,
但是一些更加高级的功能只能够通过配置文件设定。
这份配置文件通过 --config
选项参数指定的,
它必须包含 ClusterConfiguration
结构,并可能包含更多由 ---\n
分隔的结构。
在某些情况下,可能不允许将 --config
与其他标志混合使用。
可以使用 kubeadm config print 命令打印出默认配置。
如果你的配置没有使用最新版本, 推荐使用 kubeadm config migrate 命令进行迁移。
有关配置的字段和用法的更多信息, 你可以访问 API 参考页面并从 列表 中选择一个版本。
添加 kube-proxy 参数
kubeadm 配置中有关 kube-proxy 的说明请查看:
使用 kubeadm 启用 IPVS 模式的说明请查看:
向控制平面组件传递自定义的命令行参数
有关向控制平面组件传递命令行参数的说明请查看: 控制平面命令行参数
使用自定义的镜像
默认情况下, kubeadm 会从 k8s.gcr.io
仓库拉取镜像。如果请求的 Kubernetes 版本是 CI 标签
(例如 ci/latest
),则使用 gcr.io/kubernetes-ci-images
。
你可以通过使用带有配置文件的 kubeadm来重写此操作。
允许的自定义功能有:
- 使用其他的
imageRepository
来代替k8s.gcr.io
。 - 将
useHyperKubeImage
设置为true
,使用 HyperKube 镜像。 - 为 etcd 或 DNS 附件提供特定的
imageRepository
和imageTag
。
请注意配置文件中的配置项 kubernetesVersion
或者命令行参数 --kubernetes-version
会影响到镜像的版本。
将控制平面证书上传到集群
通过将参数 --upload-certs
添加到 kubeadm init
,你可以将控制平面证书临时上传到集群中的 Secret。
请注意,此 Secret 将在 2 小时后自动过期。证书使用 32 字节密钥加密,可以使用 --certificate-key
指定。
通过将 --control-plane
和 --certificate-key
传递给 kubeadm join
,
可以在添加其他控制平面节点时使用相同的密钥下载证书。
以下阶段命令可用于证书到期后重新上传证书:
kubeadm init phase upload-certs --upload-certs --certificate-key=SOME_VALUE --config=SOME_YAML_FILE
如果未将参数 --certificate-key
传递给 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 config images
子命令列出并拉取镜像:
kubeadm config images list
kubeadm config images pull
kubeadm 需要的所有镜像,例如 k8s.gcr.io/kube-*
、k8s.gcr.io/etcd
和 k8s.gcr.io/pause
都支持多种架构。
kubeadm 自动化
除了像文档 kubeadm 基础教程
中所描述的那样,将从 kubeadm init
取得的令牌复制到每个节点,
你还可以并行地分发令牌以实现简单自动化。
要实现自动化,你必须知道控制平面节点启动后将拥有的 IP 地址,或使用 DNS 名称或负载均衡器的地址。
生成一个令牌。这个令牌必须具有以下格式:
< 6 个字符的字符串>.< 16 个字符的字符串>
。 更加正式的说法是,它必须符合以下正则表达式:[a-z0-9]{6}\.[a-z0-9]{16}
。kubeadm 可以为你生成一个令牌:
kubeadm token generate
- 使用这个令牌同时启动控制平面节点和工作节点。它们一旦运行起来应该就会互相寻找对方并且建立集群。
同样的
--token
参数可以同时用于kubeadm init
和kubeadm join
命令。
当加入其他控制平面节点时,可以对
--certificate-key
执行类似的操作。可以使用以下方式生成密钥:kubeadm certs certificate-key
一旦集群启动起来,你就可以从控制平面节点的 /etc/kubernetes/admin.conf
文件获取管理凭证,
并使用这个凭证同集群通信。
注意这种搭建集群的方式在安全保证上会有一些宽松,因为这种方式不允许使用 --discovery-token-ca-cert-hash
来验证根 CA 的哈希值(因为当配置节点的时候,它还没有被生成)。
更多信息请参阅 kubeadm join文档。
接下来
- 进一步阅读了解 kubeadm init phase
- kubeadm join 启动一个 Kubernetes 工作节点并且将其加入到集群
- kubeadm upgrade 将 Kubernetes 集群升级到新版本
- kubeadm reset
恢复
kubeadm init
或kubeadm join
命令对节点所作的变更
1.3 - kubeadm join
此命令用来初始化 Kubernetes 工作节点并将其加入集群。
摘要
当节点加入 kubeadm 初始化的集群时,我们需要建立双向信任。 这个过程可以分解为发现(让待加入节点信任 Kubernetes 控制平面节点)和 TLS 引导(让Kubernetes 控制平面节点信任待加入节点)两个部分。
有两种主要的发现方案。
第一种方法是使用共享令牌和 API 服务器的 IP 地址。
第二种是提供一个文件 - 标准 kubeconfig 文件的一个子集。
该文件可以是本地文件,也可以通过 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 Run join pre-flight checks
control-plane-prepare Prepare the machine for serving a control plane
/download-certs [EXPERIMENTAL] Download certificates shared among control-plane nodes from the kubeadm-certs Secret
/certs Generate the certificates for the new control plane components
/kubeconfig Generate the kubeconfig for the new control plane components
/control-plane Generate the manifests for the new control plane components
kubelet-start Write kubelet settings, certificates and (re)start the kubelet
control-plane-join Join a machine as a control plane instance
/etcd Add a new local etcd member
/update-status Register the new control-plane node into the ClusterStatus maintained in the kubeadm-config ConfigMap
/mark-control-plane Mark a node as a 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。 | |
--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 参数的情况下添加节点。 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
-h, --help | |
join 操作的帮助命令 | |
--ignore-preflight-errors stringSlice | |
错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 | |
--node-name string | |
指定节点的名称 | |
--skip-phases stringSlice | |
要跳过的阶段列表 | |
--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 集群的 ClusterStatus。
使用 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
发现要信任的集群 CA
Kubeadm 的发现有几个选项,每个选项都有安全性上的优缺点。 适合你的环境的正确方法取决于节点是如何准备的以及你对网络的安全性期望和节点的生命周期特点。
带 CA 锁定模式的基于令牌的发现
这是 Kubernetes 1.8 及以上版本中的默认模式。 在这种模式下,kubeadm 下载集群配置(包括根CA)并使用令牌验证它, 并且会验证根 CA 的公钥与所提供的哈希是否匹配, 以及 API 服务器证书在根 CA 下是否有效。
CA 键哈希格式为 sha256:<hex_encoded_hash>
。
默认情况下,在 kubeadm init
最后打印的 kubeadm join
命令
或者 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
命令,
将证书复制到该节点。
优势:
允许引导节点安全地发现主节点的信任根,即使其他工作节点或网络受到损害。
方便手动执行,因为所需的所有信息都适合于易于复制和粘贴的单个
kubeadm join
命令。
劣势:
- CA 哈希通常在主节点被提供之前是不知道的,这使得构建使用 kubeadm 的自动化配置工具更加困难。 通过预先生成CA,你可以解除这个限制。
无 CA 锁定模式的基于令牌的发现
_这是 Kubernetes 1.7 和早期版本_中的默认设置;使用时要注意一些重要的补充说明。
此模式仅依赖于对称令牌来签名(HMAC-SHA256)发现信息,这些发现信息为主节点建立信任根。
在 Kubernetes 1.8 及以上版本中仍然可以使用 --discovery-token-unsafe-skip-ca-verification
参数,但是如果可能的话,你应该考虑使用一种其他模式。
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
命令示例:
kubeadm join --discovery-file path/to/file.conf
(本地文件)kubeadm join --discovery-file https://url/file.conf
(远程 HTTPS URL)
优势:
- 允许引导节点安全地发现主节点的信任根,即使网络或其他工作节点受到损害。
劣势:
- 要求你有某种方法将发现信息从主节点传送到引导节点。 例如,这可以通过云提供商或驱动工具实现。 该文件中的信息不是加密的,而是需要 HTTPS 或等效文件来保证其完整性。
确保你的安装更加安全
Kubeadm 的默认值可能不适用于所有人。 本节说明如何以牺牲可用性为代价来加强 kubeadm 安装。
关闭节点客户端证书的自动批准
默认情况下,Kubernetes 启用了 CSR 自动批准器,如果在身份验证时使用 Bootstrap Token,它会批准对 kubelet 的任何客户端证书的请求。 如果不希望集群自动批准kubelet客户端证书,可以通过执行以下命令关闭它:
kubectl delete clusterrolebinding kubeadm:node-autoapprove-bootstrap
关闭后,kubeadm join
操作将会被阻断,直到管理员已经手动批准了在途中的 CSR 才会继续:
kubectl get csr
输出类似于:
NAME AGE REQUESTOR CONDITION
node-csr-c69HXe7aYcqkS1bKmH4faEnHAWxn6i2bHZ2mD04jZyQ 18s system:bootstrap:878f07 Pending
kubectl certificate approve node-csr-c69HXe7aYcqkS1bKmH4faEnHAWxn6i2bHZ2mD04jZyQ
输出类似于:
certificatesigningrequest "node-csr-c69HXe7aYcqkS1bKmH4faEnHAWxn6i2bHZ2mD04jZyQ" approved
kubectl get csr
输出类似于:
NAME AGE REQUESTOR CONDITION
node-csr-c69HXe7aYcqkS1bKmH4faEnHAWxn6i2bHZ2mD04jZyQ 1m system:bootstrap:878f07 Approved,Issued
这迫使工作流只有在运行了 kubectl 证书批准后,kubeadm join 才能成功。
关闭对集群信息 ConfigMap 的公开访问
为了实现使用令牌作为唯一验证信息的加入工作流,默认情况下会公开带有验证主节点标识所需数据的 ConfigMap。
虽然此 ConfigMap 中没有私有数据,但一些用户可能希望无论如何都关闭它。
这样做需要禁用 kubeadm join
工作流的 --discovery-token
参数。
以下是实现步骤:
- 从 API 服务器获取
cluster-info
文件:
kubectl -n kube-public get cm cluster-info -o yaml | grep "kubeconfig:" -A11 | grep "apiVersion" -A10 | sed "s/ //" | 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: []
使用
cluster-info.yaml
文件作为kubeadm join --discovery-file
参数。关闭
cluster-info
ConfigMap 的公开访问:
kubectl -n kube-public delete rolebinding kubeadm:bootstrap-signer-clusterinfo
这些命令应该在执行 kubeadm init
之后、在kubeadm join
之前执行。
使用带有配置文件的 kubeadm join
注意:配置文件目前是 alpha 功能,在将来的版本中可能会变动。
可以用配置文件替代命令行参数的方法配置 kubeadm join
,一些高级功能也只有在使用配置文件时才可选用。
该文件通过 --config
参数来传递,并且文件中必须包含 JoinConfiguration
结构。
在某些情况下,不允许将 --config
与其他标志混合使用。
使用 kubeadm config print 命令可以打印默认配置。
如果你的配置没有使用最新版本, 推荐使用 kubeadm config migrate 命令转换。
有关配置的字段和用法的更多信息,你可以导航到我们的 API 参考页 并从[列表]中选择一个版本(https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm#pkg-subdirectories)。
接下来
- kubeadm init 初始化 Kubernetes 主节点
- kubeadm token 管理
kubeadm join
的令牌 - kubeadm reset 将
kubeadm init
或kubeadm join
对主机的更改恢复到之前状态
1.4 - kubeadm upgrade
kubeadm upgrade
是一个对用户友好的命令,它将复杂的升级逻辑包装在一个命令后面,支持升级的规划和实际执行。
kubeadm 升级指南
本文档概述了使用 kubeadm 执行升级的步骤。 有关 kubeadm 旧版本,请参阅 Kubernetes 网站的旧版文档。
你可以使用 kubeadm upgrade diff
来查看将应用于静态 pod 清单的更改。
要在 Kubernetes v1.13.0 及更高版本中使用 kube-dns 进行升级,请遵循本指南。
在 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
概述
检查可升级到哪些版本,并验证您当前的集群是否可升级。 要跳过互联网检查,请传递可选的 [version] 参数
kubeadm upgrade plan [version] [flags]
选项
--allow-experimental-upgrades | |
显示不稳定版本的 Kubernetes 作为升级替代方案,并允许升级到 Kubernetes 的 Alpha/Beta/发行候选版本。 | |
--allow-release-candidate-upgrades | |
显示 Kubernetes 的发行候选版本作为升级选择,并允许升级到 Kubernetes 的发行候选版本。 | |
--config string | |
配置文件的路径。 | |
--feature-gates string | |
一组描述各种特征特性门控的键值对。选项有:IPv6DualStack=true|false (ALPHA - default=false) PublicKeysECDSA=true|false (ALPHA - default=false) | |
-h, --help | |
帮助 | |
--ignore-preflight-errors stringSlice | |
检查清单,其错误将显示为警告。 例如:“IsPrivilegedUser,Swap”。 值 “all” 忽略所有检查的错误。 | |
--kubeconfig string Default: "/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果标志为未设置,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--print-config | |
指定是否打印将在升级中使用的配置文件。 |
从父命令继承的选项
--rootfs string | |
[EXPERIMENTAL] “真实”主机根文件系统的路径。 |
kubeadm upgrade apply
概要
将 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 的升级。 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
--feature-gates string | |
一组键值对,用于描述各种功能。选项包括: IPv6DualStack=true|false (ALPHA - 默认=false) PublicKeysECDSA=true|false (ALPHA - 默认=false) | |
-f, --force | |
强制升级,但可能无法满足某些要求。这也意味着非交互模式。 | |
-h, --help | |
apply 操作的帮助命令 | |
--ignore-preflight-errors stringSlice | |
错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置标志,则在相关目录下搜索以查找现有 kubeconfig 文件。 | |
--print-config | |
指定是否应打印将在升级中使用的配置文件。 | |
-y, --yes | |
执行升级,不提示确认(非交互模式)。 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
kubeadm upgrade diff
概述
显示哪些差异将被应用于现有的静态 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 | |
差异中有多少行上下文 | |
--controller-manager-manifest string 默认值: "/etc/kubernetes/manifests/kube-controller-manager.yaml" | |
控制器清单的路径 | |
-h, --help | |
帮助 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件,如果标志是未设置,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--scheduler-manifest string 默认值:"/etc/kubernetes/manifests/kube-scheduler.yaml" | |
调度程序清单的路径 |
从父命令继承的选项
--rootfs string | |
[EXPERIMENTAL] “真实”主机根文件系统的路径。 |
kubeadm upgrade node
概要
升级集群中某个节点的命令
"node" 命令执行以下阶段:
preflight 执行节点升级前检查
control-plane 如果存在的话,升级部署在该节点上的管理面实例
kubelet-config 更新该节点上的 kubelet 配置
kubeadm upgrade node [flags]
选项
--certificate-renewal | |
对升级期间变化的组件所使用的证书执行更新。 | |
--dry-run | |
不更改任何状态,只输出将要执行的操作。 | |
--etcd-upgrade 默认值: true | |
执行 etcd 的升级。 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
-h, --help | |
node 操作的帮助命令 | |
--kubeconfig string 默认值: "/etc/kubernetes/admin.conf" | |
用于与集群交互的 kubeconfig 文件。如果参数未指定,将从一系列标准位置检索存在的 kubeconfig 文件。 | |
--kubelet-version string | |
升级后 *期望的* kubelet 配置版本。如未指定,将使用 kubeadm-config ConfigMap 中的 KubernetesVersion | |
--skip-phases stringSlice | |
要跳过的阶段的列表 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
接下来
- 如果你使用 kubeadm v1.7.x 或更低版本初始化集群,则可以参考kubeadm 配置配置集群用于
kubeadm upgrade
。
1.5 - kubeadm config
在 kubeadm init
执行期间,kubeadm 将 ClusterConfiguration
对象上传到你的集群的 kube-system
名字空间下
名为 kubeadm-config
的 ConfigMap 对象中。
然后在 kubeadm join
、kubeadm reset
和 kubeadm upgrade
执行期间读取此配置。
要查看此 ConfigMap,请调用 kubeadm config view
。
你可以使用 kubeadm config print
命令打印默认配置,
并使用 kubeadm config migrate
命令将旧版本的配置转化成新版本。
kubeadm config images list
和 kubeadm config images pull
命令可以用来列出并拉取 kubeadm 所需的镜像。
更多信息请浏览使用带配置文件的 kubeadm init 或使用带配置文件的 kubeadm join.
在 Kubernetes v1.13.0 及更高版本中,要列出/拉取 kube-dns 镜像而不是 CoreDNS 镜像,
必须使用这里所描述的 --config
方法。
kubeadm config upload from-file
kubeadm config view
概要
使用此命令,可以查看 kubeadm 配置的集群中的 ConfigMap。 该配置位于 "kube-system" 命名空间中的名为 "kubeadm-config" 的 ConfigMap 中。
kubeadm config view [flags]
选项
-h, --help | |
view 操作的帮助命令 |
继承于父命令的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
用于和集群通信的 KubeConfig 文件。如果未设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 KubeConfig 文件。 | |
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm config print init-defaults
概要
此命令打印对象,例如用于 'kubeadm init' 的默认 init 配置对象。
请注意,Bootstrap Token 字段之类的敏感值已替换为 {"abcdef.0123456789abcdef" "" "nil" <nil> [] []} 之类的占位符值以通过验证,但不执行创建令牌的实际计算。
kubeadm config print init-defaults [flags]
选项
--component-configs stringSlice | |
组件配置 API 对象的逗号分隔列表,打印其默认值。可用值:[KubeProxyConfiguration KubeletConfiguration]。如果未设置此参数,则不会打印任何组件配置。 | |
-h, --help | |
init-defaults 操作的帮助命令 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm config print join-defaults
概要
此命令打印对象,例如用于 'kubeadm join' 的默认 join 配置对象。
请注意,诸如启动引导令牌字段之类的敏感值已替换为 {"abcdef.0123456789abcdef" "" "nil" <nil> [] []} 之类的占位符值以通过验证,但不执行创建令牌的实际计算。
kubeadm config print join-defaults [flags]
选项
--component-configs stringSlice | |
组件配置 API 对象的逗号分隔列表,打印其默认值。可用值:[KubeProxyConfiguration KubeletConfiguration]。如果未设置此参数,则不会打印任何组件配置。 | |
-h, --help | |
join-defaults 操作的帮助命令 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm config migrate
概要
此命令允许您在 CLI 工具中将本地旧版本的配置对象转换为最新支持的版本,而无需变更集群中的任何内容。在此版本的 kubeadm 中,支持以下 API 版本:
- kubeadm.k8s.io/v1beta2
因此,无论您在此处传递 --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 images list
概要
打印 kubeadm 要使用的镜像列表。配置文件用于自定义任何镜像或镜像存储库。
kubeadm config images 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 其中之一 | |
--config string | |
kubeadm 配置文件的路径。 | |
--feature-gates string | |
一组键值对(key=value),用于描述各种特征。选项是: Auditing=true|false (ALPHA - 默认=false) CoreDNS=true|false (默认=true) DynamicKubeletConfig=true|false (BETA - 默认=false) | |
-h, --help | |
list 操作的帮助命令 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择要从中拉取控制平面镜像的容器仓库 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择一个特定的 Kubernetes 版本 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 | |
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm config images pull
概要
拉取 kubeadm 使用的镜像。
kubeadm config images pull [flags]
选项
--config string | |
kubeadm 配置文件的路径。 | |
--cri-socket string | |
要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值;仅当安装了多个 CRI 或具有非标准 CRI 插槽时,才使用此选项。 | |
--feature-gates string | |
一系列键值对(key=value),用于描述各种特征。可选项是: IPv6DualStack=true|false (ALPHA - 默认值=false) | |
-h, --help | |
pull 操作的帮助命令 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择用于拉取控制平面镜像的容器仓库 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择一个特定的 Kubernetes 版本。 |
从父命令继承的选项
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 | |
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
接下来
- kubeadm upgrade 将 Kubernetes 集群升级到更新版本 [kubeadm upgrade]
1.6 - kubeadm reset
该命令尽力还原由 kubeadm init
或 kubeadm join
所做的更改。
概要
尽最大努力还原通过 'kubeadm init' 或者 'kubeadm join' 操作对主机所做的更改
"reset" 命令执行以下阶段:
preflight Run reset pre-flight checks
update-cluster-status Remove this node from the ClusterStatus object.
remove-etcd-member Remove a local etcd member.
cleanup-node Run cleanup node.
kubeadm reset [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的目录路径。如果已指定,则需要清空此目录。 | |
--cri-socket string | |
要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值;仅当安装了多个CRI 或具有非标准 CRI 插槽时,才使用此选项。 | |
-f, --force | |
在不提示确认的情况下重置节点。 | |
-h, --help | |
reset 操作的帮助命令 | |
--ignore-preflight-errors stringSlice | |
错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该标志,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--skip-phases stringSlice | |
要跳过的阶段列表 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
Reset 工作流程
kubeadm reset
负责从使用 kubeadm init
或 kubeadm join
命令创建的文件中清除节点本地文件系统。对于控制平面节点,reset
还从 etcd 集群中删除该节点的本地 etcd 堆成员,还从 kubeadm ClusterStatus
对象中删除该节点的信息。
ClusterStatus
是一个 kubeadm 管理的 Kubernetes API 对象,该对象包含 kube-apiserver 端点列表。
kubeadm reset phase
可用于执行上述工作流程的各个阶段。
要跳过阶段列表,你可以使用 --skip-phases
参数,该参数的工作方式类似于 kubeadm join
和 kubeadm init
阶段运行器。
外部 etcd 清理
如果使用了外部 etcd,kubeadm reset
将不会删除任何 etcd 中的数据。这意味着,如果再次使用相同的 etcd 端点运行 kubeadm init
,你将看到先前集群的状态。
要清理 etcd 中的数据,建议你使用 etcdctl 这样的客户端,例如:
etcdctl del "" --prefix
更多详情请参考 etcd 文档。
接下来
- 参考 kubeadm init 来初始化 Kubernetes 主节点。
- 参考 kubeadm join 来初始化 Kubernetes 工作节点并加入集群。
1.7 - kubeadm token
如使用引导令牌进行身份验证所描述的,引导令牌用于在即将加入集群的节点和主节点间建立双向认证。
kubeadm init
创建了一个有效期为 24 小时的令牌,下面的命令允许你管理令牌,也可以创建和管理新的令牌。
kubeadm token create
概要
这个命令将为你创建一个引导令牌。 您可以设置此令牌的用途,"有效时间" 和可选的人性化的描述。
这里的 [token] 是指将要生成的实际令牌。 该令牌应该是一个通过安全机制生成的随机令牌,形式为 "[a-z0-9]{6}.[a-z0-9]{16}"。 如果没有给出 [token],kubeadm 将生成一个随机令牌。
kubeadm token create [token]
选项
--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 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 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 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 操作的帮助命令 |
从父命令继承的选项
--dry-run | |
是否启用 `dry-run` 模式 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 | |
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
接下来
- kubeadm join 引导 Kubernetes 工作节点并将其加入集群
1.8 - kubeadm version
此命令用来输出 kubeadm 的版本。
概要
打印 kubeadm 的版本
kubeadm version [flags]
选项
-h, --help | |
version 操作的帮助命令 | |
-o, --output string | |
输出格式;可用的选项有 'yaml', 'json' 和 'short' |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
1.9 - kubeadm alpha
注意:
kubeadm alpha
提供了一组可用于收集社区反馈的预览性质功能。 请试用这些功能并给我们提供反馈!
kubeadm alpha kubeconfig user
使用子命令 user
为其他用户创建 kubeconfig 文件。
概要
kubeconfig 文件应用程序。
Alpha 免责声明:此命令当前为 alpha 功能。
选项
-h, --help | |
kubeconfig 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
为其他用户输出 kubeconfig 文件。
Alpha 免责声明:此命令当前为 Alpha 功能。
kubeadm alpha kubeconfig user [flags]
示例
# 使用名为 bar 的 kubeadm 配置文件为名为 foo 的另一用户输出 kubeconfig 文件
kubeadm alpha kubeconfig user --client-name=foo --config=bar
选项
--client-name string | |
用户名。如果生成客户端证书,则用作其 CN。 | |
--config string | |
指向 kubeadm 配置文件的路径 | |
-h, --help | |
user 操作的帮助命令 | |
--org stringSlice | |
客户端证书的组织。如果创建客户端证书,此值将用作其 O 字段值。 | |
--token string | |
应该用此 kubeconfig 的身份验证机制的令牌,而不是客户端证书 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机的根目录。 |
kubeadm alpha kubelet config
使用以下命令启用 DynamicKubeletConfiguration 功能。
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
选项
-h, --help | |
kubelet 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机的根目录。 |
概要
针对集群中的 kubelet-config-1.X ConfigMap 启用或更新节点的动态 kubelet 配置,其中 X 是所需 kubelet 版本的次要版本。
警告:此功能仍处于试验阶段,默认情况下处于禁用状态。仅当知道自己在做什么时才启用它,因为在此阶段它可能会产生令人惊讶的副作用。
Alpha 免责声明:此命令当前为 Alpha 功能。
kubeadm alpha kubelet config enable-dynamic [flags]
示例
# 为节点启用动态 kubelet 配置。
kubeadm alpha phase kubelet enable-dynamic-config --node-name node-1 --kubelet-version 1.16.0
WARNING: This feature is still experimental, and disabled by default. Enable only if you know what you are doing, as it
may have surprising side-effects at this stage.
选项
-h, --help | |
enable-dynamic 操作的帮助命令 | |
--kubeconfig string 默认值: "/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该标志,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--kubelet-version string | |
kubelet 所需版本 | |
--node-name string | |
应该启用动态 kubelet 配置节点的名称 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机的根目录。 |
kubeadm alpha selfhosting pivot
子命令 pivot
可用于将 Pod 托管的静态控制平面转换为自托管的控制平面。
有关 pivot
更多信息,请参见
文档。
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
选项
-h, --help | |
selfhosting 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机的根目录。 |
概要
将用于控制平面组件的静态 Pod 文件转换为通过 Kubernetes API 配置的自托管 DaemonSet。
有关自托管的限制,请参阅相关文档。
Alpha 免责声明:此命令当前为 alpha 功能。
kubeadm alpha selfhosting pivot [flags]
示例
# 将静态 Pod 托管的控制平面转换为自托管的控制平面。
kubeadm alpha phase self-hosting convert-from-staticpods
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
证书存储的路径 | |
--config string | |
kubeadm 配置文件的路径。 | |
-f, --force | |
在不提示确认的情况下转换集群 | |
-h, --help | |
pivot 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
-s, --store-certs-in-secrets | |
启用 secret 存储证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
接下来
- 用来启动引导 Kubernetes 控制平面节点的 kubeadm init 命令
- 用来将节点连接到集群的 kubeadm join 命令
- 用来还原
kubeadm init
或kubeadm join
操作对主机所做的任何更改的 kubeadm reset 命令
1.10 - kubeadm certs
kubeadm certs
提供管理证书的工具。关于如何使用这些命令的细节,可参见
使用 kubeadm 管理证书。
kubeadm certs
用来操作 Kubernetes 证书的一组命令。
概要
与处理 kubernetes 证书相关的命令
选项
-h, --help | |
certs 命令的帮助 |
继承于父命令的选项
--rootfs string | |
[实验] 到'真实'主机根文件系统的路径。 |
kubeadm certs renew
你可以使用 all
子命令来续订所有 Kubernetes 证书,也可以选择性地续订部分证书。
更多的相关细节,可参见
手动续订证书。
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm certs renew [flags]
选项
-h, --help | |
renew 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
续订运行控制平面所需的所有已知证书。续订是无条件进行的,与到期日期无关。续订也可以单独运行以进行更多控制。
kubeadm certs renew all [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
输出 CSR 和私钥的路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
all 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
续订 kubeconfig 文件中嵌入的证书,供管理员 和 kubeadm 自身使用。
无论证书的到期日期如何,续订都是无条件进行的;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用由 kubeadm 管理的本地 PKI 中的证书机构;作为替代方案, 也可以使用 K8s 证书 API 进行证书续订,或者(作为最后一种选择)生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防证书文件在其他地方使用。
kubeadm certs renew admin.conf [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
CSR 和私钥的输出路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
admin.conf 子操作的帮助命令 | |
--kubeconfig string Default: "/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
续订 apiserver 用于访问 etcd 的证书。
无论证书的到期日期如何,续订都会无条件地进行;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订尝试使用在 kubeadm 所管理的本地 PKI 中的证书颁发机构;作为替代方案, 可以使用 K8s 证书 API 进行证书更新,或者作为最后一个选择来生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew apiserver-etcd-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
输出 CSR 和私钥的路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
apiserver-etcd-client 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
续订 apiserver 用于连接 kubelet 的证书。
无论证书的到期日期如何,续订都会无条件地进行;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订尝试使用位于 kubeadm 所管理的本地 PKI 中的证书颁发机构;作为替代方案, 也可能调用 K8s 证书 API 进行证书更新;亦或者,作为最后一个选择,生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew apiserver-kubelet-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
输出 CSR 和私钥的路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
apiserver-kubelet-client 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
续订用于提供 Kubernetes API 的证书。
无论证书的到期日期如何,续订都会无条件地进行;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订尝试在 kubeadm 管理的本地 PKI 中使用证书颁发机构;作为替代方案, 可以使用 K8s 证书 API 进行证书更新,或者作为最后一个选择来生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew apiserver [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
CSR 和私钥的输出路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
apiserver 子操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
续订 kubeconfig 文件中嵌入的证书,以供控制器管理器(Controller Manager)使用。
续订无条件地进行,与证书的到期日期无关;SAN 等额外属性将基于现有的文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用 kubeadm 管理的本地 PKI 中的证书颁发机构;作为替代方案, 可以使用 K8s 证书 API 进行证书续订;亦或者,作为最后一种选择,生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm alpha renew controller-manager.conf [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
CSR 和私钥的输出路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
controller-manager.conf 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
续订存活态探针的证书,用于对 etcd 执行健康检查。
无论证书的到期日期如何,续订都是无条件进行的;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用由 kubeadm 管理的本地 PKI 中的证书机构;作为替代方案, 也可以使用 K8s certificate API 进行证书续订,或者(作为最后一种选择)生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防证书文件在其他地方使用。
kubeadm certs renew etcd-healthcheck-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
CSR 和私钥的输出路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
etcd-healthcheck-client 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
续订 etcd 节点间用来相互通信的证书。
无论证书的到期日期如何,续订都是无条件进行的;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用由 kubeadm 管理的本地 PKI 中的证书机构; 作为替代方案,也可以使用 K8s certificate API 进行证书续订,或者(作为最后一种选择)生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防证书文件在其他地方使用。
kubeadm certs renew etcd-peer [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
CSR 和私钥的输出路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
etcd-peer 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
续订用于提供 etcd 服务的证书。
续订无条件地进行,与证书的到期日期无关;SAN 等额外属性将基于现有的文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试在 kubeadm 管理的本地 PKI 中使用证书颁发机构;作为替代方案, 可以使用 K8s 证书 API 进行证书续订,或者作为最后一种选择来生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew etcd-server [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
CSR 和私钥的输出路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
etcd-server 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
为前端代理客户端续订证书。
无论证书的到期日期如何,续订都会无条件地进行;SAN 等额外属性将基于现有文件/证书,因此无需重新提供它们。
默认情况下,续订尝试使用位于 kubeadm 所管理的本地 PKI 中的证书颁发机构;作为替代方案, 也可以使用 K8s 证书 API 进行证书续订;亦或者,作为最后一种方案,生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew front-proxy-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
输出 CSR 和私钥的路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
front-proxy-client 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
续订 kubeconfig 文件中嵌入的证书,以供调度管理器使用。
续订无条件地进行,与证书的到期日期无关;SAN 等额外属性将基于现有的文件/证书,因此无需重新提供它们。
默认情况下,续订会尝试使用在 kubeadm 所管理的本地 PKI 中的证书颁发机构;作为替代方案, 也可以使用 K8s 证书 API 进行证书续订;亦或者,作为最后一种选择,生成 CSR 请求。
续订后,为了使更改生效,需要重新启动控制平面组件,并最终重新分发更新的证书,以防文件在其他地方使用。
kubeadm certs renew scheduler.conf [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--csr-dir string | |
CSR 和私钥的输出路径 | |
--csr-only | |
创建 CSR 而不是生成证书 | |
-h, --help | |
scheduler.conf 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。 如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--use-api | |
使用 Kubernetes 证书 API 续订证书 |
从父命令继承的选项
--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 中的证书是否以及何时过期。 更多的相关细节,可参见 检查证书过期。
概要
检查 kubeadm 管理的本地 PKI 中证书的到期时间。
kubeadm certs check-expiration [flags]
选项
--cert-dir string 默认值: "/etc/kubernetes/pki" | |
保存证书的路径 | |
--config string | |
kubeadm 配置文件的路径 | |
-h, --help | |
check-expiration 的帮助命令 |
继承于父命令的选项
--rootfs string | |
[实验] 到'真实'主机根文件系统的路径。 |
kubeadm certs generate-csr
此命令可用来为所有控制面证书和 kubeconfig 文件生成密钥和 CSR(签名请求)。 用户可以根据自身需要选择 CA 为 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 | |
[实验] 到'真实'主机根文件系统的路径。 |
接下来
- 用来启动引导 Kubernetes 控制面节点的 kubeadm init 命令
- 用来将节点连接到集群的 kubeadm join 命令
- 用来回滚
kubeadm init
或kubeadm join
对当前主机所做修改的 kubeadm reset 命令
1.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.yml
选项
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
preflight 操作的帮助命令 | |
--ignore-preflight-errors stringSlice | |
错误将显示为警告的检查列表:例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm init phase kubelet-start
此阶段将检查 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 套接字时,才使用此选项。 | |
-h, --help | |
kubelet-start 操作的帮助命令 | |
--node-name string | |
指定节点名称。 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm init phase certs
该阶段可用于创建 kubeadm 所需的所有证书。
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm init phase certs [flags]
选项
-h, --help | |
certs 操作的帮助命令 |
从父指令中继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
生成所有证书
kubeadm init phase certs all [flags]
选项
--apiserver-advertise-address string | |
API 服务器所公布的其正在监听的 IP 地址。如果未设置,将使用默认网络接口。 | |
--apiserver-cert-extra-sans stringSlice | |
用于 API 服务器服务证书的可选额外替代名称(SAN)。可以同时使用 IP 地址和 DNS 名称。 | |
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
证书的存储路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--control-plane-endpoint string | |
为控制平面指定一个稳定的 IP 地址或 DNS 名称。 | |
-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 组件的身份,并将其保存到 ca.cert 和 ca.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
Alpha 免责声明:此命令当前为 Alpha 功能。
kubeadm init phase certs ca [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
证书的存储路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
ca 操作的帮助命令 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
生成用于服务 Kubernetes API 的证书,并将其保存到 apiserver.cert 和 apiserver.key 文件中。
默认 SAN 是 kubernetes、kubernetes.default、kubernetes.default.svc、kubernetes.default.svc.cluster.local、10.96.0.1、127.0.0.1。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
Alpha 免责声明:此命令当前为 Alpha 功能。
kubeadm init phase certs apiserver [flags]
选项
--apiserver-advertise-address string | |
API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认的网络接口。 | |
--apiserver-cert-extra-sans stringSlice | |
用于 API Server 服务证书的可选附加主体备用名称(SAN)。可以是 IP 地址和 DNS 名称。 | |
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
证书的存储路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--control-plane-endpoint string | |
为控制平面指定一个稳定的 IP 地址或 DNS 名称。 | |
-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 的证书,并将其保存到 apiserver-kubelet-client.cert 和 apiserver-kubelet-client.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
Alpha 免责声明:此命令当前为 Alpha 功能。
kubeadm init phase certs apiserver-kubelet-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的路径。 | |
--config string | |
kubeadm 配置文件路径。 | |
-h, --help | |
apiserver-kubelet-client 操作的帮助命令 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string | |
[实验] 指向宿主机上的 '实际' 根文件系统的路径。 |
概要
生成自签名 CA 来提供前端代理的身份,并将其保存到 front-proxy-ca.cert 和 front-proxy-ca.key 文件中。
如果两个文件都已存在,kubeadm 将跳过生成步骤并将使用现有文件。
Alpha 免责声明:此命令目前是 alpha 阶段。
kubeadm init phase certs front-proxy-ca [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
front-proxy-ca 操作的帮助命令 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本。 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
为前端代理客户端生成证书,并将其保存到 front-proxy-client.cert 和 front-proxy-client.key 文件中。 如果两个文件都已存在,kubeadm 将跳过生成步骤并将使用现有文件。 Alpha 免责声明:此命令目前是 alpha 阶段。
kubeadm init phase certs front-proxy-client [flags]
选项
--cert-dir string 默认:"/etc/kubernetes/pki" | |
存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
front-proxy-client 操作的帮助命令 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本。 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
生成用于为 etcd 设置身份的自签名 CA,并将其保存到 etcd/ca.cert 和 etcd/ca.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
Alpha 免责声明:此命令当前为 Alpha 功能。
kubeadm init phase certs etcd-ca [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
证书的存储路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
etcd-ca 操作的帮助命令 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
生成用于提供 etcd 服务的证书,并将其保存到 etcd/server.cert 和 etcd/server.key 文件中。
默认 SAN 为 localhost、127.0.0.1、127.0.0.1、:: 1
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
Alpha 免责声明:此命令当前为 alpha 功能。
kubeadm init phase certs etcd-server [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存和存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
etcd-server 操作的帮助命令 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
生成 etcd 节点相互通信的证书,并将其保存到 etcd/peer.cert 和 etcd/peer.key 文件中。
默认 SAN 为 localhost、127.0.0.1、127.0.0.1、:: 1
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
Alpha 免责声明:此命令当前为 alpha 功能。
kubeadm init phase certs etcd-peer [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存和存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
etcd-peer 操作的帮助命令 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
生成用于 etcd 健康检查的活跃性探针的证书,并将其保存到 healthcheck-client.cert 和 etcd/healthcheck-client.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
Alpha 免责声明:此命令当前为 alpha 功能。
kubeadm init phase certs etcd-healthcheck-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
证书存储的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
etcd-healthcheck-client 操作的帮助命令 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
生成 apiserver 用于访问 etcd 的证书,并将其保存到 apiserver-etcd-client.cert 和 apiserver-etcd-client.key 文件中。
如果两个文件都已存在,则 kubeadm 将跳过生成步骤,使用现有文件。
Alpha 免责声明:此命令当前为 Alpha 功能。
kubeadm init phase certs apiserver-etcd-client [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
证书的存储路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
apiserver-etcd-client 操作的帮助命令 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
生成用于签名 service account 令牌的私钥及其公钥,并将其保存到 sa.key 和 sa.pub 文件中。如果两个文件都已存在,则 kubeadm 会跳过生成步骤,而将使用现有文件。
Alpha 免责声明:此命令当前为 alpha 阶段。
kubeadm init phase certs sa [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存和存储证书的路径。 | |
-h, --help | |
sa 操作的帮助命令 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm init phase kubeconfig
可以通过调用 all
子命令来创建所有必需的 kubeconfig 文件,或者分别调用它们。
概要
此命令并非设计用来单独运行。请阅读可用子命令列表。
kubeadm init phase kubeconfig [flags]
选项
-h, --help | |
kubeconfig 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
生成所有 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 名称。 | |
-h, --help | |
all 操作的帮助命令 | |
--kubeconfig-dir string 默认值:"/etc/kubernetes" | |
kubeconfig 文件的保存路径。 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面指定特定的 Kubernetes 版本。 | |
--node-name string | |
指定节点名称。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
为管理员和 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 名称。 | |
-h, --help | |
admin 操作的帮助命令 | |
--kubeconfig-dir string 默认值:"/etc/kubernetes" | |
kubeconfig 文件的保存路径。 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
生成 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 名称。 | |
-h, --help | |
kubelet 操作的帮助命令 | |
--kubeconfig-dir string 默认值:"/etc/kubernetes" | |
kubeconfig 文件的保存路径。 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本。 | |
--node-name string | |
指定节点的名称。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
生成控制器管理器要使用的 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 名称。 |
-h, --help | |
controller-manager 操作的帮助命令 | |
--kubeconfig-dir string 默认值:"/etc/kubernetes" | |
kubeconfig 文件的保存路径。 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs 字符串 | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
生成调度器(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 名称。 | |
-h, --help | |
scheduler 操作的帮助命令 | |
--kubeconfig-dir string 默认值:"/etc/kubernetes" | |
kubeconfig 文件的保存路径。 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面指定特定的 Kubernetes 版本。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm init phase control-plane
使用此阶段,可以为控制平面组件创建所有必需的静态 Pod 文件。
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm init phase control-plane [flags]
选项
-h, --help | |
control-plane 操作的帮助命令 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
生成所有的静态 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 mapStringString | |
形式为 <flagname>=<value> 的一组额外参数,用来传递给 API 服务器, 或者覆盖其默认配置值 | |
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--control-plane-endpoint string | |
为控制平面选择一个稳定的 IP 地址或者 DNS 名称。 | |
--controller-manager-extra-args mapStringString | |
一组形式为 <flagname>=<value> 的额外参数,用来传递给控制管理器(Controller Manager) 或覆盖其默认设置值 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录。 例如,"kube-apiserver0+merge.yaml" 或者 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,分别与 kubectl 所支持的 patch 格式相匹配。默认的 "patchtype" 是 "strategic"。 "extension" 必须是 "json" 或 "yaml"。 "suffix" 是一个可选的字符串,用来确定按字母顺序排序时首先应用哪些 patch。 | |
--feature-gates string | |
一组用来描述各种特性门控的键值(key=value)对。选项是: IPv6DualStack=true|false (ALPHA - 默认=false) PublicKeysECDSA=true|false (ALPHA - 默认=false) | |
-h, --help | |
all 操作的帮助命令 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择用于拉取控制平面镜像的容器仓库 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择指定的 Kubernetes 版本。 | |
--pod-network-cidr string | |
指定 Pod 网络的 IP 地址范围。如果设置了此标志,控制平面将自动地为每个节点分配 CIDR。 | |
--scheduler-extra-args mapStringString | |
一组形式为 <flagname>=<value> 的额外参数,用来传递给调度器(Scheduler)
或覆盖其默认设置值 传递给调度器(scheduler)一组额外的参数或者以 <flagname>=<value> 形式覆盖其默认值。 | |
--service-cidr string 默认值:"10.96.0.0/12" | |
为服务 VIP 选择 IP 地址范围。 |
从父指令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机的根文件系统的路径。 |
概要
生成 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 mapStringString | |
一组 <flagname>=<value> 形式的额外参数,用来传递给 API 服务器 或者覆盖其默认参数配置 | |
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
保存和存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--control-plane-endpoint string | |
为控制平面指定一个稳定的 IP 地址或 DNS 名称。 | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录。 例如,"kube-apiserver0+merge.yaml" 或者 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,分别与 kubectl 所支持的 patch 格式相匹配。默认的 "patchtype" 是 "strategic"。 "extension" 必须是 "json" 或 "yaml"。 "suffix" 是一个可选的字符串,用来确定按字母顺序排序时首先应用哪些 patch。 | |
--feature-gates string | |
一组键值对,用于描述各种功能特性的特性门控。选项是: IPv6DualStack=true|false (ALPHA - 默认=false) PublicKeysECDSA=true|false (ALPHA - 默认=false) | |
-h, --help | |
apiserver 操作的帮助命令 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择要从中拉取控制平面镜像的容器仓库 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本 | |
--service-cidr string 默认值:"10.96.0.0/12" | |
指定服务 VIP 使用 IP 地址的其他范围。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统路径。 |
概要
生成 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 mapStringString | |
一组 <flagname>=< 形式的额外参数,传递给控制器管理器(Controller Manager) 或者覆盖其默认配置值 | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录。 例如,"kube-apiserver0+merge.yaml" 或者 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,分别与 kubectl 所支持的 patch 格式相匹配。默认的 "patchtype" 是 "strategic"。 "extension" 必须是 "json" 或 "yaml"。 "suffix" 是一个可选的字符串,用来确定按字母顺序排序时首先应用哪些 patch。 | |
-h, --help | |
controller-manager 操作的帮助命令 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择要从中拉取控制平面镜像的容器仓库 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本。 | |
--pod-network-cidr string | |
指定 Pod 网络的 IP 地址范围。如果设置,控制平面将自动为每个节点分配 CIDR。 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
生成 kube-scheduler 静态 Pod 清单
kubeadm init phase control-plane scheduler [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录。 例如,"kube-apiserver0+merge.yaml" 或者 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,分别与 kubectl 所支持的 patch 格式相匹配。默认的 "patchtype" 是 "strategic"。 "extension" 必须是 "json" 或 "yaml"。 "suffix" 是一个可选的字符串,用来确定按字母顺序排序时首先应用哪些 patch。 | |
-h, --help | |
scheduler 操作的帮助命令 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择要从中拉取控制平面镜像的容器仓库 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本。 | |
--scheduler-extra-args mapStringString | |
一组 <flagname>=<value> 形式的额外参数,用来传递给调度器 或者覆盖其默认参数配置 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm init phase etcd
根据静态 Pod 文件,使用以下阶段创建本地 etcd 实例。
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm init phase etcd [flags]
选项
-h, --help | |
etcd 操作的帮助命令 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
为本地单节点 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 配置文件的路径。 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
-h, --help | |
local 操作的帮助命令 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择要从中拉取控制平面镜像的容器仓库 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm init phase upload-config
可以使用此命令将 kubeadm 配置文件上传到集群。或者使用 kubeadm config。
概要
此命令并非设计用来单独运行。请参阅可用的子命令列表。
kubeadm init phase upload-config [flags]
选项
-h, --help | |
upload-config 操作的帮助命令 |
从父命令中继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
将所有配置上传到 ConfigMap
kubeadm init phase upload-config all [flags]
选项
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
all 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
将 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 配置文件的路径。 | |
-h, --help | |
kubeadm 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
将从 kubeadm InitConfiguration 对象提取的 kubelet 配置上传到集群中 kubelet-config-1.X 形式的 ConfigMap,其中 X 是当前(API 服务器)Kubernetes 版本的次要版本。
kubeadm init phase upload-config kubelet [flags]
示例
# 将 kubelet 配置从 kubeadm 配置文件上传到集群中的 ConfigMap。
kubeadm init phase upload-config kubelet --config kubeadm.yaml
选项
--config string | |
到 kubeadm 配置文件的路径。 | |
-h, --help | |
kubelet 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该标签,则可以通过一组标准路径来寻找已有的 kubeconfig 文件。 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm init phase upload-certs
使用以下阶段将控制平面证书上传到集群。默认情况下,证书和加密密钥会在两个小时后过期。
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm init phase upload-certs [flags]
选项
--certificate-key string | |
用于加密 kubeadm-certs Secret 中的控制平面证书的密钥。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-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
使用以下阶段来给具有 node-role.kubernetes.io/master=""
键值对的节点打标签(label)和记录污点(taint)。
概要
标记 Node 节点为控制平面节点
kubeadm init phase mark-control-plane [flags]
示例
# 将控制平面标签和污点应用于当前节点,其功能等效于 kubeadm init执行的操作。
kubeadm init phase mark-control-plane --config config.yml
# 将控制平面标签和污点应用于特定节点
kubeadm init phase mark-control-plane --node-name myNode
选项
--config string | |
kubeadm 配置文件的路径。 | |
-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 配置文件的路径。 | |
-h, --help | |
bootstrap-token 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
用于和集群通信的 kubeconfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 kubeconfig 文件。 | |
--skip-token-print | |
跳过打印 'kubeadm init' 生成的默认引导令牌。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
kubeadm init phase kubelet-finialize
使用以下阶段在 TLS 引导后更新与 kubelet 相关的设置。
你可以使用 all
子命令来运行所有 kubelet-finalize
阶段。
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 阶段
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 配置文件的路径。 | |
-h, --help | |
all 操作的帮助命令 |
继承于父命令的选项
--rootfs string | |
[实验] 到'真实'主机根文件系统的路径。 |
启用 kubelet 客户端证书轮换
kubeadm init phase kubelet-finalize experimental-cert-rotation [flags]
选项
--cert-dir string Default: "/etc/kubernetes/pki" | |
保存和存储证书的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-h, --help | |
experimental-cert-rotation 操作的帮助命令 |
继承于父命令的选项
--rootfs string | |
[实验] 到'真实'主机根文件系统的路径。 |
kubeadm init phase addon
可以使用 all
子命令安装所有可用的插件,或者有选择性地安装它们。
概要
此命令并非设计用来单独运行。请参阅可用子命令列表。
kubeadm init phase addon [flags]
选项
-h, --help | |
addon 操作的帮助命令 |
继承于父命令的选项
--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 名称。 | |
--feature-gates string | |
一组键值对(key=value),描述了各种特征。选项包括: IPv6DualStack=true|false (ALPHA - 默认值=false) | |
-h, --help | |
--image-repository string 默认值:"k8s.gcr.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 | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
通过 API 服务器安装 CoreDNS 附加组件。请注意,即使 DNS 服务器已部署,在安装 CNI 之前 DNS 服务器不会被调度执行。
kubeadm init phase addon coredns [flags]
选项
--config string | |
kubeadm 配置文件的路径。 | |
--feature-gates string | |
一组用来描述各种功能特性的键值(key=value)对。选项是: IPv6DualStack=true|false (ALPHA - 默认值=false) | |
-h, --help | |
coredns 操作的帮助命令 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择用于拉取控制平面镜像的容器仓库 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--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 服务器安装 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 名称。 | |
-h, --help | |
kube-proxy 操作的帮助命令 | |
--image-repository string 默认值:"k8s.gcr.io" | |
选择用于拉取控制平面镜像的容器仓库 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置该参数,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--kubernetes-version string 默认值:"stable-1" | |
为控制平面选择特定的 Kubernetes 版本。 | |
--pod-network-cidr string | |
指定 Pod 网络的 IP 地址范围。如果已设置,控制平面将自动为每个节点分配 CIDR。 |
继承于父命令的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
要使用 kube-dns 代替 CoreDNS,必须传递一个配置文件:
# 仅用于安装 DNS 插件
kubeadm init phase addon coredns --config=someconfig.yaml
# 用于创建完整的控制平面节点
kubeadm init --config=someconfig.yaml
# 用于列出或者拉取镜像
kubeadm config images list/pull --config=someconfig.yaml
# 升级
kubeadm upgrade apply --config=someconfig.yaml
该文件必须在 ClusterConfiguration
中包含一个 DNS
字段,以及包含一个插件的类型 - kube-dns
(默认值为 CoreDNS
)。
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
dns:
type: "kube-dns"
有关 v1beta2
配置中每个字段的更多详细信息,可以访问 API。
接下来
- kubeadm init 引导 Kubernetes 控制平面节点
- kubeadm join 将节点连接到集群
- kubeadm reset 恢复通过
kubeadm init
或kubeadm join
操作对主机所做的任何更改 - kubeadm alpha 尝试实验性功能
1.12 - kubeadm join phase
kubeadm join phase
使你能够调用 join
过程的基本原子步骤。
因此,如果希望执行自定义操作,可以让 kubeadm 做一些工作,然后由用户来补足剩余操作。
kubeadm join phase
与
kubeadm join 工作流程
一致,后台都使用相同的代码。
kubeadm join phase
概要
使用此命令来调用 join
工作流程的某个阶段
选项
-h, --help | |
phase 操作的帮助命令 |
从父命令中继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
kubeadm join phase preflight
使用此命令可以在即将加入集群的节点上执行启动前检查。
概要
运行 kubeadm join 命令添加节点前检查。
kubeadm join phase preflight [api-server-endpoint] [flags]
示例
# 使用配置文件运行 kubeadm join 命令添加节点前检查。
kubeadm join phase preflight --config kubeadm-config.yml
选项
--apiserver-advertise-address string | |
对于将要托管新的控制平面实例的节点,指定 API 服务器将公布的其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 | |
--apiserver-bind-port int32 默认值:6443 | |
针对将要托管新的控制平面实例的节点,设置 API 服务器要绑定的端口。 | |
--certificate-key string | |
使用此密钥可以解密由 `init` 操作上传的证书 secret。 | |
--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 参数的情况下添加节点。 | |
-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 上传的证书 secrets。 | |
--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 参数的情况下添加节点。 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
-h, --help | |
all 操作的帮助命令 | |
--node-name string | |
指定节点名称。 | |
--tls-bootstrap-token string | |
指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 | |
--token string | |
如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
概要
[实验]从 kubeadm-certs Secret 下载控制平面节点之间共享的证书
kubeadm join phase control-plane-prepare download-certs [api-server-endpoint] [flags]
选项
--certificate-key string | |
使用此密钥可以解密由 init 上传的证书 secret。 | |
--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 参数的情况下添加节点。 | |
-h, --help | |
kubeconfig 操作的帮助命令 | |
--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 stringSlice | |
对于基于令牌的发现,请验证根 CA 公钥是否匹配此哈希值(格式:"<type>:<value>")。 | |
--discovery-token-unsafe-skip-ca-verification | |
对于基于令牌的发现,允许在未关联 --discovery-token-ca-cert-hash 参数的情况下添加节点。 | |
-h, --help | |
certs 操作的帮助命令 | |
--node-name string | |
指定节点名称。 | |
--tls-bootstrap-token string | |
指定在加入节点时用于临时通过 Kubernetes 控制平面进行身份验证的令牌。 | |
--token string | |
如果未提供这些值,则将它们用于 discovery-token 令牌和 tls-bootstrap 令牌。 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
概要
为新的控制平面组件生成 kubeconfig
kubeadm join phase control-plane-prepare kubeconfig [api-server-endpoint] [flags]
选项
--certificate-key string | |
使用此密钥可以解密由 init 上传的证书 secret。 | |
--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 参数的情况下添加节点。 | |
-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 | |
在此节点上创建一个新的控制平面实例 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
-h, --help | |
control-plane 操作的帮助命令 |
从父命令中继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
kubeadm join phase kubelet-start
使用此阶段,你可以配置 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 | |
For file-based discovery, a file or URL from which to load cluster information. 对于基于文件的发现,给出用于加载集群信息的文件或者 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 参数的情况下添加节点。 | |
-h, --help | |
kubelet-start 操作的帮助命令 | |
--node-name string | |
指定节点名称。 | |
--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 配置文件的路径。 | |
--experimental-control-plane | |
在此节点上创建一个新的控制平面实例 | |
-h, --help | |
all 操作的帮助命令 | |
--node-name string | |
指定节点名称。 |
从父命令继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
添加新的本地 etcd 成员
kubeadm join phase control-plane-join etcd [flags]
选项
--apiserver-advertise-address string | |
如果该节点托管一个新的控制平面实例,则 API 服务器将公布其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--control-plane | |
在此节点上创建一个新的控制平面实例 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 "patchtype" 可以是"strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
-h, --help | |
etcd 操作的帮助命令 | |
--node-name string | |
指定节点的名称 |
从父命令中继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
将新的控制平面节点注册到 kubeadm-config ConfigMap 维护的 ClusterStatus 中
kubeadm join phase control-plane-join update-status [flags]
选项
--apiserver-advertise-address string | |
如果该节点托管一个新的控制平面实例,则 API 服务器将公布其正在侦听的 IP 地址。如果未设置,则使用默认网络接口。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--control-plane | |
在此节点上创建一个新的控制平面实例 | |
-h, --help | |
update-status 操作的帮助命令 | |
--node-name string | |
指定节点名称。 |
从父命令中继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
概要
将 Node 节点标记为控制平面节点
kubeadm join phase control-plane-join mark-control-plane [flags]
选项
--config string | |
kubeadm 配置文件的路径。 | |
--control-plane | |
在此节点上创建一个新的控制平面实例 | |
-h, --help | |
mark-control-plane 操作的帮助命令 | |
--node-name string | |
指定节点的名称 |
从父命令中继承的选项
--rootfs string | |
[实验] 到 '真实' 主机根文件系统的路径。 |
接下来
- kubeadm init 引导 Kubernetes 控制平面节点
- kubeadm join 将节点添加到集群
- kubeadm reset
恢复通过
kubeadm init
或kubeadm join
操作对主机所做的任何更改 - kubeadm alpha 尝试实验性功能
1.13 - kubeadm reset phase
kubeadm reset phase
使你能够调用 reset
过程的基本原子步骤。
因此,如果希望执行自定义操作,可以让 kubeadm 做一些工作,然后由用户来补足剩余操作。
kubeadm reset phase
与
kubeadm reset 工作流程
一致,后台都使用相同的代码。
kubeadm reset phase
概要
使用此命令来调用 reset
工作流程的某个阶段
选项
-h, --help | |
phase 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
kubeadm reset phase preflight
使用此阶段,你可以在要重置的节点上执行启动前检查阶段。
概要
kubeadm reset(重置)前运行启动前检查。
kubeadm reset phase preflight [flags]
选项
-f, --force | |
在不提示确认的情况下重置节点。 | |
-h, --help | |
preflight 操作的帮助命令 | |
--ignore-preflight-errors stringSlice | |
错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
kubeadm reset phase update-cluster-status
使用此阶段,你可以从 ClusterStatus 对象中删除此控制平面节点。
概要
如果该节点是控制平面节点,从 ClusterStatus 对象中删除该节点。
kubeadm reset phase update-cluster-status [flags]
选项
-h, --help | |
update-cluster-status 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
kubeadm reset phase remove-etcd-member
使用此阶段,你可以从 etcd 集群中删除此控制平面节点的 etcd 成员。
概要
上传关于当前状态的配置,以便 'kubeadm upgrade' 以后可以知道如何配置升级后的集群。
kubeadm config upload [flags]
选项
-h, --help | |
upload 操作的帮助信息 |
从父命令继承的选项
--kubeconfig string 默认值: "/etc/kubernetes/admin.conf" | |
用于和集群通信的 KubeConfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 KubeConfig 文件。 | |
--rootfs string | |
[实验] 到'真实'主机根文件系统的路径。 |
kubeadm reset phase cleanup-node
使用此阶段,你可以在此节点上执行清理工作。
概要
执行 cleanup node(清理节点)操作。
kubeadm reset phase cleanup-node [flags]
选项
--cert-dir string 默认值:"/etc/kubernetes/pki" | |
存储证书的目录路径。如果已指定,则需要清空此目录。 | |
--cri-socket string | |
要连接的 CRI 套接字的路径。如果为空,则 kubeadm 将尝试自动检测此值;仅当安装了多个CRI 或具有非标准 CRI 插槽时,才使用此选项。 | |
-h, --help | |
cleanup-node 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
接下来
- kubeadm init 引导 Kubernetes 控制平面节点
- kubeadm join 将节点添加到集群
- kubeadm reset
恢复通过
kubeadm init
或kubeadm join
操作对主机所做的任何更改 - kubeadm alpha 尝试实验性功能
1.14 - kubeadm upgrade phase
在 Kubernetes v1.15.0 版本中,kubeadm 引入了对 kubeadm upgrade node
阶段的初步支持。其他 kubeadm upgrade
子命令如 apply
等阶段将在未来发行版中添加。
kubeadm upgrade node phase
使用此阶段,可以选择执行辅助控制平面或工作节点升级的单独步骤。请注意,kubeadm upgrade apply
命令仍然必须在主控制平面节点上调用。
概要
使用此命令调用 node 工作流的某个阶段
选项
-h, --help | |
phase 操作的帮助命令 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
执行 kubeadm 升级节点的预检。
kubeadm upgrade node phase preflight [flags]
选项
-h, --help | |
preflight 操作的帮助命令 | |
--ignore-preflight-errors stringSlice | |
错误将显示为警告的检查清单。示例:'IsPrivilegedUser,Swap'。值为'all'表示忽略所有检查的错误。 |
继承于父命令的选项
--rootfs string | |
[实验] 到'真实'主机根文件系统的路径。 |
概要
升级部署在此节点上的控制平面实例,如果有的话
kubeadm upgrade node phase control-plane [flags]
选项
--certificate-renewal | |
更新在升级期间变更的组件使用的证书。 | |
--dry-run | |
不改变任何状态,只输出将要执行的动作。 | |
--etcd-upgrade 默认值: true | |
执行 etcd 的升级。 | |
--experimental-patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 例如,"kube-apiserver0+merge.yaml" 或仅仅是 "etcd.json"。 "patchtype" 可以是 "strategic"、"merge" 或 "json" 之一,并且它们与 kubectl 支持的补丁格式匹配。 默认的 "patchtype" 为 "strategic"。 "extension" 必须为 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
-h, --help | |
control-plane 的帮助信息 | |
--kubeconfig string 默认值: "/etc/kubernetes/admin.conf" | |
用于和集群通信的 KubeConfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 KubeConfig 文件。 |
从父命令继承的选项
--rootfs string | |
[实验] 到'真实'主机根文件系统的路径。 |
从群集中 "kubelet-config-1.X" 的 ConfigMap 下载 kubelet 配置,其中 X 是kubelet 的次要版本。 kubeadm 使用 --kubelet-version 参数来确定所需的 kubelet 版本。
kubeadm upgrade node phase kubelet-config [flags]
选项
--dry-run | |
不改变任何状态,只输出将要执行的操作 | |
-h, --help | |
配置操作的帮助信息 | |
--kubeconfig string 默认值: "/etc/kubernetes/kubelet.conf" | |
用于和集群通信的 KubeConfig 文件。如果它没有被设置,那么 kubeadm 将会搜索一个已经存在于标准路径的 KubeConfig 文件。 | |
--kubelet-version string | |
升级后的 kubelet 的*期望*版本。 |
从父命令继承的选项
--rootfs string | |
[实验] 到'真实'主机根文件系统的路径。 |
接下来
- kubeadm init 引导一个 Kubernetes 控制平面节点
- kubeadm join 将节点加入到集群
- kubeadm reset 还原
kubeadm init
或kubeadm join
命令对主机所做的任何更改 - kubeadm upgrade 升级 kubeadm 节点
- kubeadm alpha 尝试实验性功能
1.15 - 实现细节
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/manifests
作为 kubelet 查找静态 Pod 清单的路径。静态 Pod 清单的名称为:etcd.yaml
kube-apiserver.yaml
kube-controller-manager.yaml
kube-scheduler.yaml
/etc/kubernetes/
作为带有控制平面组件身份标识的 kubeconfig 文件的路径。kubeconfig 文件的名称为:kubelet.conf
(在 TLS 引导时名称为bootstrap-kubelet.conf
)controller-manager.conf
scheduler.conf
admin.conf
用于集群管理员和 kubeadm 本身
- 证书和密钥文件的名称:
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 子系统
- 如果使用 docker:
- [警告/错误] 如果 Docker 服务不存在、被禁用或未激活。
- [错误] 如果 Docker 端点不存在或不起作用
- [警告] 如果 docker 版本不在经过验证的 docker 版本列表中
- 如果使用其他 cri 引擎:
- [错误] 如果 crictl 套接字未应答
- 如果在 linux上运行:
- [错误] 如果用户不是 root 用户
- [错误] 如果机器主机名不是有效的 DNS 子域
- [警告] 如果通过网络查找无法访问主机名
- [错误] 如果 kubelet 版本低于 kubeadm 支持的最低 kubelet 版本(当前小版本 -1)
- [错误] 如果 kubelet 版本比所需的控制平面板版本至少高一个小(不支持的版本偏斜)
- [警告] 如果 kubelet 服务不存在或已被禁用
- [警告] 如果 firewalld 处于活动状态
- [错误] 如果 API 服务器绑定的端口或 10250/10251/10252 端口已被占用
- [错误] 如果
/etc/kubernetes/manifest
文件夹已经存在并且不为空 - [错误] 如果
/proc/sys/net/bridge/bridge-nf-call-iptables
文件不存在或不包含 1 - [错误] 如果建议地址是 ipv6,并且
/proc/sys/net/bridge/bridge-nf-call-ip6tables
不存在或不包含 1 - [错误] 如果启用了交换分区
- [错误] 如果命令路径中没有
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 init phase preflight
命令单独触发预检。
生成必要的证书
Kubeadm 生成用于不同目的的证书和私钥对:
Kubernetes 集群的自签名证书颁发机构会保存到
ca.crt
文件和ca.key
私钥文件中用于 API 服务器的服务证书,使用
ca.crt
作为 CA 生成,并将证书保存到apiserver.crt
文件中,私钥保存到apiserver.key
文件中 该证书应包含以下备用名称:- Kubernetes 服务的内部 clusterIP(服务 CIDR 的第一个地址。
例如:如果服务的子网是
10.96.0.0/12
,则为10.96.0.1
) - Kubernetes DNS 名称,例如:如果
--service-dns-domain
标志值是cluster.local
, 则为kubernetes.default.svc.cluster.local
; 加上默认的 DNS 名称kubernetes.default.svc
、kubernetes.default
和kubernetes
, - 节点名称
--apiserver-advertise-address
- 用户指定的其他备用名称
- Kubernetes 服务的内部 clusterIP(服务 CIDR 的第一个地址。
例如:如果服务的子网是
用于 API 服务器安全连接到 kubelet 的客户端证书,使用
ca.crt
作为 CA 生成, 并保存到apiserver-kubelet-client.crt
,私钥保存到apiserver-kubelet-client.key
文件中。该证书应该在system:masters
组织中。用于签名 ServiceAccount 令牌的私钥保存到
sa.key
文件中,公钥保存到sa.pub
文件中用于前端代理的证书颁发机构保存到
front-proxy-ca.crt
文件中,私钥保存到front-proxy-ca.key
文件中前端代理客户端的客户端证书,使用
front-proxy-ca.crt
作为 CA 生成,并保存到front-proxy-client.crt
文件中,私钥保存到front-proxy-client.key
文件中
证书默认情况下存储在 /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 文件:
供 kubelet 在 TLS 引导期间使用的 kubeconfig 文件 ——
/etc/kubernetes/bootstrap-kubelet.conf
。 在此文件中,有一个引导令牌或内嵌的客户端证书,向集群表明此节点身份。 此客户端证书应:- 根据节点鉴权模块的要求,属于
system:nodes
组织 - 具有通用名称(CN):
system:node:<小写主机名>
- 根据节点鉴权模块的要求,属于
控制器管理器的 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 本身和 admin 的 kubeconfig 文件也被生成并保存到
/etc/kubernetes/admin.conf
文件中。
此处的 admin 定义为正在管理集群并希望完全控制集群(root)的实际人员。
内嵌的 admin 客户端证书应是 system:masters
组织的成员,
这一组织名由默认的 RBAC 面向用户的角色绑定
定义。它还应包括一个 CN。kubeadm 使用 kubernetes-admin
CN。
请注意:
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:ontrol-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 都会获得用户指定的额外卷(主机路径)
请注意:
- 所有镜像默认从 k8s.gcr.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
--enable-admission-plugins
设为:NamespaceLifecycle
例如,避免删除系统保留的名字空间LimitRanger
和ResourceQuota
对名字空间实施限制ServiceAccount
实施服务账户自动化PersistentVolumeLabel
将区域(Region)或区(Zone)标签附加到由云提供商定义的 PersistentVolumes (此准入控制器已被弃用并将在以后的版本中删除)。 如果未明确选择使用gce
或aws
作为云提供商,则默认情况下,v1.9 以后的版本 kubeadm 都不会部署。DefaultStorageClass
在PersistentVolumeClaim
对象上强制使用默认存储类型DefaultTolerationSeconds
NodeRestriction
限制 kubelet 可以修改的内容(例如,仅此节点上的 pod)
--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
其他用于保护前端代理( API 聚合层) 通信的标志:
--requestheader-username-headers=X-Remote-User
--requestheader-group-headers=X-Remote-Group
--requestheader-extra-headers-prefix=X-Remote-Extra-
--requestheader-allowed-names=front-proxy-client
控制器管理器
控制器管理器的静态 Pod 清单受用户提供的以下参数的影响:
- 如果调用 kubeadm 时指定了
--pod-network-cidr
参数,则可以通过以下方式启用 某些 CNI 网络插件所需的子网管理器功能:- 设置
--allocate-node-cidrs=true
- 根据给定 CIDR 设置
--cluster-cidr
和--node-cidr-mask-size
标志
- 设置
- 如果指定了云提供商,则指定相应的
--cloud-provider
,如果存在这样的配置文件, 则指定--cloud-config
路径(此为试验性功能,是 Alpha 版本,将在以后的版本中删除)。
其他无条件设置的标志包括:
--controllers
为 TLS 引导程序启用所有默认控制器以及BootstrapSigner
和TokenCleaner
控制器。详细信息请参阅 TLS 引导--use-service-account-credentials
设为true
使用先前步骤中生成的证书的标志:
-
--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
- 如果禁用了 External CA 模式,则
调度器
调度器的静态 Pod 清单不受用户提供的参数的影响。
为本地 etcd 生成静态 Pod 清单
如果用户指定了外部 etcd,则将跳过此步骤,否则 kubeadm 会生成静态 Pod 清单文件, 以创建在 Pod 中运行的具有以下属性的本地 etcd 实例:
- 在
localhost:2379
上监听并使用HostNetwork=true
- 将
hostPath
从dataDir
挂载到主机的文件系统 - 用户指定的任何其他标志
请注意:
- etcd 镜像默认从
k8s.gcr.io
拉取。有关自定义镜像仓库,请参阅 使用自定义镜像。 - 如果 kubeadm 以
--dry-run
模式执行,etcd 静态 Pod 清单将写入一个临时文件夹。 - 可以使用 'kubeadm init phase etcd local' 命令单独为本地 etcd 生成静态 Pod 清单
可选的动态 Kubelet 配置
要使用这个功能,请执行 kubeadm alpha kubelet config enable-dynamic
。
它将 kubelet 的初始化配置写入 /var/lib/kubelet/config/init/kubelet
文件。
初始化配置用于在这个特定节点上启动 kubelet,从而为 kubelet 插件文件提供了 一种替代方法。如以下步骤中所述,这种配置将由 kubelet 基本配置所替代。 请参阅通过配置文件设置 Kubelet 参数 了解更多信息。
请注意:
- 要使动态 kubelet 配置生效,应在
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
中指定--dynamic-config-dir=/var/lib/kubelet/config/dynamic
标志。 - 通过使用配置文件
--config some-file.yaml
将KubeletConfiguration
对象传递给kubeadm init
或kubeadm join
来更改 kubelet 配置。 可以使用---
分隔符将KubeletConfiguration
对象与其他对象(例如InitConfiguration
) 分开。更多的详细信息,请查看kubeadm config print-default
命令。
等待控制平面启动
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 将完成以下段落中描述的任务。
(可选)编写基本 kubelet 配置
Kubernetes v1.9 [alpha]
如果带 --feature-gates=DynamicKubeletConfig
参数调用 kubeadm,则 kubeadm:
- 将 kubelet 基本配置写入
kube-system
名字空间的kubelet-base-config-v1.9
ConfigMap 中。 - 创建 RBAC 规则,以授予对所有引导令牌和所有 kubelet 实例对该 ConfigMap 的读取访问权限
(即
system:bootstrappers:kubeadm:default-node-token
组和system:nodes
组) - 通过将
Node.spec.configSource
指向新创建的 ConfigMap,为初始控制平面节点启用动态 kubelet 配置功能。
将 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/master=""
标签,标记其为控制平面 - 给节点打上
node-role.kubernetes.io/master:NoSchedule
污点
请注意:
- 可以使用
kubeadm init phase mark-control-plane
命令单独触发控制平面标记
为即将加入的节点加入 TLS 启动引导
Kubeadm 使用引导令牌认证 将新节点连接到现有集群; 更多的详细信息,请参见 设计提案。
kubeadm init
确保为该过程正确配置了所有内容,这包括以下步骤以及设置 API 服务器
和控制器标志,如前几段所述。
请注意:
- 可以使用
kubeadm init phase bootstrap-token
命令配置节点的 TLS 引导,执行以下段落中描述的所有配置步骤; 或者每个步骤都单独触发。
创建引导令牌
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 插件。
请注意:
- 此步骤可以调用 'kubeadm init phase addon all' 命令单独执行。
代理
在 kube-system
名字空间中创建一个用于 kube-proxy
的 ServiceAccount;
然后以 DaemonSet 的方式部署 kube-proxy:
- 主控节点凭据(
ca.crt
和token
)来自 ServiceAccount - API 服务器节点的位置(URL)来自 ConfigMap
kube-proxy
的 ServiceAccount 绑定了system:node-proxier
ClusterRole 中的特权
DNS
- 在 Kubernetes 1.18 版本中,通过 kubeadm 部署 kube-dns 这一操作已经弃用, 将在未来的版本中删除。
- CoreDNS 服务的名称为
kube-dns
。这样做是为了防止当用户将集群 DNS 从 kube-dns 切换到 CoreDNS 或者反过来时,出现服务中断。--config
方法在 这里 有描述。 - 在
kube-system
名字空间中创建 CoreDNS/kube-dns 的 ServiceAccount kube-dns
的 ServiceAccount 绑定了system:kube-dns
ClusterRole 中的特权
kubeadm join 步骤内部设计
与 kubeadm init
类似,kubeadm join
内部工作流由一系列待执行的原子工作任务组成。
这分为发现(让该节点信任 Kubernetes 的主控节点)和 TLS 引导 (让 Kubernetes 的主控节点信任该节点)。
请参阅使用引导令牌进行身份验证 或相应的设计提案。
预检
kubeadm
在开始执行之前执行一组预检,目的是验证先决条件,避免常见的集群启动问题。
请注意:
kubeadm join
预检基本上是kubeadm init
预检的一个子集- 从 1.9 开始,kubeadm 为 CRI 通用的功能提供了更好的支持;在这种情况下, Docker 特定的控制参数将跳过或替换为 crictl 中与之相似的控制参数。
- 从 1.9 开始,kubeadm 支持加入在 Windows 上运行的节点;在这种情况下, 将跳过 Linux 特定的控制参数。
- 在任何情况下,用户都可以通过
--ignore-preflight-errors
选项跳过 特定的预检(或者进而跳过所有预检)。
发现 cluster-info
主要有两种发现方案。第一种是使用一个共享令牌以及 API 服务器的 IP 地址。 第二种是提供一个文件(它是标准 kubeconfig 文件的子集)。
共享令牌发现
如果带 --discovery-token
参数调用 kubeadm join
,则使用了令牌发现功能;
在这种情况下,节点基本上从 kube-public
名字空间中的 cluster-info
ConfigMap
中检索集群 CA 证书。
为了防止“中间人”攻击,采取了以下步骤:
- 首先,通过不安全连接检索 CA 证书(这是可能的,因为
kubeadm init
授予system:unauthenticated
的用户对cluster-info
访问权限) - 然后 CA 证书通过以下验证步骤:
- 基本验证:使用令牌 ID 而不是 JWT 签名
- 公钥验证:使用提供的
--discovery-token-ca-cert-hash
。这个值来自kubeadm init
的输出, 或者可以使用标准工具计算(哈希值是按 RFC7469 中主体公钥信息(SPKI)对象的字节计算的)--discovery-token-ca-cert-hash
标志可以重复多次,以允许多个公钥。 - 作为附加验证,通过安全连接检索 CA 证书,然后与初始检索的 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 引导
知道集群信息后,将写入文件 bootstrap-kubelet.conf
,从而允许 kubelet 执行
TLS 引导(相反,在 v1.7 之前 TLS 引导都是由 kubeadm 管理)。
TLS 引导机制使用共享令牌对 Kubernetes 主控节点进行临时身份验证,以便 为本地创建的密钥对提交证书签名请求(CSR)。
该请求会被自动批准,并且该操作保存 ca.crt
文件和 kubelet.conf
文件,用于
kubelet 加入集群,同时删除 bootstrap-kubelet.conf
。
请注意:
- 临时身份验证根据
kubeadm init
过程中保存的令牌进行验证(或者使用kubeadm token
创建的其他令牌) - 临时身份验证解析到
system:bootstrappers:kubeadm:default-node-token
组的一个用户成员, 该成员在kubeadm init
过程中被授予对 CSR API 的访问权 - 根据
kubeadm init
过程的配置,自动 CSR 审批由 csrapprover 控制器管理
(可选)编写 init kubelet 配置
Kubernetes v1.9 [alpha]
如果带 --feature-gates=DynamicKubeletConfig
参数调用 kubeadm,则 kubeadm:
- 使用引导令牌凭证从
kube-system
名字空间中 ConfigMapkubelet-base-config-v1.9
中读取 kubelet 基本配置, 并将其作为 kubelet init 配置文件/var/lib/kubelet/config/init/kubelet
写入磁盘。 - 一旦 kubelet 开始使用节点自己的凭据(
/etc/kubernetes/kubelet.conf
), 就更新当前节点配置,指定该节点或 kubelet 配置来自上述 ConfigMap。
请注意:
- 要使动态 kubelet 配置生效,应在
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
中指定--dynamic-config-dir=/var/lib/kubelet/config/dynamic
标志。