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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Adobe Illustrator 2021 for mac/Win:专业矢量图形设计的巅峰之作

Adobe Illustrator 2021作为Adobe公司旗下的旗舰矢量图形设计软件,无论是对于Mac还是Windows用户,都提供了强大而灵活的设计工具,让设计师们能够轻松应对各种复杂的图形设计挑战。这款软件以其卓越的性能、丰富的功能和友好的用户界面&#x…

【正点原子K210连载】第二十章 machine.I2C类实验 摘自【正点原子】DNK210使用指南-CanMV版指南

1)实验平台:正点原子ATK-DNK210开发板 2)平台购买地址https://detail.tmall.com/item.htm?id731866264428 3)全套实验源码手册视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban 第二十章 machine.I2…

java并发编程之美-第1章 并发编程线程基础-线程的创建与运行

文章目录 1.什么是线程2. 线程创建和运行 1.什么是线程 进程是操作系统进行资源分配和调度的基本单位,线程是 CPU 分配的基本单位。 程序计数器用来记录线程当前要执行的指令地址。CPU一般是使用时间片轮转方式让线程轮询占用的,程序计数器是记录线程…

MVC 返回集合方法,以及分页

返回一个数据集方法 返回多个数据集方法 》》定义一个Model public class IndexMoel {public List<UserGroup> UserGroup{get;set;}public List<User> User{get;set;}}》》》控制器 //db 是 EF 中的上下文 var listnew IndexModel(); list.UserGroupdb.UserGro…

Java--static详解

1.static静态的意义&#xff0c;加在属性面前就为静态属性&#xff1b;加在方法面前就为静态方法 2.如图&#xff0c;定义了一个静态属性age&#xff0c;一个非静态属性score&#xff1b; 输出语句一共四句&#xff0c;其中第三句报错&#xff0c;由于静态和非静态的区别&…

EXSI 实用指南 2024 -编译环境 Ubuntu 安装篇(二)

1. 引言 在当今的虚拟化领域&#xff0c;VMware ESXi 是备受推崇的虚拟化平台&#xff0c;广泛应用于企业和个人用户中。它以卓越的性能、稳定的运行环境和丰富的功能&#xff0c;为用户提供了高效的硬件资源管理和简化的 IT 基础设施维护。然而&#xff0c;如何在不同操作系统…

安卓逆向经典案例——XX优品(uniapp)

uni-app逆向 uniapp的目录结构 有一个io文件夹&#xff0c;下面有dcloud uniapp UniApp 可以用于开发 H5 应用&#xff0c;但它不仅仅局限于 H5 应用。UniApp 的特点包括&#xff1a; 1. 跨平台&#xff1a;可以一套代码同时生成适用于多个平台&#xff08;如 iOS、Android、…

【学习笔记】4、组合逻辑电路(上)

数字电路的分类&#xff1a;组合逻辑电路&#xff0c;时序逻辑电路。本章学习组合逻辑电路。 4.1 组合逻辑电路的分析 给定的逻辑电路&#xff0c;确定其逻辑表达式&#xff0c;列出真值表&#xff0c;得到简化后的逻辑表达式&#xff0c;分析得到其功能。 3位奇校验电路 &…

仕考网:公务员考试的录取流程

公务员考试的录取流程分很多个阶段&#xff0c;以下是流程介绍&#xff1a; 1. 报名阶段&#xff1a;考生需根据公布的招聘信息和岗位要求进行报名。 2. 笔试阶段&#xff1a;公务员笔试&#xff0c;包括申论和行测两部分。 3. 成绩公布与面试资格&#xff1a;笔试合格者将获…

什么是期权隐含波动率?期权隐含波动率和历史波动率的区别?

今天带你了解什么是期权隐含波动率&#xff1f;期权隐含波动率和历史波动率的区别&#xff1f;期权波动率反映的是价格波动程度&#xff0c;是对资产收益率不确定性的衡量&#xff0c;通常用标准差表示。 隐含波动率是根据期权市场价格反推出的波动率。它是市场参与者根据期权…

Agents 要点

