From 4a8546a97d06c96188939d7db0beee5a7e069b3b Mon Sep 17 00:00:00 2001 From: chenrui Date: Sun, 9 Dec 2018 22:01:25 -0500 Subject: [PATCH] zh-trans: add docs/getting-started-guides/ubuntu/upgrades.md (#11633) * zh-trans: add docs/getting-started-guides/ubuntu/upgrades.md * Update content/zh/docs/getting-started-guides/ubuntu/upgrades.md Co-Authored-By: chenrui333 --- .../getting-started-guides/ubuntu/upgrades.md | 273 ++++++++++++++++++ 1 file changed, 273 insertions(+) create mode 100644 content/zh/docs/getting-started-guides/ubuntu/upgrades.md diff --git a/content/zh/docs/getting-started-guides/ubuntu/upgrades.md b/content/zh/docs/getting-started-guides/ubuntu/upgrades.md new file mode 100644 index 0000000000..9df7fb310a --- /dev/null +++ b/content/zh/docs/getting-started-guides/ubuntu/upgrades.md @@ -0,0 +1,273 @@ +--- +title: 升级 +content_template: templates/task +--- + + + +{{% capture overview %}} + +本页将展示如何进行 Kubernetes 集群升级。 +{{% /capture %}} + +{{% capture prerequisites %}} + +本页假定你有一个 juju 部署的集群。 + +{{< warning >}} + + + +在进行升级之前,你应当备份所有的数据。 +不要忘记对集群内的工作负载进行数据备份! +参见[备份文档](/docs/getting-started-guides/ubuntu/backups)。 + +{{< /warning >}} + +{{% /capture %}} + +{{% capture steps %}} + + +## 对集群进行补丁版本升级,例如,1.9.0 -> 1.9.1 + + + +集群透明地升级到最新的 Kubernetes 补丁版本。 +需要澄清的是,用 1.9/stable 通道部署的集群将会透明地、自动更新到 Kubernetes 1.9.X 最新版。 +升级的过程对集群的运行没有影响,也不需要集群维护人员的干预。 +每一个补丁版本都由 Canonical Kubernetes 发布小组审核评估。 +一旦补丁版本通过了内部测试,认为可以安全用于集群升级, +将会被打包成 snap 格式,发布到稳定版通道上。 + + +## 对集群进行次版本升级,例如,1.8.1 -> 1.9.0 + + + +Kubernetes charms 遵循的是 Kubernetes 发行版本。 +请咨询了解 support 计划在升级频率方面的相关信息。 +重要的运维考虑以及行为上的改变都会记录在发布通知里。 + + +### 升级 etcd + + + +备份 etcd 需要导出和快照操作,参见[备份文档](/docs/getting-started-guides/ubuntu/backups)了解如何创建快照。 +在做完快照后,用下面的命令升级 etcd 服务: + + juju upgrade-charm etcd + + + +命令将会负责 etcd 的次版本升级。 +在 [juju 解决方案的 wiki](https://github.com/juju-solutions/bundle-canonical-kubernetes/wiki/Etcd-2.3-to-3.x-upgrade) 里 +可以了解如何将 etcd 从 2.x 升级到 3.x。 + + +### 升级 kubeapi-load-balancer + + + +Kubernetes Charms 通常是同时更新、发布。 +Ubuntu 集群的核心部分是 kubeapi-load-balancer 组件。 +错误或遗失修改可能会导致 API 可用性和访问控制方面的问题。 +为了保证 API 服务在集群升级期间还能为主节点和工作节点服务,也需要对它们进行升级。 + + + +升级命令: + + juju upgrade-charm kubeapi-load-balancer + + +### 升级 Kubernetes + + + +Kubernetes Charms 使用 snap 通道来驱动负荷。 +这些通道定义的格式为 `X.Y/channel`,其中,`X.Y` 是 Kubernetes `主.次` 发行版(例如,1.9) +而 `channel` 的取值范围如下: + + + +| 通道名 | 描述 | +| ------------------- | ------------ | +| stable | Kubernetes 的最新稳定发行版 | +| candidate | Kubernetes 的发行候选版 | +| beta | Kubernetes 次发行版的最新 alpha 或 beta 版 | +| edge | Kubernetes 次发行版的每日构建版 | + + + + +如果发行版还不可用,就会使用下一个最高通道的版本。 +例如,1.9/beta 会根据发行版的可用性加载 `/candidate` 或 `/stable` 版本。 +Kubernetes 的开发版本会根据每个次版本,发布到 edge 通道上。 +但不会保证 edge snap 能够和当前的 charms 一起工作。 + + +### 主节点升级 + + + +首先需要对主节点进行升级: + + juju upgrade-charm kubernetes-master + +{{< note >}} + + + +永远在工作节点升级之前,升级主节点。 + +{{< /note >}} + + + +在部署完最新的 charm 之后,可以通过下面的命令行来选择通道: + + juju config kubernetes-master channel=1.x/stable + + + +其中,`x` 是 Kubernetes 的次版本号。例如,`1.9/stable`。 +参阅前面对通道的定义。 +将 kubernetes-master 配置到合适的通道上后, +再在每个主节点上运行下面的升级命令: + + juju run-action kubernetes-master/0 upgrade + juju run-action kubernetes-master/1 upgrade + ... + + +### 工作节点升级 + + + +现有所支持的升级工作节点的方法有两种,[蓝/绿部署](http://martinfowler.com/bliki/BlueGreenDeployment.html) +和就地升级。提供两种方法可以带来运维上的灵活性,而这两种方法也都被支持和测试。 +相比于就地升级,蓝/绿部署需要更多的硬件资源,但也更为安全可靠。 + + +#### 蓝/绿工作节点升级 + + + +假定一个部署里面所有的工作节点都叫 kubernetes-alpha。 + + + +部署新的工作节点: + + juju deploy kubernetes-alpha + + + +暂停旧的工作节点,然后迁移工作负载: + + juju run-action kubernetes-alpha/# pause + + + +验证所迁移的工作负载: + + kubectl get pod -o wide + + + +销毁就有的工作节点: + + juju remove-application kubernetes-alpha + + +#### 就地工作节点升级 + + juju upgrade-charm kubernetes-worker + juju config kubernetes-worker channel=1.x/stable + + + +其中,`x` 是 Kubernetes 的次版本号。例如,`1.9/stable`。 +参阅前面对通道的定义。将 kubernetes-worker 配置到合适的通道上后, +再在每个工作节点上运行下面的升级命令: + + juju run-action kubernetes-worker/0 upgrade + juju run-action kubernetes-worker/1 upgrade + ... + + +### 验证升级 + + + +`kubectl version` 将会返回新的版本号。 + + + +建议重新运行[集群验证](/docs/getting-started-guides/ubuntu/validation)确认集群升级成功完成。 + + +### 升级 Flannel + + + +可以在任何时候升级 flannel,它的升级可以和 Kubernetes 升级分开进行。 +需要注意的是,在升级过程中,网络会受到影响。 +可以通过下面的命令行发起升级: + + juju upgrade-charm flannel + + +### 升级 easyrsa + + + +可以在任何时候升级 easyrsa,它的升级可以和 Kubernetes 升级分开进行。 +升级 easyrsa 会有停机时间,因为不是运行服务: + + juju upgrade-charm easyrsa + +{{% /capture %}}