From edff1c8535fb189c7785101a9691078cfb1f532d Mon Sep 17 00:00:00 2001 From: luzg Date: Sun, 22 Nov 2020 22:55:08 +0800 Subject: [PATCH] [zh] Translate task cluster-upgrade --- .../administer-cluster/cluster-upgrade.md | 182 ++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 content/zh/docs/tasks/administer-cluster/cluster-upgrade.md diff --git a/content/zh/docs/tasks/administer-cluster/cluster-upgrade.md b/content/zh/docs/tasks/administer-cluster/cluster-upgrade.md new file mode 100644 index 0000000000..e9b9d0dec5 --- /dev/null +++ b/content/zh/docs/tasks/administer-cluster/cluster-upgrade.md @@ -0,0 +1,182 @@ +--- +title: 升级集群 +content_type: task +--- + + + + +本页概述升级 Kubernetes 集群的步骤。 + +升级集群的方式取决于你最初部署它的方式、以及后续更改它的方式。 + +从高层规划的角度看,要执行的步骤是: + + +- 升级{{< glossary_tooltip text="控制平面" term_id="control-plane" >}} +- 升级集群中的节点 +- 升级 {{< glossary_tooltip text="kubectl" term_id="kubectl" >}} 之类的客户端 +- 根据新 Kubernetes 版本带来的 API 变化,调整清单文件和其他资源 + +## {{% heading "prerequisites" %}} + + +你必须有一个集群。 +本页内容涉及从 Kubernetes {{< skew prevMinorVersion >}} +升级到 Kubernetes {{< skew latestVersion >}}。 +如果你的集群未运行 Kubernetes {{< skew prevMinorVersion >}}, +那请参考目标 Kubernetes 版本的文档。 + + +## 升级方法 {#upgrade-approaches} + +### kubeadm {#upgrade-kubeadm} + + +如果你的集群是使用 `kubeadm` 安装工具部署而来, +那么升级群集的详细信息,请参阅 +[升级 kubeadm 集群](/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/)。 + +升级集群之后,要记得 +[安装最新版本的 `kubectl`](/zh/docs/tasks/tools/install-kubectl/). + + +### 手动部署 {#manual-deployments} + + +{{< caution >}} +这些步骤不考虑第三方扩展,例如网络和存储插件。 +{{< /caution >}} + +你应该跟随下面操作顺序,手动更新控制平面: + + +- etcd (所有实例) +- kube-apiserver (所有控制平面的宿主机) +- kube-controller-manager +- kube-scheduler +- cloud controller manager, 在你用到时 + + +现在,你应该 +[安装最新版本的 `kubectl`](/zh/docs/tasks/tools/install-kubectl/). + +对于群集中的每个节点, +[排空](/zh/docs/tasks/administer-cluster/safely-drain-node/) +节点,然后,或者用一个运行了 {{< skew latestVersion >}} kubelet 的新节点替换它; +或者升级此节点的 kubelet,并使节点恢复服务。 + + +### 其他部署方式 {#upgrade-other} + +参阅你的集群部署工具对应的文档,了解用于维护的推荐设置步骤。 + +## 升级后的任务 {#post-upgrade-tasks} + +### 切换群集的存储 API 版本 {#switch-your-clusters-storage-api-version} + + +对象序列化到 etcd,是为了提供集群中活动 Kubernetes 资源的内部表示法, +这些对象都使用特定版本的 API 编写。 + +当底层的 API 更改时,这些对象可能需要用新 API 重写。 +如果不能做到这一点,会导致再也不能用 Kubernetes API 服务器解码、使用该对象。 + +对于每个受影响的对象,用最新支持的 API 获取它,然后再用最新支持的 API 写回来。 + + +### 更新清单 {#update-manifests} + +升级到新版本 Kubernetes 就可以提供新的 API。 + +你可以使用 `kubectl convert` 命令在不同 API 版本之间转换清单。 +例如: + +```shell +kubectl convert -f pod.yaml --output-version v1 +``` + + +`kubectl` 替换了 `pod.yaml` 的内容, +在新的清单文件中,`kind` 被设置为 Pod(未变), +但 `apiVersion` 则被修订了。