kubernetes集群如何更改所有节点IP

news2024/9/28 1:20:32

kubernetes集群如何更改所有节点IP

    • 情景描述
    • 更换IP前的准备工作
    • 更换IP后的工作--master
    • 更换IP后的工作--node节点
    • 重新部署之前那些服务

情景描述

我有三台服务器,想要将其组成了一个kubernetes集群,在部署之前,我就对其进行了固定IP的操作,然后成功的部署好了kubernetes集群,并且在上面部署了我需要的很多应用;
过一段时间后,我需要对这三台服务器的网络进行更改,也就是这三台服务器所在的网络的的网段要更改,那么这几台服务的IP肯定也要更改,直接更改的话,肯定会导致这个kubernetes集群不可用了,那么该如何解决这个问题呢?

假设我原来的网段是192.168.0.0/24,现在需要更改为10.98.99.0/24网段

现在的IP更改后的IP
master192.168.0.4110.98.99.140
node1192.168.0.4210.98.99.141
node2192.168.0.4310.98.99.142

更换IP前的准备工作

经多次测试后发现,pv中的IP地址无法直接更改,IP字段属于不可更改的资源,为了使数据完整,那么必须要将pv删除重构,在pv中指定新的IP;如果需要重构pv,那么涉及的deployment也需要先删除(我这里的pv是删除后依然保留数据的那种模式)

1.截图保留每个pod是工作在哪个节点上的,方便后续恢复(可不做)
2.停掉所有人为创建的服务资源,包括所有服务的deployment、svc、ingress、pvc、pv以及ingress和flannel资源(configmap、secret资源可不删除)

kubectl delete -f XX.yaml

删除完所有的pod后,kubernetes集群应该只剩下以下几个资源(可参考下图)
在这里插入图片描述
3.更换IP地址

更换IP后的工作–master

1.备份要更改的文件,在更改每个配置文件前,最好先备份

cp /etc/hosts{,.bak}
cp -r /etc/kubernetes{,.bak}
cp -r ~/.kube{,.bak}

2.更改/etc/hosts文件,将master跟node指向新的IP地址
3.更改/etc/kubernetes中master的IP

cd /etc/kubernetes
oldip=192.168.0.41
newip=10.98.99.140
#查看之前的IP
find . -type f | xargs grep $oldip
#更改为新的IP
find . -type f | xargs sed -i "s/$oldip/$newip/"
#查看新的IP
find . -type f | xargs grep $newip

4.更新/etc/kubernetes/pki涉及到旧IP的证书(不同证书涉及到旧IP证书不会完全相同,需要实际查看)

cd /etc/kubernetes/pki
#使用OpenSSL查看证书的详细信息,里面会涉及到IP,然后保存为同名的txt文件
for f in $(find -name "*.crt"); do   openssl x509 -in $f -text -noout > $f.txt; done
#查看/etc/kubernetes/pki目录下包括旧IP的证书(这里很重要),后续删除证书就是删除这里过滤出来的证书
grep -Rl $oldip .
#过滤出来的内容为: ./etcd/peer.crt.txt  ./etcd/server.crt.txt   ./apiserver.crt.txt
#删除txt文件
for f in $(find -name "*.crt"); do rm $f.txt; done
#删除过滤出来的包含旧IP的证书并且重新生成
rm apiserver.crt apiserver.key etcd/peer.key etcd/peer.crt etcd/server.crt etcd/server.key
kubeadm init phase certs apiserver
kubeadm init phase certs etcd-peer
kubeadm init phase certs etcd-server

5.重新生成kubeconfig文件,将原来配置文件中涉及到新增的地方添加过来(主要是/etc/kubernetes.bak/manifests/kube-apiserver.yaml)

cd /etc/kubernetes
rm -f admin.conf kubelet.conf controller-manager.conf scheduler.conf
kubeadm init phase kubeconfig all
#覆盖默认的配置文件
cp /etc/kubernetes/admin.conf $HOME/.kube/config
#此时kubectl命令已经可以使用了,刚刚更换IP的时候kubectl命令不可用

6.修改configmap里面涉及到旧IP的为新IP

kubectl edit cm kube-proxy -n kube-system
kubectl edit cm cluster-info -n kube-public

7.重启docker和kubelet

systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet

8.删除node
因为node节点更改IP后涉及到证书问题,比较麻烦,所以我这里直接将node节点先delete,然后重新加入,那么证书也会重新从master节点签发过去,比较简单

kubectl delete node node1
kubectl delete node node2

更换IP后的工作–node节点

1.备份要更改的文件,在更改每个配置文件前,最好先备份

cp /etc/hosts{,.bak}
cp -r /etc/kubernetes{,.bak}
cp -r /var/lib/kubelet{,.bak}