一、Agents概念 人类是这个星球上最强大的 Agent。Agent是一个能感知并自主地采取行动的实体&#xff0c;这里的自主性极其关键&#xff0c;Agent要能够实现设定的目标&#xff0c;其中包括具备学习和获取知识的能力以提高自身性能。 关键点&#xff1a;感知环境、自主决策、具…

windows中超详细深度学习环境配置之安装显卡驱动、cuda、cudnn、pytorch、torchvision、pycharm

超详细介绍安装Gpu版本的pytorch深度学习环境 一、显卡驱动安装1.1 下载驱动1.2 安装驱动 二、cuda安装2.1 下载cuda2.2 安装cuda2.3 检查cuda是否安装成功 三、安装cudnn3.1 cudnn下载3.2 cudnn安装 四、安装miniconda4.1 miniconda下载4.2 miniconda安装4.3 添加环境变量 五、…

开源模型应用落地-Yi模型小试-Yi-1.5-9B-Chat-16K-入门篇(一)

一、前言 Yi 开源模型是由零一万物公司发布的一系列自然语言和多模态模型。2024年5月13日,零一万物发布了最新的 Yi-1.5系列开源模型,开源了6B/9B/34B的 base 版和 chat 版模型,并第一时间发布在ModelScope、huggingface、 wisemodel 等 AI 开源社区平台。 二、术语 2.1. 零…

无人机之机身保养

一、外观检查 1、检查机器表面整洁无划痕、无针孔凹陷擦伤、畸变等损坏情况&#xff1b; 2、晃动机身&#xff0c;仔细听机身内部有无松动零件或者螺丝在机身内部。 二、桨叶检查 1、有无裂痕、磨损、变形等缺陷&#xff0c;如有明显缺陷建议更换&#xff1b; 2、卡扣、紧…

Figma中文网?比Figma更懂你的神秘网站!

Figma奠定了在线UI设计工具的基本形式&#xff0c;许多国内设计师都在使用Figma。在本文中&#xff0c;我们将解密国内大型设计师使用的Figma灵魂合作伙伴&#xff0c;被称为Figma中文网络的即时设计资源社区。Figma中文网络UI设计工具的魅力是什么&#xff1f;让我们一起看看吧…

基于Java的校园交友网站系统

你好&#xff0c;我是专注于计算机技术研究的学姐码农小野。如果你对校园交友网站系统的构建或者相关技术感兴趣&#xff0c;欢迎私信交流。 开发语言 Java 数据库 MySQL 技术 Java语言、SpringBoot框架、B/S结构 工具 MyEclipse、Navicat、Maven 系统展示 首页 个人…

DID差分模型案例集(传统DID、队列DID、渐近DID、空间DID、PSM-DID)

双重差分&#xff08;DID&#xff09;模型是一种广泛应用于经济学、社会学等领域的统计方法&#xff0c;主要用于评估政策或事件的因果效应。以下是DID模型几个重要变体的简要介绍&#xff1a; 1、传统DID&#xff08;Traditional DID&#xff09;&#xff1a;这是DID模型的基…

使用wxPython和Python-docx创建合同生成器:一个实用的GUI应用程序教程

在当今的商业世界中,合同是不可或缺的。但是,反复修改和生成合同可能会是一个耗时且容易出错的过程。今天,我们将探讨如何使用Python创建一个简单但强大的合同生成器,它不仅可以节省时间,还能减少人为错误。 项目概述 我们将创建一个图形用户界面(GUI)应用程序,允许用户: 选…

Python基础教学之三:函数与模块篇——实现代码重用和模块化

Python基础教学之三&#xff1a;函数与模块篇——实现代码重用和模块化 一、函数的定义与使用 1. 理解函数 函数是组织好的、可重复使用的、用来实现单一或相关联功能的代码块。它可以提高代码的重用性和程序的清晰度。 你可以定义一个由自己想要功能的函数&#xff0c;以下是…

从零写UVC摄像头驱动(一)驱动框架

一、前言 写一个USB摄像头驱动程序1.构造一个usb_driver2.设置video_device probe: 2.1. 分配video_device:video_device_alloc 2.2. 设置 .fops .ioctl_ops (里面需要设置11项) 如果要用内核提供的缓冲区操作函数&#…