首页 > 其他分享 >集群备份、升级、扩容

集群备份、升级、扩容

时间:2024-05-10 10:12:33浏览次数:13  
标签:扩容 http etcd -- 备份 2380 集群 urls

集群备份、升级、扩容

哪些内容需要备份
1.集群中各种资源和应用程序,例如:pod service deployment等等
2.集群本身、集群内其他资源的信息

如何备份
1.如果是以声明式的方式创建资源,可以将其保存到代码库(如github)。如果是以命令式的方式创建的资源,使用下面的命令,将群集上创建的所有对象的所有资源配置保存为副本。 kubectl get all --all-namespace -o yaml > all-deploy-services.yaml。或者使用备份工具来备份,velero
2.使用etcdctl对etcd进行备份

备份tecd
ETCDCTL_API=3 etcdctl snapshot save snapshot.db
ETCDCTL_API=3 etcdctl snapshot status snapshot.db
systemctl stop kube-apiserver # 恢复数据需要重启etcd,apiserver依赖于etcd,所以提前关闭
# 它初始化一个新的集群配置, 并将XKCD的成员配置为新的成员, 以结束新的集群。
这是为了防止新成员意外加入现有群集。
ETCDCTL_API=3 etcdctl snapshot restore --data-dir /var/lib/etcd-from-backup
在etcd.service中指定新路径 --data-dir /var/lib/etcd-from-backup
systemctl daemon-reload
systemctl restart etcd
systemctl start kube-apiservere
2379端口用于与客户端通信,2380端口用于etcd集群各节点通信
./bin/etcd --name node1 \
--initial-advertise-peer-urls http://172.16.28.1:2380 \ # 该节点对集群其他成员暴露的集群通信地址
--listen-peer-urls http://172.16.28.1:2380 \ # 该节点与其他集群成员的通信地址
--listen-client-urls http://172.16.28.1:2379 \ # 该节点与客户端通信的地址
--advertise-client-urls http://172.16.28.1:2379 \ # 该节点对集群中的其他成员暴露的客户端通信地址
--initial-cluster node1=http://172.16.28.1:2380,node2=http://172.16.28.2:2380,node3=http://172.16.28.3:2380 \ # 指定集群成员

etcd官方中文文档

https://www.bookstack.cn/read/etcd/documentation-op-guide-configuration.md#%E2%80%94listen-peer-urls

官方配置

# node 1
sudo rkt run --net=default:IP=${NODE1} quay.io/coreos/etcd:v3.2 -- -name=node1 -advertise-client-urls=http://${NODE1}:2379 -initial-advertise-peer-urls=http://${NODE1}:2380 -listen-client-urls=http://0.0.0.0:2379 -listen-peer-urls=http://${NODE1}:2380 -initial-cluster=node1=http://${NODE1}:2380,node2=http://${NODE2}:2380,node3=http://${NODE3}:2380

# node 2
sudo rkt run --net=default:IP=${NODE2} quay.io/coreos/etcd:v3.2 -- -name=node2 -advertise-client-urls=http://${NODE2}:2379 -initial-advertise-peer-urls=http://${NODE2}:2380 -listen-client-urls=http://0.0.0.0:2379 -listen-peer-urls=http://${NODE2}:2380 -initial-cluster=node1=http://${NODE1}:2380,node2=http://${NODE2}:2380,node3=http://${NODE3}:2380

# node 3
sudo rkt run --net=default:IP=${NODE3} quay.io/coreos/etcd:v3.2 -- -name=node3 -advertise-client-urls=http://${NODE3}:2379 -initial-advertise-peer-urls=http://${NODE3}:2380 -listen-client-urls=http://0.0.0.0:2379 -listen-peer-urls=http://${NODE3}:2380 -initial-cluster=node1=http://${NODE1}:2380,node2=http://${NODE2}:2380,node3=http://${NODE3}:2380

集群升级

版本命名规则

kube-apiserver controller-manager kube-scheduler kubelet kube-proxy kubectl 版本统一

etcd coredns 有自己的版本

df01f8a05331d627ef1c9875301a6472.png

1.先升级master节点,如果有多个master节点,需要一台一台升级
2.master节点升级完毕后,再升级node节点,建议一台一台升级
3.使用kubeadm升级集群,需要先升级kubeadm本身,然后再升级集群,kubeadm的版本与组件版本一致
4.驱逐pod的命令在master节点上执行

升级master节点
yum list --showduplicates kubeadm --disableexcludes=kubernetes # 查看可用的kubeadm版本,禁用非kubernetes库的版本
yum install -y kubeadm-1.26.x-0 --disableexcludes=kubernetes
kubeadm version
kubeadm upgrade plan
kubeadm upgrade apply v1.26.x
kubeadm upgrade node # 有多个mstar节点时,执行这条
kubectl drain <node-to-drain> --ignore-daemonsets # 将master节点标记为不可调度并驱逐pod
yum install -y kubelet-1.26.x-0 kubectl-1.26.x-0 --disableexcludes=kubernetes
sudo systemctl daemon-reload
sudo systemctl restart kubelet
kubectl uncordon <node-to-uncordon>

升级worker节点
kubectl drain <node-to-drain> --ignore-daemonsets
yum install -y kubeadm-1.26.x-0 --disableexcludes=kubernetes
kubeadm upgrade node
yum install -y kubelet-1.26.x-0 kubectl-1.26.x-0 --disableexcludes=kubernetes
sudo systemctl daemon-reload
sudo systemctl restart kubelet
kubectl uncordon <node-to-uncordon>

扩容node节点

使用cordon、uncordon子命令
//隔离某个Node
kubectl cordon <node_name>
//对某个Node恢复调度
kubectl uncordon <node_name>

