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

news2024/10/7 14:22:10

目录

  • 前言
  • 一、思路
  • 二、实战
    • 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>&1

cat etcd_backup.sh
#!/bin/bash

source /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`.log

ETCDCTL_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一个新技能,小伙伴们小本本记得记好了,有帮助大家还请点赞收藏一波😉

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1524697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用尾插的思想实现移除链表中的元素

目录 一、介绍尾插 1.链表为空 2.链表不为空 二、题目介绍 三、思路 四、代码 五、代码解析 1. 2. 3. 4. 5. 6. 六、注意点 1. 2. 一、介绍尾插 整体思路为 1.链表为空 void SLPushBack(SLTNode** pphead, SLTDataType x) {SLTNode* newnode BuyLTNode(x); …

[大模型]ollama本地部署自然语言大模型

文章目录 ollama下载地址githup百度云 模型默认安装位置模型修改默认安装位置可下载模型相关命令 Chatbox客户端下载地址githup百度云 设置ollama模型并运行 大模型已经发布很久,网络上的大模型形形色色,现在已然是群英荟萃,那么,…

2.vscode 配置python开发环境

vscode用着习惯了,也不想再装别的ide 1.安装vscode 这一步默认已完成 2.安装插件 搜索插件安装 3.选择调试器 Ctrl Shift P(或F1),在打开的输入框中输入 Python: Select Interpreter 搜索,选择 Python 解析器 选择自己安…

AI基础知识(2)--决策树,神经网络

1.什么是决策树? 决策树是一类常见的机器学习方法,决策树是基于树的结构来进行决策。决策过程中提出的每一个问题都是对于属性的“测试”,决策的最终结论对应了我们希望的判定结果。一个决策树包含一个根节点,若干个内部节点和若…

实时云渲染及云交互技术的关系

一、实时云渲染和云交互技术 实时云渲染是一种新兴的技术,它可以将用户的计算机上的数据通过云服务器进行渲染,从而实现实时渲染的效果,实时渲染可以在加速渲染速度的同时,实现更高质量的渲染效果、减轻用户的计算机负担、全方位…

【go语言开发】性能分析工具pprof使用

本文主要介绍如何在项目中使用pprof工具。首先简要介绍pprof工具的作用;然后介绍pprof的应用场景,主要分为工具型应用和服务型应用。最后数据分析项目,先采集项目信息,再可视化查看 文章目录 前言应用场景工具型应用服务型应用 数…

22 OpenCV 直方图计算

文章目录 直方图概念split 通道分离函数calcHist 计算直方图normalize 归一化函数示例 直方图概念 上述直方图概念是基于图像像素值,其实对图像梯度、每个像素的角度、等一切图像的属性值,我们都可以建立直方图。这个才是直方图的概念真正意义&#xff0…

R语言:microeco:一个用于微生物群落生态学数据挖掘的R包,第六:trans_nullmodel class

近几十年来,系统发育分析和零模型的整合通过增加系统发育维度,更有力地促进了生态位和中性影响对群落聚集的推断。trans_nullmodel类提供了一个封装,包括系统发育信号、beta平均成对系统发育距离(betaMPD)、beta平均最近分类单元距离(betaMNT…

时间序列预测的零样本学习是未来还是炒作:TimeGPT和TiDE的综合比较

最近时间序列预测预测领域的最新进展受到了各个领域(包括文本、图像和语音)成功开发基础模型的影响,例如文本(如ChatGPT)、文本到图像(如Midjourney)和文本到语音(如Eleven Labs&…

【GPT-SOVITS-06】特征工程-HuBert原理

说明:该系列文章从本人知乎账号迁入,主要原因是知乎图片附件过于模糊。 知乎专栏地址: 语音生成专栏 系列文章地址: 【GPT-SOVITS-01】源码梳理 【GPT-SOVITS-02】GPT模块解析 【GPT-SOVITS-03】SOVITS 模块-生成模型解析 【G…

从0开始写一个问卷调查APP的第11天

1.今日任务 分析:上次我们实现了从数据库中成功的查找到对应问卷的问题并在前端展示出来,那么今天我们增加难度。在数据库中插入多项选择问题,在接口中查找到并在前端显示出来。 2.实现 2.1数据库中插入测试数据 我们先查看一下表的结构 2.2接口实现…

软件架构设计 C/S与B/S架构的区别

一、什么是C/S架构? C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle或SQLServer。 C/S架构软件有一个特点,就是如果用户要使用的话,需要下载一个客户端&#x…

nodejs部署

字符集转换: mysql报错:Incorrect string value: \xF0\x9F... for column XXX at row 1_incorrect string value: \\xf0\\x9f\\x94\\xa5\\xe8-CSDN博客 查看nginx是否启动 ps -ef|grep nginx 检查nginx是否配置正确 nginx -t 防火墙开启端口 启动并…

CCDP.01.使用NotePad++辅助部署OpenStack的说明

前言 对于象OpenStack(OS)这样的复杂分布式系统(云计算平台),一次部署通过是需要相当的Linux基础、网络基础、分布式系统基础、云计算基础的。这里类比在开发大型复杂系统常常采用的“防御式编程”方法论,探…

Vue中使用Lodash

Vue中使用Lodash 前言安装Lodash引用方法vue中使用1、cloneDeep 深拷贝2、uniq 数组去重3、uniqWith 数组对象去重 isEqual 深度比对4、intersection 提取数组相同元素5、chunk 数组切分6、compact去除假值7、reject:根据条件删除指定的值8、find:查找结果的第一个值9、filter:…

Machine Learning ---- Multiple linear regression equation

一、Multiple linear regression: In the study of real-world problems, the changes in the dependent variable are often influenced by several important factors. In this case, it is necessary to use two or more influencing factors as independent variables to e…

如何用Selenium通过Xpath,精准定位到“多个相同属性值以及多个相同元素”中的目标属性值

前言 本文是该专栏的第21篇,后面会持续分享python爬虫干货知识,记得关注。 相信很多同学,都有使用selenium来写爬虫项目或者自动化页面操作项目。同样,也相信很多同学在使用selenium来定位目标元素的时候,或多或少遇见到这样的情况,就是用Xpath定位目标元素的时候,页面…

AI系统性学习01- Prompt Engineering

文章目录 面向开发者的Prompt Engineering一、简介二、Prompt设计原则1 环境配置2.两个基本原则2.1 原则1:编写清晰、具体的指令2.1.1 策略一:分割2.1.2 策略2:结构化输出2.1.3 策略3:模型检测2.1.4 策略4:提供示例 2.…

Godot 学习笔记(1):环境配置

文章目录 前言Godot 环境配置相关链接最简单的按钮项目Sence打包最简单的按钮事件 总结 前言 我从小就有个梦想,我想做游戏。虽然我大学的时候选择了计算机,工作也是计算机,但是我一直没有时间去学游戏引擎。原因有二:第一&#…

学习数据结构和算法的第16天

单链表的实现 链表的基本结构 #pragma once #include<stdio.h> #include<stlib.h> typedf int SLTDataType; typedy struct SListNode {SLTDataType data;struct SListNode*next; }SLTNode;void Slisprint(SLTNode*phead); void SListPushBack(SLTNode**pphead,S…