「Kubernetes」- 升级由「kubeadm」创建的集群(从1.12到1.13版本)

  CREATED BY JENKINSBOT

内容简介

本文将介绍如何升级由kubeadm命令创建的高可用集群。该高可用集群应是依照官方「Creating HA clusters with kubeadm」文档进行搭建的。

本文是对官方「Upgrading kubeadm HA clusters from v1.12 to v1.13」文档的简单整理。

环境概述

系统环境: CentOS Linux release 7.4.1708 (Core)
软件版本: Kubernetes v1.12.1

开始之前

集群需要运行在1.12.0或以后版本,但是不能1.12版本。系统SWAP分区需要被禁用。集群需要使用静态的「Control Plane」和「etcd」POD实例。

仔细阅读「发行说明」页面。

确定已经备份重要组件,比如存储在数据库的应用状态。虽然升级只涉及Kubernetes组件,但是备份永远是最佳实践。

检查「Upgrading/downgrading kubeadm clusters between v1.12 to v1.13」中的要求。

在1.15升级1.16版本的文档中提到:升级不能跨越次版本号,即可以从1.12升级到1.13版本,但是不能从1.12升级到1.14版本。

所有命令需要以root用户执行。

确定目标版本

目前为1.12.1版本,而目标为1.16.2版本,但是不能跨次版本号,所以只能升级到1.13的最后一个版本:

#!/bin/sh

yum list --showduplicates kubeadm --disableexcludes=kubernetes | grep 1.13
# kubeadm.x86_64                     1.13.12-0                      kubernetes-ali

很显然,我们要升级到1.13.12-0版本(我使用阿里云的源仓库)。

升级主节点

升级kubeadm命令

首先,升级kubeadm命令:

#!/bin/sh

yum install -y --disableexcludes=kubernetes kubeadm-1.13.0 kubelet-1.13.0
yum install -y --disableexcludes=kubernetes kubeadm-1.13.12-0 kubelet-1.13.12-0

# 版本回退
# yum downgrade -y kubeadm-1.12.1 --disableexcludes=kubernetes kubelet-1.12.1 kubernetes-cni-0.6.0-0.x86_64

# 升级到其他版本
# yum install -y kubeadm-1.12.10 --disableexcludes=kubernetes kubelet-1.12.10

# 验证版本
kubeadm version

(后面的kubelet-1.13.12-0是我自己添加的。因为如果不添加该包,系统kubelet会被升级到1.16.3-0版本)

获取可升级版本

然后,检查集群是否可升级,并获取可升级版本:

#!/bin/sh

kubeadm upgrade plan

但是,执行到该步骤时,产生如下错误:

[upgrade/versions] FATAL: context deadline exceeded

目前还未解决……

附加说明

Static Pods – 所谓静态Pod实例,是指由kubelet直接管理的Pod实例。

参考文献

Upgrading kubeadm clusters
Create static Pods