使用patch子命令
//将spec.unschedulable设置为true,表示隔离该Node
kubectl patch node k8s-node1 -p '{"spec":{"unschedulable":true}}'
//将spec.unschedulable设置为false,表示恢复该Node
kubectl patch node k8s-node1 -p '{"spec":{"unschedulable":false}}'

扩容
* 将一个新Node的加入到Kubernetes集群中非常简单。
    * (1)在新的Node上安装Docker、kubelet和kube-proxy服务,然后配置kubelet和kubeproxy的启动参数,将Master URL指定为当前Kubernetes集群Master的地址,最后启动这些服务。
    * (2)通过kubelet默认的自动注册机制,新的Node将会自动加入现有的Kubernetes集群中。
* Kubernetes Master在接受了新Node的注册之后,会自动将其纳入当前集群的调度范围,之后创建容器时,就可以对新的Node进行调度了。

* 重新生成用于加入到集群的token(要添加master,可以在token后加--control-plane参数)
kubeadm token create --print-join-command
kubeadm join 10.1.1.11:6443 --token swosas.n9p71fcgsx7vcll0     --discovery-token-ca-cert-hash sha256:c8f0875af59e971434e352867943ed9f3d8453a4de086cecb8b031fa43d5bd7c

标签:扩容,http,etcd,--,备份,2380,集群,urls
From: https://www.cnblogs.com/lixunblogs/p/18167070

相关文章

  • 20240509xxx集群xx节点PLEG超时问题
    20240509xxx集群xx节点PLEG超时问题//20240509写在前面xxx集群xx节点又又又又又卡住了,经过一系列排查,终于解决了问题,由于这次找到了通用解法,所以在此记录下ps:国内的搜索引擎是真的shi。。搜出来的帖子都是抄来抄去的,还不解决问题,还得是google/大拇指问题起因:偷得浮生半日......
  • redis三主三从集群快速搭建
    redis集群快速搭建 1本文以redis6.2.6版本为例,快速搭建一套三主三从的redis集群,已经提前将脚本写好,只需要在节点上面进行执行即可安装#!/bin/bashinstall_redis(){#解压Redis源码包tar-zxvfredis-6.2.6.tar.gz......
  • Oracle数据库 定时备份
    说明学习了如何Oracle如何备份数据库,实际开发过程中数据库应该每隔一段时间就要备份一次,所以我们就需要一个定时执行这个代码的功能,同时备份的文件可能进行一些处理,比如压缩。步骤建一个文本文件,添加以下内容,后缀名修改为.bat::代码页更改为Unicode(UTF-8)chcp65001@......
  • 记录一次虚拟机非LVM扩容的操作
    以下操作都是在测试机上进行操作的操作系统:Centos7.5  所属平台:EXSI由于本地根目录容量太小只有20G,在关闭虚拟机后将硬盘容量更改到100G,重新启动虚拟机。由于没有LVM通过传统的方式进行扩容目标将sda5扩大 通过fdisk可以看到,sda是有100G的,然后我们需要将其中多余的......
  • PVE新增硬盘并扩容给 local分区
    PVE安装在120G的固态硬盘,现在加了一块1T的机械硬盘作为虚拟机系统用,需要把磁盘扩容给local分区1、ssh连上pve,使用lsblk查看硬盘驱动器路径,我这里新加的硬盘是sda,硬盘还未进行分区 2、fdisk/dev/sda,对硬盘进行分区操作,注意你自己的硬盘名称,千万小心不要搞错 3、lsbl......
  • Vmware虚拟机磁盘扩容
    以VmwareUbuntu为例。1.Vmware软件中关闭Ubuntu虚拟机的电源;2.在Vmware软件中对Ubuntu的硬盘进行扩展3.启动Ubuntu虚拟机电源并进入命令行,执行命令:resize2fs /dev/sda【注:这里sda为第一个硬盘,如果有多个硬盘,则这里可能为sdb,sdc等等,可以通过sudofdisk-l及df-h等命令......
  • Windows备份和恢复驱动程序详解
    在进行系统重装后,驱动程序的重新安装通常是一项繁琐的任务。为了简化这一过程并降低数据丢失的风险,建议对Windows驱动程序进行备份。以下是一个指南,用于备份和恢复驱动程序。备份驱动程序启动PowerShell:首先,点击“开始”菜单,在搜索框中输入“WindowsPowerShell”,并以管理员权......
  • 瀚高数据库企业版集群(hghac2.0+hgproxy)-通用机部署手册
    一、集群架构1.集群各组件及其功能zookeeper/etcd:分布式键值存储系统,具有提供分布式独享锁和选举的功能。zookeeper支持选举的功能为Java版,etcd基于Go语言实现。hghac:数据库集群管理软件。可通过参数文件来配置自动初始化数据库、搭建流复制、指定zookeeper/etcd节点等。......
  • docker搭建redis集群(三主三从)及重启redis集群 redis扩容新增集群
    docker搭建redis集群(三主三从)及重启redis集群一、docker搭建redis集群1、下载redis镜像文件从远程仓库先拉取一下redis的镜像文件,如果已经提前安装过镜像的,可以跳过此步骤:dockerpullredis:6.0.82、查看本地拉取到镜像文件dockerimages 看到图上标识,就说明当前镜像文件已......
  • k8s集群搭建--kubeadm方式
    1.搭建集群的硬件条件: 使用3台服务器:一个master,两个node。我们这里的案例是搭建单master集群的方式。具体操作步骤:1.“在所有节点中”执行以下步骤的命令,做一些初始化:  上面的命令,在所有master和node节点中都要全部执行一次!!! 2.在所有节点安装Docker/Kubeadm/k......