【Kubernetes】k8s删除master节点后重新加入集群

2024-03-17 14:21

本文主要是介绍【Kubernetes】k8s删除master节点后重新加入集群,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 前言
  • 一、思路
  • 二、实战
    • 1.安装etcdctl指令
    • 2.重置旧节点的k8s
    • 3.旧节点的的 etcd 从 etcd 集群删除
    • 4.在 master03 上,创建存放证书目录
    • 5.把其他控制节点的证书拷贝到 master01 上
    • 6.把 master03 加入到集群
    • 7.验证 master03 是否加入到 k8s 集群,检查业务
  • 三、总结

前言

各位小伙伴们好鸭,小涛又来了,分享一个近期遇到的Kubernetes运维案例

有3个控制节点(master)和n个工作节点(node),有一个控制节点 master03 出问题并关机,修复不成功,执行 kubectl delete node master03 把 master03 移除
移除之后(过了一周),机器恢复了重新上架,打算还把个机器加到k8s 集群,还是做控制节点,如何做?

小涛陷入了沉思……

一、思路

总的来说,需要操作的步骤如下:

  • 把 master03 这个节点的 etcd 从 etcd 集群删除
  • 在 master03 上,创建存放证书目录
  • 把其他控制节点的证书拷贝到 master03 上
  • 把 master03 节点加入到集群
  • 验证 master03 是否加入到 k8s 集群

二、实战

口说无凭,下面跟着小涛一块实操吧,亲测有效

1.安装etcdctl指令

如果已安装,这步跳过
etcdctl链接:https://pan.baidu.com/s/1TvXSoVeTDKAJfcN4shnmPw
提取码:etcd

注意:如果是用kubeadm安装的k8s,etcd是跑在pod里面的,所以我们没有etcdetcdctl指令的,大家可以yum 安装一下,如果是内网环境,可以把这个安装包里的etcd、etcdctl,赋权后cp 到 /use/bin 目录下

#把etcdctl目录解压后,放入k8s-master节点中【每个master节点都执行】
tar -zxvf etcd-v3.4.13-linux-amd64.tar.gz
cd ./etcd-v3.4.13-linux-amd64/
chmod +x etcd etcdctl
cp etcd /usr/bin/
cp etcdctl /usr/bin/

在这里插入图片描述

2.重置旧节点的k8s

目的:保证其是一个干净的节点【以免脏数据影响重新加入集群】

ssh master03
kubeadm reset		#检查是不是需要重置的旧节点再执行,慎重!!!

在这里插入图片描述

3.旧节点的的 etcd 从 etcd 集群删除

切记,任何操作前提前备份,这是一个好的工作习惯

#备份ETCD数据
ETCDCTL_API=3 etcdctl \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
--endpoints=127.0.0.1:2379 \
snapshot save ./etcd-snapshot-`date +%Y%m%d%H%M`.db#查看ETCD备份文件是否正常【查看备份文件不用指定证书目录】
ETCDCTL_API=3 etcdctl --endpoints=127.0.0.1:2379 \
snapshot status ./etcd-snapshot-`date +%Y%m%d%H%M`.db -w table

在这里插入图片描述

#以下是小涛整理一个每天自动备份脚本【大家可自行取用】
# 0 1 * * * /bin/bash /backup/etcd_backup.sh > /dev/null 2>&1cat etcd_backup.sh
#!/bin/bashsource /etc/profile
date;ENDPOINTS="127.0.0.1:2379"	#IP换成etcd所在节点IP
SNAPSHOT_DIR="/backup/snapshot"		#备份文件存放路径
SNAPSHOT_LOG="/backup/log"		#备份产生的日志存放路径ETCDCTL_API=3 /usr/bin/etcdctl \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
--endpoints=${ENDPOINTS} \
snapshot save ${SNAPSHOT_DIR}/etcd-snapshot-`date +%Y%m%d%H%M`.db >> ${SNAPSHOT_LOG}/etcd-snapshot-`date +%Y%m%d%H%M`.logETCDCTL_API=3 /usr/bin/etcdctl --endpoints=${ENDPOINTS} \
snapshot status ${SNAPSHOT_DIR}/etcd-snapshot-`date +%Y%m%d%H%M`.db -w table >> ${SNAPSHOT_LOG}/etcd-snapshot-`date +%Y%m%d%H%M`.log# 备份文件保留30天后删除
find ${SNAPSHOT_DIR} -name *.db -mtime +30 -exec rm -f {} \;
find ${SNAPSHOT_LOG} -name *.log -mtime +30 -exec rm -f {} \;
#找到 master03 这个机器的etcd 的id 是cd4a68ab2c608bfb	【具体id以实际为准】
ETCDCTL_API=3 etcdctl member list
ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --endpoints=127.0.0.1:2379 member list -w table