2.更改/etc/hosts文件,将master跟node指向新的IP地址
3.重置kubernetes配置

kubeadm reset -f

4.重启服务器

reboot

5.重新加入master节点所在的kubernetes集群(因为node节点的证书问题处理起来有点麻烦,所以直接重新加入简单点)

#先在master节点生成加入口令
kubeadm token create --print-join-command
#在node节点上执行kuberadm join命令
kubeadm join 10.98.99.140:6443 --token ne2dbu.74etnc2273wx6ysg --discovery-token-ca-cert-hash sha256:bd373617bc307f5192cb38ab0d0ccd261d95d6aa4c64a97d4c1acf1f7ffa02cd 

重新部署之前那些服务

1.先重启master服务器,再部署服务

reboot

2.在重新部署服务之前,需要先部署ingress以及flannel,待这两个没问题了再apply服务
3.需要先重新部署一个默认的storageclass,部署storageclass
4.重新apply服务,顺序为pv–pvc–deployment–svc–ingress,记得,部署每个服务前都需要修改pv.yaml中的IP地址

cd /k8s
oldip=192.168.0.41
newip=10.98.99.140
#查看之前的IP
find . -type f | xargs grep $oldip
#更改为新的IP
find . -type f | xargs sed -i "s/$oldip/$newip/"
#查看新的IP
find . -type f | xargs grep $newip

参考链接:https://cloud.tencent.com/developer/article/2008321?pos=comment

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

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

相关文章

使用OpencvSharp实现人脸识别

在网上有很多关于这方面的博客,但是都没有说完整,按照他们的博客做下来代码都不能跑。所以我就自己写个博客补充一下 我这使用的.NET框架版本是 .NetFramework4.7.1 使用Nuget安装这两个程序包就够了,不需要其他的配置 一定要安装OpenCvSha…

不可不看,年轻人必须丢掉的10条幼稚职场心理

点击上方△腾阳 关注 转载请联系授权 你好,我是腾阳。 初入职场,每位年轻人都怀揣着梦想与憧憬,但往往也伴随着一些“成长的烦恼”。 那些不经意间流露出的幼稚心理,如果不及时察觉并调整,可能会成为你职业道路上的…

记一次 Qt installer framework安装程序过程中 安装驱动依赖

在installscript.qs 文件中该函数添加exe 依赖程序放置位置

深视智能3d相机SDK例程开发模式和相机控制器类

一、二次开发介绍 为了应对客户的多种需求,我们提供了多种模式可供选择,客户可根据自己的需求灵活使用。本司提供的例程包含的模式包括一次回调模式,阻塞模式,无限循环模式,2.5D模式。 1.一次回调模式 一次回调模式:设定采集行数<=15000,一次性将采集的数据全部返回…

JVM:字节码文件

文章目录 一、Java虚拟机的组成二、字节码文件的组成1、基本信息2、常量池3、字段4、方法5、属性 三、常用的字节码工具1、javap -v 命令2、jclasslib插件3、阿里arthas 一、Java虚拟机的组成 二、字节码文件的组成 1、基本信息 魔数、字节码文件对应的Java版本号访问标识&am…

STM32-按键及传感器模块

本内容是基于江协科技STM32视频整理而得。 1. 按键及传感器模块 1.1 按键简介 按键&#xff1a;常见的输入设备&#xff0c;按下导通&#xff0c;松手断开&#xff1b; 按键抖动&#xff1a;由于按键内部使用的是机械式弹簧片来进行通断的&#xff0c;所以在按下和松手的瞬间…

大模型性能测试报告

性能测试背景 满足大模型在初期1万用户的正常使用 性能测试名词解释 术语 释义 VU 并发用户数 RT 响应时间 TPS 吞吐量的一种&#xff0c;指每秒处理的事务数&#xff0c;每个事务可以是一个接口或者多个接口 QPS 吞吐量的一种,指每秒服务器处理的请求数量&#xff…

HTML5新增的input元素属性:placeholder、required、autofocus、min、max等

HTML5 大幅度地增加与改良了 input 元素的属性&#xff0c;可以简单地使用这些属性来实现 HTML5 之前需要使用 JavaScript 才能实现的许多功能。 下面将详细介绍这些新增的 input 元素的属性。 属性说明属性说明placeholder在输入框显示描述性或提示性文本list为文本框添加选…

摸鱼大数据——Spark SQL——Spark SQL函数定义一

Spark SQL函数定义 1、窗口函数 回顾之前学习过的窗口函数&#xff1a; 分析函数 over(partition by xxx order by xxx [asc|desc] [rows between xxx and xxx])​分析函数可以大致分成如下3类&#xff1a;1- 第一类: 聚合函数 sum() count() avg() max() min()2- 第二类: 排…

