Kubernetes集群实践(08)升级集群

ECK在集群上还没部署多久还没有正式投入使用,试用阶段也发现了不少问题,现在马上要正式的部署了,想着在正式部署的时候把k8s集群升级。看了些资料,由于我的集群只有一个master节点虽然很强大,一台HUAWEI Taishan2280v2 服务器配双路鲲鹏920(单路48核,所以物尽其用,跑了master节点,traefik和kubernetes-dashboard,nexus没有arm64的镜像,很可惜),但终归是个单点。因此,在没有什么负载的情况下把升级工作做了。
集群升级分为Kubernetes编排引擎升级和Docker容器运行引擎升级

Kubernetes升级

Kubernetes升级强烈建议参考官方文档,看英文没有问题,下面的可以忽略了,我这里可以看作个人翻译笔记。我的环境是离线升级,对应的rpm包和docker镜像包提前准备好了,具体方法可以参看本系列的前面3个章节。
官方文档地址:https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/

主节点升级

升级第1个控制节点(主节点)

1.升级kubeadm

# replace x in 1.17.x-0 with the latest patch version
sudo um install -y kubeadm-1.17.x-0 --disableexcludes=kubernetes

核对kubeadm的版本

sudo kubeadm version

2.排空节点上的容器

# replace <cp-node-name> with the name of your control plane node
sudo kubectl drain <cp-node-name> --ignore-daemonsets

3.查看升级计划

sudo kubeadm upgrade plan

执行后可以看见类似如下的结果,版本号根据实际操作有所区别:

[upgrade/config] Making sure the configuration is correct:
[upgrade/config] Reading configuration from the cluster...
[upgrade/config] FYI: You can look at this config file with ‘kubectl -n kube-system get cm kubeadm-config -oyaml‘
[preflight] Running pre-flight checks.
[upgrade] Making sure the cluster is healthy:
[upgrade] Fetching available versions to upgrade to
[upgrade/versions] Cluster version: v1.16.0
[upgrade/versions] kubeadm version: v1.17.0

Components that must be upgraded manually after you have upgraded the control plane with ‘kubeadm upgrade apply‘:
COMPONENT   CURRENT       AVAILABLE
Kubelet     1 x v1.16.0   v1.17.0

Upgrade to the latest version in the v1.16 series:

COMPONENT            CURRENT   AVAILABLE
API Server           v1.16.0   v1.17.0
Controller Manager   v1.16.0   v1.17.0
Scheduler            v1.16.0   v1.17.0
Kube Proxy           v1.16.0   v1.17.0
CoreDNS              1.6.2     1.6.5
Etcd                 3.3.15    3.4.3-0

You can now apply the upgrade by executing the following command:

    kubeadm upgrade apply v1.17.0

上述命令只是检查集群是否能够升级,以及可以升级的版本。

4.输入实际的版本执行升级计划

# replace x with the patch version you picked for this upgrade
sudo kubeadm upgrade apply v1.17.x

执行后可以在末尾看见

