kubeadm upgrade
kubeadm upgrade
是一个对用户友好的命令,它将复杂的升级逻辑包装在一条命令后面,支持升级的规划和实际执行。
kubeadm upgrade 指南
本文档概述使用 kubeadm 执行升级的步骤。与 kubeadm 旧版本相关的文档,请参阅 Kubernetes 网站的旧版文档。
你可以使用 kubeadm upgrade diff
来查看将应用于静态 Pod 清单的更改。
在 Kubernetes v1.15.0 和更高版本中,kubeadm upgrade apply
和 kubeadm upgrade node
也将自动续订节点上的 kubeadm 托管证书,包括存储在 kubeconfig 文件中的证书。
如果不想续订,可以传递参数 --certificate-renewal=false
。
有关证书续订的更多详细信息请参见证书管理文档。
说明:
kubeadm upgrade apply
和 kubeadm upgrade plan
命令都具有遗留的 --config
标志,
可以在执行特定控制平面节点的规划或升级时重新配置集群。
请注意,升级工作流不是为这种情况而设计的,并且有意外结果的报告。
kubeadm upgrade plan
检查可升级到哪些版本,并验证你当前的集群是否可升级。
概述
检查可升级到哪些版本,并验证你当前的集群是否可升级。
该命令只能在存在 kubeconfig 文件 admin.conf
的控制平面节点上运行。
要跳过互联网检查,请传入可选参数 [version]。
kubeadm upgrade plan [version] [flags]
选项
--allow-experimental-upgrades | |
显示不稳定版本的 Kubernetes 作为升级替代方案,并允许升级到 Kubernetes 的 Alpha、Beta 或 RC 版本。 | |
--allow-missing-template-keys Default: true | |
如果为 true,则当模板中缺少字段或映射键时,忽略模板中的错误。仅适用于 golang 和 jsonpath 输出格式。 | |
--allow-release-candidate-upgrades | |
显示 Kubernetes 的发行候选版本作为升级选择,并允许升级到 Kubernetes 的 RC 版本。 | |
--config string | |
配置文件的路径。 | |
-o, --experimental-output string Default: "text" | |
输出格式为 text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file 其中一种。 | |
--feature-gates string | |
一组描述各种特征特性门控的键值对。选项有: | |
-h, --help | |
plan 操作的帮助命令。 | |
--ignore-preflight-errors strings | |
其错误将显示为警告的检查列表。例如:'IsPrivilegedUser,Swap'。值 'all' 忽略所有检查错误。 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果标志为未设置,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
-o, --output string 默认值:"text" | |
--print-config | |
指定是否打印将在升级中使用的配置文件。 | |
--show-managed-fields | |
如果开启,以 JSON 或 YAML 格式打印对象时会保留 managedField。 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 “真实” 宿主机根文件系统的路径。 |
kubeadm upgrade apply
将 Kubernetes 集群升级到指定版本。
概要
将 Kubernetes 集群升级到指定版本。
kubeadm upgrade apply [version]
apply [version]
命令执行以下阶段:
preflight 在升级前运行预检
control-plane 升级控制平面
upload-config 将 kubeadm 和 kubelet 配置上传到 ConfigMap
/kubeadm 将 kubeadm ClusterConfiguration 上传到 ConfigMap
/kubelet 将 kubelet 配置上传到 ConfigMap
kubelet-config 升级此节点的 kubelet 配置
bootstrap-token 配置启动引导令牌和 cluster-info RBAC 规则
addon 升级默认的 kubeadm 插件
/coredns 升级 CoreDNS 插件
/kube-proxy 升级 kube-proxy 插件
post-upgrade 运行升级后的任务
选项
--allow-experimental-upgrades | |
显示 Kubernetes 的不稳定版本作为升级替代方案,并允许升级到 Kubernetes 的 Alpha、Beta 或 RC 版本。 | |
--allow-release-candidate-upgrades | |
显示 Kubernetes 的候选版本作为升级替代方案,并允许升级到 Kubernetes 的 RC 版本。 | |
--certificate-renewal Default: true | |
执行升级期间更改的组件所使用的证书的更新。 | |
--config string | |
kubeadm 配置文件的路径。 | |
--dry-run | |
不要更改任何状态,只输出要执行的操作。 | |
--etcd-upgrade 默认值: true | |
执行 etcd 的升级。 | |
--feature-gates string | |
一组键值对,用于描述各种功能。选项包括: | |
-f, --force | |
强制升级,但可能无法满足某些要求。这也意味着非交互模式。 | |
-h, --help | |
apply 操作的帮助命令。 | |
-ignore-preflight-errors strings | |
错误将显示为警告的检查列表;例如:'IsPrivilegedUser,Swap'。取值为 'all' 时将忽略检查中的所有错误。 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件。如果未设置标志,则在相关目录下搜索以查找现有 kubeconfig 文件。 | |
--patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 例如,"kube-apiserver0+merge.yaml"或是简单的 "etcd.json"。 "target" 可以是 "kube-apiserver"、"kube-controller-manager"、"kube-scheduler"、"etcd"、"kubeletconfiguration" 之一。 "patchtype" 可以是 "strategic"、"merge" 或者 "json" 之一, 并且它们与 kubectl 支持的补丁格式相同。 默认的 "patchtype" 是 "strategic"。 "extension" 必须是 "json" 或 "yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
--print-config | |
指定是否应打印将在升级中使用的配置文件。 | |
-y, --yes | |
执行升级,不提示确认(非交互模式)。 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
kubeadm upgrade diff
显示哪些差异将被应用于现有的静态 Pod 资源清单。参考:kubeadm upgrade apply --dry-run
概要
显示哪些差异将被应用于现有的静态 Pod 资源清单。另请参考:kubeadm upgrade apply --dry-run
kubeadm upgrade diff [version] [flags]
选项
--api-server-manifest string 默认值:"/etc/kubernetes/manifests/kube-apiserver.yaml" | |
API 服务器清单的路径。 | |
--config string | |
kubeadm 配置文件的路径。 | |
-c, --context-lines int 默认值:3 | |
diff 涉及了多少行上下文。 | |
--controller-manager-manifest string 默认值:"/etc/kubernetes/manifests/kube-controller-manager.yaml" | |
控制器清单的路径。 | |
-h, --help | |
diff 操作的帮助命令 | |
--kubeconfig string 默认值:"/etc/kubernetes/admin.conf" | |
与集群通信时使用的 kubeconfig 文件,如果标志是未设置,则可以在一组标准位置中搜索现有的 kubeconfig 文件。 | |
--scheduler-manifest string 默认值:"/etc/kubernetes/manifests/kube-scheduler.yaml" | |
调度程序清单的路径。 |
从父命令继承的选项
--rootfs string | |
[实验] 指向“真实”主机根文件系统的路径。 |
kubeadm upgrade node
升级集群中某个节点的命令。
概要
升级集群中某个节点的命令。
"node" 命令执行以下阶段:
preflight 执行节点升级前检查
control-plane 如果存在的话,升级部署在该节点上的管理面实例
kubelet-config 更新该节点上的 kubelet 配置
addon # 升级默认的 kubeadm 插件
/coredns # 升级 CoreDNS 插件
/kube-proxy # 升级 kube-proxy 插件
post-upgrade # 运行升级后的任务
kubeadm upgrade node [flags]
选项
--certificate-renewal 默认值: true | |
对升级期间变化的组件所使用的证书执行续订。 | |
--config string | |
到 kubeadm 配置文件的路径。 | |
--dry-run | |
不更改任何状态,只输出将要执行的操作。 | |
--etcd-upgrade 默认值: true | |
执行 etcd 的升级。 | |
-h, --help | |
node 操作的帮助命令。 | |
--ignore-preflight-errors strings | |
其错误将显示为警告的检查列表。示例:'IsPrivilegedUser,Swap'。值 'all' 忽略所有检查中的错误。 | |
--kubeconfig string 默认值: "/etc/kubernetes/admin.conf" | |
用于与集群交互的 kubeconfig 文件。如果参数未指定,将从一系列标准位置检索存在的 kubeconfig 文件。 | |
--patches string | |
包含名为 "target[suffix][+patchtype].extension" 的文件的目录的路径。 例如,"kube-apiserver0+merge.yaml"或仅仅是 "etcd.json"。 "target" 可以是 "kube-apiserver"、"kube-controller-manager"、"kube-scheduler"、"etcd"、"kubeletconfiguration" 之一。 "patchtype" 可以是 "strategic"、"merge" 或者 "json" 之一, 并且它们与 kubectl 支持的补丁格式相同。 默认的 "patchtype" 是 "strategic"。 "extension" 必须是"json" 或"yaml"。 "suffix" 是一个可选字符串,可用于确定首先按字母顺序应用哪些补丁。 | |
--skip-phases strings | |
要跳过的阶段的列表。 |
从父命令继承的选项
--rootfs string | |
[实验] 指向 '真实' 宿主机根文件系统的路径。 |
接下来
- 如果你使用 kubeadm v1.7.x 或更低版本初始化了集群,则可以参考
kubeadm config,
为
kubeadm upgrade
配置你的集群。