Python酷库之旅-第三方库Pandas(011)

目录 一、用法精讲 25、pandas.HDFStore.get函数 25-1、语法 25-2、参数 25-3、功能 25-4、返回值 25-5、说明 25-6、用法 25-6-1、数据准备 25-6-2、代码示例 25-6-3、结果输出 26、pandas.HDFStore.select函数 26-1、语法 26-2、参数 26-3、功能 26-4、返回值…

3D模型格式转换工具HOOPS Exchange如何访问产品制造信息(PMI)?

在当今的制造和设计领域&#xff0c;产品制造信息&#xff08;PMI&#xff09;在确保零件和产品满足精确规格方面发挥着至关重要的作用。PMI&#xff0c;特别是几何尺寸和公差&#xff08;GD&T&#xff09;&#xff0c;提供了制造过程中必须遵循的详细指导。 随着技术的进…

centos7停服之后换阿里云的源

原因&#xff1a; Centos7停止维护 CentOS 7 官方支持在2024年6月30日结束。如果您正在使用CentOS 7&#xff0c;建议迁移到另一个仍在维护的Linux发行版&#xff0c;如CentOS Stream、AlmaLinux、Rocky Linux或者转换到使用Debian或Ubuntu。国产的华为的&#xff1a;openEule…

数据恢复篇:如何从硬盘中恢复照片

如何从计算机硬盘恢复图片&#xff1f; 和所有电子和机械设备一样&#xff0c;硬盘也可能因任何原因而损坏。如果您系统的硬盘停止工作&#xff0c;或者您在启动系统时听到振动声&#xff0c;则硬盘可能已损坏。如果是这样&#xff0c;硬盘上的数据怎么办&#xff1f; 不要惊…

Python开源工具库使用之离线翻译软件Argos-Translate

文章目录 一、软件介绍二、软件使用2.1 命令行使用2.2 Python代码调用2.3 GUI使用 三、软件获取 一、软件介绍 Argos-Translate 是一款基于 OpenNMT&#xff08;Open source Neural Machine Translation&#xff09;的离线翻译库&#xff0c;不需要联网就可以实现翻译功能&…

唐山养老院哪家好---养老!用哪种方式更合适?

人生旅途中&#xff0c;每个阶段都伴随着不同的挑战和难题。老年阶段尤其如此&#xff0c;随着岁月的流逝&#xff0c;人的身体机能逐渐衰退&#xff0c;自理能力也会随之减弱。面对这些挑战&#xff0c;老人及其家属需要找到合适的方法来保证老年的生活质量。 居家养老 在中…

7月学术会议:7月可投的EI国际会议

随着科技的迅猛发展&#xff0c;学术交流与研讨成为了推动科研进步的重要途径。进入7月&#xff0c;众多高质量的EI国际会议纷纷拉开帷幕&#xff0c;为全球的科研工作者提供了一个展示研究成果、交流学术思想的平台。以下&#xff0c;我们将详细介绍一些在7月可投的EI国际会议…

暑假提升(3)[平衡二叉树之二--红黑树]

命为志存。 —— 朱熹 红黑树RBTree 1、诞生原因2、红黑树的概念3、红黑树的性质4、红黑树的设计4、1、节点设计4、2、插入操作的设计 5、总结 1、诞生原因 由于二叉树的局限性&#xff0c;进一步出现平衡二叉树&#xff0c;来帮助我们来进一步提升我们对数据的处理&#xff0…

模电基础 - 信号的运算和处理

目录 一. 简介 二. 加法 三. 减法 四. 乘法 五. 除法 六. 总结 一. 简介 在模电基础中&#xff0c;信号的运算和处理是非常重要的内容。 信号的运算包括加法、减法、乘法、除法等。通过使用集成运放&#xff0c;可以很容易地实现这些运算。例如&#xff0c;利用反相输入…

【工具分享】I-Wanna-Get-All——主流OA漏洞检测利用工具

声明&#xff1a;本文档或演示材料仅供教育和教学目的使用&#xff0c;任何个人或组织使用本文档中的信息进行非法活动&#xff0c;均与本文档的作者或发布者无关。 文章目录 I-Wanna-Get-All安装方式功能介绍 GitHub项目地址&#xff1a;https://github.com/R4gd0ll/I-Wanna-G…

如何使用HTML和JavaScript读取文件夹中的所有图片并显示RGB范围

如何使用HTML和JavaScript读取文件夹中的所有图片并显示RGB范围 在这篇博客中&#xff0c;我将介绍如何使用HTML和JavaScript读取文件夹中的所有图片&#xff0c;并显示这些图片以及它们的RGB范围。这个项目使用现代浏览器提供的<input type"file" webkitdirecto…