......
[upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.17.0". Enjoy!

[upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven‘t already done so.

5.手动升级CNI provider plugin

如flannel,由于此次升级网络插件没有变化,因此没有升级。

6.解封节点

# replace <cp-node-name> with the name of your control plane node
sudo kubectl uncordon <cp-node-name>

升级其它控制节点(主节点)

直接执行升级命令:

sudo kubeadm upgrade node

每个控制节点上升级kubelet和kubectl

# replace x in 1.17.x-0 with the latest patch version
sudo yum install -y kubelet-1.17.x-0 kubectl-1.17.x-0 --disableexcludes=kubernetes

重新加载kubelet并重启

sudo systemctl daemon-reload
sudo systemctl restart kubelet

工作节点升级

1.升级kubeadm

# replace x in 1.17.x-0 with the latest patch version
sudo yum install -y kubeadm-1.17.x-0 --disableexcludes=kubernetes

2.排空节点上的容器

# replace <node-to-drain> with the name of your node you are draining
sudo kubectl drain <node-to-drain> --ignore-daemonsets

上述命令执行后可能出现如下类似输出:

node/ip-172-31-85-18 cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-proxy-dj7d7, kube-system/weave-net-z65qx
node/ip-172-31-85-18 drained

3.升级kubelet的配置

sudo kubeadm upgrade node

4.升级kubelet和kubectl

# replace x in 1.17.x-0 with the latest patch version
yum install -y kubelet-1.17.x-0 kubectl-1.17.x-0 --disableexcludes=kubernetes

重载并重启kubectl

sudo systemctl daemon-reload
sudo systemctl restart kubelet

5.解封节点

# replace <node-to-drain> with the name of your node
sudo kubectl uncordon <node-to-drain>

验证升级结果

sudo kubectl get nodes

原文地址:https://blog.51cto.com/huanghai/2480733

时间: 2024-08-02 08:49:51

Kubernetes集群实践(08)升级集群的相关文章

Kubernetes 最佳实践:零宕机升级集群

文 / 开发技术推广工程师 Sandeep Dinesh 众所周知,为优化安全性和性能,最好让应用时刻保持最新状态.Kubernetes 和 Docker 可以简化上述更新操作,因为您可以用更新构建一个新容器,部署操作相对而言更加轻松. 与应用类似,Kubernetes 不断获取新功能和安全更新,因此,底层节点和 Kubernetes 基础架构也需要保持最新状态. 在本集的 "Kubernetes 最佳实践" 中,我们来看看 Google Kubernetes Engine 如何使升级

跨园区容灾,升级不停服:高可用负载均衡集群实践

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云中间件团队发表于云+技术周刊特别版 作者:方坤丁 对于云计算行业来说,云服务的可用性和可扩展性是的检测其服务质量的重要标准,也是最受用户关注的两大难题.各云计算厂商针对容灾.升级等需求的解决方案,最能够体现其底层架构的实力.腾讯云基于基础架构的优势,为分期乐.微信红包等平台提供技术支持,可以完美满足如下三点需求: 1. 高可用能力,容灾能力强,升级不停服 2. 可扩展性强,功能丰富,性能超高 3. 避免重复造轮子,性价比之王

跨园区容灾,升级不停服——高可用负载均衡集群实践

对于云计算行业来说,云服务的可用性和可扩展性是的检测其服务质量的重要标准,也是最受用户关注的两大难题.各云计算厂商针对容灾.升级等需求的解决方案,最能够体现其底层架构的实力.腾讯云基于基础架构的优势,为分期乐.微信红包等平台提供技术支持,可以完美满足如下三点需求: 1. 高可用能力,容灾能力强,升级不停服 2. 可扩展性强,功能丰富,性能超高 3. 避免重复造轮子,性价比之王 近期,针对一些客户对腾讯云产品可用性的问询,腾讯云基础产品团队对负载均衡产品的原理做出详细阐述,并希望通过对腾讯负载均衡

Docker Swarm集群实践——部署篇

最新消息 Docker在上周的DockerCon技术大会上发布了1.12版核心产品Docker Engine,最大的新特性是Docker Swarm已经被整合到了Docker Engine里面而不再是一个单独的工具了,这样就可以更容易的把多个Docker主机组合成一整个规模更大可靠性更高的逻辑单元.Docker的掌舵者 Adrian Mouat相信这种新的集群模式可以大大增强Docker在相关领域的竞争力. 把Docker Swarm整合进Docker Engine是一个重大改进,但它也只是一个

Kubernetes 通过statefulset部署redis cluster集群

Kubernetes 通过statefulset部署redis cluster集群 作者: 张首富 时间: 2019-02-19 个人博客地址: https://www.zhangshoufu.com QQ群: 895291458 需要有redis基础 Redis集群架构图 每个Mater 都可以拥有多个slave.当Master掉线后,redis cluster集群会从多个Slave中选举出来一个新的Matser作为代替,而旧的Master重新上线后变成 Master 的Slave. 部署re

08.验证集群功能

08.验证集群功能 本文档使用 daemonset 验证 master 和 worker 节点是否工作正常. 检查节点状态 $ kubectl get nodes NAME STATUS ROLES AGE VERSION kube-node1 Ready <none> 3h v1.10.4 kube-node2 Ready <none> 3h v1.10.4 kube-node3 Ready <none> 3h v1.10.4 都为 Ready 时正常. 创建测试文件

centos7基于kubeadm安装部署Kubernetes (1.15.2)集群

一.什么是 Kubernetes Kubernetes 是 Google (谷歌内部:Borg)开源的容器集群管理系统,其提供应用部署.维护. 扩展机制等功能,利用 Kubernetes 能方便地管理跨机器运行容器化的应用,可以实现容器集群的自动化部署.自动扩缩容.维护等功能.它既是一款容器编排工具,也是全新的基于容器技术的分布式架构领先方案. 二. Kubernetes架构和组件 K8S集群中有管理节点与工作节点两种类型. 1)架构 k8s集群的管理节点,负责管理集群,提供集群的资源数据访问入

GaussDB T分布式集群部署以及升级指南

本文用四节点部署GaussDB T 1.0.1分布式集群,部署完成后再将其升级到1.0.2版本(直接安装1.0.2版本,在安装过程中会遇到segment fault报错,目前尚未解决).前期操作系统准备工作参考之前的几篇文章. 1.部署分布式集群 1.1 节点信息 各节点信息如下表所示: 1.2 集群参数文件 根据实际情况修改集群参数,或者通过database manager工具生成,内容如下: [[email protected] db]# vi clusterconfig.xml <?xml

Rancher 2.4实现零宕机升级集群,无需担心组件出现短暂故障!

在瞬息万变的技术世界中,为用户提供持续不断.快速的创新至关重要.Kubernetes是一个极佳引擎,可以在云端.本地以及边缘驱动创新.因此,Kubernetes及其整个生态系统本身迭代十分迅速,让Kubernetes保持最新状态以确保安全和新功能的使用对于任何部署来说都至关重要.  什么是零宕机升级集群 Rancher 2.4已于上周GA,在Rancher 2.4中,我们正式引入了零宕机集群升级功能.通俗来说,这个功能可以让你在飞机飞行过程中更换引擎,而不受任何干扰.开发人员可以继续将应用程序部