在这里插入图片描述

#删除 master03 节点的etcd【在ETCD正常的节点执行】
ETCDCTL_API=3 etcdctl member delete id
ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --endpoints=127.0.0.1:2379 member remove cd4a68ab2c608bfb

在这里插入图片描述

4.在 master03 上,创建存放证书目录

ssh master03
cd /root && mkdir -p /etc/kubernetes/pki/etcd && mkdir -p ~/.kube/

在这里插入图片描述

5.把其他控制节点的证书拷贝到 master01 上

export HostName=master03
echo ${HostName}
scp /etc/kubernetes/pki/ca.crt ${HostName}:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/ca.key ${HostName}:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/sa.key ${HostName}:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/sa.pub ${HostName}:/etc/kubernetes/
scp /etc/kubernetes/pki/front-proxy-ca.crt ${HostName}:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/front-proxy-ca.key ${HostName}:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/etcd/ca.crt ${HostName}:/etc/kubernetes/pki/etcd/
scp /etc/kubernetes/pki/etcd/ca.key ${HostName}:/etc/kubernetes/pki/etcd/

6.把 master03 加入到集群

kubeadm token create --print-join-command
显示如下:

在这里插入图片描述

#master03节点执行:
#【把刚才获取的token指令粘贴过来,加上"--control-plane --ignore-preflight-errors=SystemVerification"参数】
ssh master03
kubeadm join apiserver.cluster.local:6443 --token hrm6ki.xxxx     --discovery-token-ca-cert-hash sha256:449fddxxxxxxxxxxxx \
--control-plane --ignore-preflight-errors=SystemVerification

7.验证 master03 是否加入到 k8s 集群,检查业务

接下来,静观其变,等待加入k8s集群

#查看master03节点是否已正常加入集群,
kubectl get node -o wide

集群节点都是Ready状态后,检查pod状态是否正常,同时检查生产业务是否正常

三、总结

奈斯,Get一个新技能,小伙伴们小本本记得记好了,有帮助大家还请点赞收藏一波😉

下一篇博客再见了,欢迎评论区讨论,我是卑微涛,不断输出,冲冲冲!

这篇关于【Kubernetes】k8s删除master节点后重新加入集群的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/819209

相关文章

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Python对PDF书签进行添加,修改提取和删除操作

《Python对PDF书签进行添加,修改提取和删除操作》PDF书签是PDF文件中的导航工具,通常包含一个标题和一个跳转位置,本教程将详细介绍如何使用Python对PDF文件中的书签进行操作... 目录简介使用工具python 向 PDF 添加书签添加书签添加嵌套书签Python 修改 PDF 书签Pytho

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

C#实现查找并删除PDF中的空白页面

《C#实现查找并删除PDF中的空白页面》PDF文件中的空白页并不少见,因为它们有可能是作者有意留下的,也有可能是在处理文档时不小心添加的,下面我们来看看如何使用Spire.PDFfor.NET通过C#... 目录安装 Spire.PDF for .NETC# 查找并删除 PDF 文档中的空白页C# 添加与删

Redis高可用-主从复制、哨兵模式与集群模式详解

《Redis高可用-主从复制、哨兵模式与集群模式详解》:本文主要介绍Redis高可用-主从复制、哨兵模式与集群模式的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录Redis高可用-主从复制、哨兵模式与集群模式概要一、主从复制(Master-Slave Repli

SQL常用操作精华之复制表、跨库查询、删除重复数据

《SQL常用操作精华之复制表、跨库查询、删除重复数据》:本文主要介绍SQL常用操作精华之复制表、跨库查询、删除重复数据,这些SQL操作涵盖了数据库开发中最常用的技术点,包括表操作、数据查询、数据管... 目录SQL常用操作精华总结表结构与数据操作高级查询技巧SQL常用操作精华总结表结构与数据操作复制表结

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

Redis分片集群的实现

《Redis分片集群的实现》Redis分片集群是一种将Redis数据库分散到多个节点上的方式,以提供更高的性能和可伸缩性,本文主要介绍了Redis分片集群的实现,具有一定的参考价值,感兴趣的可以了解一... 目录1. Redis Cluster的核心概念哈希槽(Hash Slots)主从复制与故障转移2.

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应