云原生Kubernetes:K8S集群实现容器运行时迁移(docker → containerd) 与 版本升级(v1.23.14 → v1.24.1)
目录
一、理论
1.K8S集群升级
2.环境
3.升级策略
4.master1节点迁移容器运行时(docker → containerd)
5.master2节点迁移容器运行时(docker → containerd)
6.node1节点容器运行时迁移(docker → containerd)
7.升级集群计划(v1.23.14 → v1.24.1)
8.升级master1节点版本(v1.24.1)
9.升级master2节点版本(v1.24.1)
10.升级node1节点版本(v1.24.1)
11.验证集群(v1.24.1)
二、实验
1. 环境
2.master1节点迁移容器运行时(docker → containerd)
3.master2节点迁移容器运行时(docker → containerd)
4.node1节点迁移容器运行时(docker → containerd)
5.升级集群计划(v1.23.14 → v1.24.1)
6.升级master1节点版本(v1.24.1)
7.升级 master2节点版本(v1.24.1)
8.升级 node1节点版本(v1.24.1)
9.验证集群(v1.24.1)
一、理论
1.K8S集群升级
(1)概念
搭建K8S集群的方式有很多种,比如二进制,kubeadm,RKE(Rancher)等,K8S集群升级方式也各有千秋,目前准备使用kubeadm方式搭建的k8s集群升级方法。
需要注意的是,升级集群版本建议逐步升级,比如v1.21.1–>v1.22.1–>v1.23.1–>v1.24.1,不能跨度过大,否则会报错。
2.环境
(1)主机(容器运行时)
表1 主机(容器运行时)
主机 | 架构 | 当前容器运行时 | 目标容器运行时 | IP |
---|---|---|---|---|
master1 | K8S master节点 | docker 20.10.6 | containerd 1.6.24 | 192.168.204.180 |
master2 | K8S master节点 | docker 20.10.6 | containerd 1.6.24 | 192.168.204.181 |
node1 | K8S node节点 | docker 20.10.6 | containerd 1.6.24 | 192.168.204.182 |
(2)主机 (集群版本)
表2 主机(集群版本)
主机 | 架构 | 当前版本 | 目标版本 | IP |
---|---|---|---|---|
master1 | K8S master节点 | v1.23.14 | v1.24.1 | 192.168.204.180 |
master2 | K8S master节点 | v1.23.14 | v1.24.1 | 192.168.204.181 |
node1 | K8S node节点 | v1.23.14 | v1.24.1 | 192.168.204.182 |
3.升级策略
(1)升级策略1
先迁移容器运行时为containerd:
docker → containerd
(2)升级策略2
然后升级集群版本到v1.24.1:
v1.23.14 → v1.24.1
4.master1节点迁移容器运行时(docker → containerd)
(1)确定迁移容器运行时
可以看到目前的容器运行时是docker 20.10.6。
kubectl get nodes -owide #查看容器运行时
(2)迁移master1
kubectl drain master1 --delete-emptydir-data --force --ignore-daemonsets #对k8s控制节点xianchaomaster1进行drain
(3)关闭并卸载Docker
systemctl disable docker --now #先启动dockeryum remove docker-ce docker-ce-cli -y #卸载
(4)安装并配置containerd
yum install containerd.io cri-tools -y # 安装crictl config runtime-endpoint unix:///var/run/containerd/containerd.sockcontainerd config default > /etc/containerd/config.toml #生成配置文件vim /etc/containerd/config.toml #使用vim编辑器打开,分别搜素mirrors、sandbox、SystemdCgroup并修改
(5)重启containerd服务
systemctl enable containerd ; systemctl restart containerd # 重启systemctl status containerd # 查看服务状态
(6)配置并启动kubelet
vim /etc/sysconfig/kubelet #设置kubelet启动参数systemctl restart kubelet #重启kubelet服务
(7)对master节点进行uncordon
kubectl uncordon master1 #解除维护
(8)验证
kubectl get nodes -owide #验证是否把容器运行时由docker迁移到containerd
5.master2节点迁移容器运行时(docker → containerd)
(1)确定迁移容器运行时
可以看到目前的容器运行时是docker 20.10.6。
kubectl get nodes -owide #查看容器运行时
(2)迁移master2
kubectl drain master2 --delete-emptydir-data --force --ignore-daemonsets #对k8s控制节点xianchaomaster1进行drain
(3)关闭并卸载Docker
systemctl disable docker --now #先启动dockeryum remove docker-ce docker-ce-cli -y #卸载
(4)安装并配置containerd
yum install containerd.io cri-tools -y # 安装crictl config runtime-endpoint unix:///var/run/containerd/containerd.sockcontainerd config default > /etc/containerd/config.toml #生成配置文件vim /etc/containerd/config.toml #使用vim编辑器打开,分别搜素mirrors、sandbox、SystemdCgroup并修改
(5)重启containerd服务
systemctl enable containerd ; systemctl restart containerd # 重启systemctl status containerd # 查看服务状态
(6)配置并启动kubelet
vim /etc/sysconfig/kubelet #设置kubelet启动参数systemctl restart kubelet #重启kubelet服务
(7)对master2节点进行uncordon
kubectl uncordon master2 #解除维护
(8)验证
kubectl get nodes -owide #验证是否把容器运行时由docker迁移到containerd
6.node1节点容器运行时迁移(docker → containerd)
(1) 迁移node1节点
kubectl drain node1 --delete-emptydir-data --force --ignore-daemonsets #对k8s工作节点xianchaonode1进行drain
(2)关闭并卸载Docker
systemctl disable docker --now # 关闭yum remove docker-ce docker-ce-cli -y # 卸载
(3)安装并配置containerd
yum install containerd.io cri-tools -y #安装crictl config runtime-endpoint unix:///var/run/containerd/containerd.sock # 配置containerd config default > /etc/containerd/config.toml #生成配置文件vim /etc/containerd/config.toml #使用vim编辑器打开,分别搜素mirrors、sandbox、SystemdCgroup并修改
(4)重启containerd服务
systemctl enable containerd ; systemctl restart containerd # 重启
(5)配置并启动kubelet
vim /etc/sysconfig/kubelet #设置kubelet启动参数systemctl restart kubelet #重启kubelet服务kubectl get nodes -owide #查看pod
(6)对node1节点进行uncordon
kubectl uncordon node1 #解除维护
(7)验证
kubectl get nodes -owide #验证是否把容器运行时由docker迁移到containerd
(8)查看
kubectl get pods -n kube-system #查看集群
7.升级集群计划(v1.23.14 → v1.24.1)
(1)查看集群
kubectl get nodes -owide # 查看集群版本
(2)修改master1节点kubelet参数
kubectl edit nodes master1 #修改systemctl restart kubelet #重启
(3)修改master2节点kubelet参数
kubectl edit nodes master2 #修改systemctl restart kubelet #重启
(4)修改node1节点kubelet参数
kubectl edit nodes node1 #修改systemctl restart kubelet #重启
(5)确定升级版本
# 执行如下命令确定升级版本
yum list --showduplicates kubeadm --disableexcludes=kubernetes
我的目标版本是1.24.1-0。
8.升级master1节点版本(v1.24.1)
(1)在k8s控制节点master1安装kubeadm1.24.1
yum install -y kubeadm-1.24.1-0 --disableexcludes=kubernetes
(2)腾空控制节点master1
kubectl drain master1 --delete-emptydir-data --force --ignore-daemonsets
(3)升级控制节点master1各个组件
kubeadm upgrade apply v1.24.1
(4)升级kubectl和kubelet到1.24.1
yum install -y kubelet-1.24.1-0 kubectl-1.24.1-0 --disableexcludes=kubernetes
(5)修改kubelet参数
vim /var/lib/kubelet/kubeadm-flags.env
(6)重启kubelet
systemctl daemon-reload; systemctl restart kubelet
(7)解除master1的节点维护
kubectl uncordon master1
(8)查看节点状态
kubectl get nodes
9.升级master2节点版本(v1.24.1)
(1)在k8s控制节点master1安装kubeadm1.24.1
yum install -y kubeadm-1.24.1-0 --disableexcludes=kubernetes
(2)腾空控制节点master1
kubectl drain master2 --delete-emptydir-data --force --ignore-daemonsets
(3)升级控制节点master1各个组件
kubeadm upgrade apply v1.24.1
(4)升级kubectl和kubelet到1.24.1
yum install -y kubelet-1.24.1-0 kubectl-1.24.1-0 --disableexcludes=kubernetes
(5)修改kubelet参数
vim /var/lib/kubelet/kubeadm-flags.env
(6)重启kubelet
systemctl daemon-reload; systemctl restart kubelet
(7)解除master1的节点维护
kubectl uncordon master2
(8)查看节点状态
kubectl get nodes
10.升级node1节点版本(v1.24.1)
(1)在k8s工作节点node1安装kubeadm1.24.1
yum install -y kubeadm-1.24.1-0 --disableexcludes=kubernetes
(2)腾空控制节点master1
kubectl drain node1 --delete-emptydir-data --force --ignore-daemonsets
(3)升级node1上的kubelet
kubeadm upgrade node
(4)修改kubelet参数
vim /var/lib/kubelet/kubeadm-flags.env
(5)升级kubelet和kubectl
yum install -y kubelet-1.24.1-0 kubectl-1.24.1-0 --disableexcludes=kubernetes
(6)重启kubelet
systemctl daemon-reload; systemctl restart kubelet
(7)解除node11的节点维护
kubectl uncordon node1
11.验证集群(v1.24.1)
(1)验证集群状态是否正常
kubectl get nodes# 结果如下:
[root@master1 ~]# kubectl get nodes
版本均已升级到 v1.24.1。
(2) 查看集群服务状态
kubectl get pods -n kube-system
二、实验
1. 环境
(1)主机(容器运行时)
表1 主机(容器运行时)
主机 | 架构 | 当前容器运行时 | 目标容器运行时 | IP |
---|---|---|---|---|
master1 | K8S master节点 | docker 20.10.6 | containerd 1.6.24 | 192.168.204.180 |
master2 | K8S master节点 | docker 20.10.6 | containerd 1.6.24 | 192.168.204.181 |
node1 | K8S node节点 | docker 20.10.6 | containerd 1.6.24 | 192.168.204.182 |
(2)主机 (集群版本)
表2 主机(集群版本)
主机 | 架构 | 当前版本 | 目标版本 | IP |
---|---|---|---|---|
master1 | K8S master节点 | v1.23.14 | v1.24.14 | 192.168.204.180 |
master2 | K8S master节点 | v1.24.14 | v1.24.14 | 192.168.204.181 |
node1 | K8S node节点 | v1.24.14 | v1.24.14 | 192.168.204.182 |
2.master1节点迁移容器运行时(docker → containerd)
(1)确定迁移容器运行时
可以看到目前的容器运行时是docker 20.10.6。
(2)迁移master1
(3)关闭并卸载Docker
先启动docker,再卸载
(4)安装并配置containerd
① 安装
② 生成配置文件
③ 使用vim编辑器打开
④第一步:搜素mirrors,并修改(原来一行变三行)
修改前:
修改后:
⑤ 第二步:搜索sandbox,并修改。
修改前:
修改后:
⑥ 第三步:搜索SystemdCgroup,并修改。
修改前:
修改后:
(5)重启containerd服务
① 重启
②查看服务
(6)配置并启动kubelet
① 设置
②修改
③ 重启kubelet服务
④这时查看pod,master1为SchedulingDisabled,容器运行时还未更新
(7)对master1节点进行uncordon
(8)验证(此时master1可以调度)
3.master2节点迁移容器运行时(docker → containerd)
(1)迁移master2
(2)关闭并卸载Docker
先启动
卸载
(4)安装并配置containerd
① 安装
② ⑩配置
③ 生成配置文件
④ 使用vim编辑器打开
⑤第一步:搜素mirrors,并修改(原来一行变三行)
⑥第二步:搜索sandbox,并修改。
⑦ 第三步:搜索SystemdCgroup,并修改。
(5)重启containerd服务
① 重启
② 查看服务
(6)配置并启动kubelet
①设置
② 修改
③ 重启
④ 这时查看pod,master2为SchedulingDisabled,容器运行时已更新
(7)对master2节点进行uncordon
(8)验证(此时master2可以调度)
4.node1节点迁移容器运行时(docker → containerd)
(1) 迁移node1节点
(2)关闭并卸载Docker
关闭并卸载
(3)安装并配置containerd
① 安装
② 配置
③生成配置文件
④ 使用vim编辑器打开
⑤ 第一步:搜素mirrors,并修改(原来一行变三行)。
⑥第二步:搜索sandbox,并修改。
⑦ 第三步:搜索SystemdCgroup,并修改。
(4)重启containerd服务
① 重启
② 查看服务
(5)配置并启动kubelet
① 设置
② 这时查看pod,node1为SchedulingDisabled,容器运行时已更新
(6)对node节点进行uncordon
(7)验证 (此时node1可以调度)
(8)查看
5.升级集群计划(v1.23.14 → v1.24.1)
(1)确定升级版本
可以看到目前的版本是v1.23.14。
(2)修改节点kubelet参数(在runtime由docker迁移到containerd之后做)
①修改master1节点
修改前:
修改后:
②重启
③修改master2节点
修改前:
修改后:
④重启
⑤修改node1节点
修改前:
修改后:
④重启
(3)确定升级计划
执行如下命令确定升级版本
我的目标版本是1.24.1-0。
6.升级master1节点版本(v1.24.1)
(1)在k8s控制节点master1安装kubeadm1.24.1
(2)腾空控制节点master1
(3)升级控制节点master1各个组件
成功
(4)升级kubectl和kubelet到1.24.1
(5)修改kubelet参数
修改前:
修改后:
(6)重启kubelet
(7)解除master1的节点维护
(8)查看节点状态(master1已升级为v1.24.1)
7.升级 master2节点版本(v1.24.1)
(1)在k8s控制节点master2安装kubeadm1.24.1
(2)腾空控制节点master2
(3)升级master2节点
成功:
(4)升级kubectl和kubelet到1.24.1
(5)修改kubelet参数
修改前:
修改后:
(6)重启kubelet
(7)查看节点状态(master1和master2都已升级为v1.24.1)
8.升级 node1节点版本(v1.24.1)
(1)在node1节点上安装kubeadm 1.24.1
(2)腾空节点node1(驱逐node1的pod)
(3)升级node1上的kubelet
(4)修改kubelet变量
修改前:
修改后:
(5)升级kubelet和kubectl
(6)解除对node1的保护
9.验证集群(v1.24.1)
(1)验证集群状态是否正常
版本均已升级到 v1.24.1。
(2) 查看集群服务状态
相关文章:

云原生Kubernetes:K8S集群实现容器运行时迁移(docker → containerd) 与 版本升级(v1.23.14 → v1.24.1)
目录 一、理论 1.K8S集群升级 2.环境 3.升级策略 4.master1节点迁移容器运行时(docker → containerd) 5.master2节点迁移容器运行时(docker → containerd) 6.node1节点容器运行时迁移(docker → containerd) 7.升级集群计划(v1.23.14 → v1.24.1&#…...

Redis 数据结构和常用命令
* 代表多个,?代表一个 (不用全部敲出来,按住tab可以自动补全) -2是无效,-1是永久有效 ;贴心小提示:内存非常宝贵,对于一些数据,我们应当给他一些过期时间&a…...

Docker 容器命令总汇
目录 1、创建Docker容器(不启动) 2、创建Docker容器(启动) 3、列出正在运行的容器 4、停止和启动容器 5、重启容器 6、进入容器 7、查看容器信息 8、查看容器日志 9、删除容器和镜像 10、重命名容器 11、从旧容器复制数…...

react + redux 之 美团案例
1.案例展示 2.环境搭建 克隆项目到本地(内置了基础静态组件和模版) git clone http://git.itcast.cn/heimaqianduan/redux-meituan.git 安装所有依赖 npm i 启动mock服务(内置了json-server) npm run serve 启动前端服务 npm…...

【形式语言与自动机/编译原理】CFG-->Greibach-->NPDA(2)
本文将详细讲解《形式语言与自动机》(研究生课程)或《编译原理》(本科生课程)中的上下文无关文法(CFG)转换成Greibach范式,再转成下推自动机(NPDA)识别语言是否可以被接受…...

14.用户管理
目录 1、权限表 1、user表 1.用户列 2.权限列 3.安全列 4.资源控制列 2、db表和host 表 1.用户列 2.权限列 3. tables_priv 表和 columns _priv 表 4.procs_priv 表 2、账户管理 1. 登录和退出MySQL服务器 2、创建普通用户: 1.使用CREATE USER语创建…...

【交叉编译环境】安装arm-linux交叉编译环境到虚拟机教程(简洁版本)
就是看到了好些教程有些繁琐,我就写了一个 我这个解压安装的交叉编译环境是Linaro GCC的一个版本,可以用于在x86_64的主机上编译arm-linux-gnueabihf的目标代码 步骤来了 在你的Ubuntu系统中创建一个目录,例如/usr/local/arm,然后…...

感染了后缀为.[sqlback@memeware.net].2700勒索病毒如何应对?数据能够恢复吗?
导言: 近期,[sqlbackmemeware.net].2700 勒索病毒成为网络安全的一大威胁。该勒索病毒采用高度复杂的加密算法,将用户文件加密并勒索赎金。了解该病毒的特征对于有效恢复被加密数据以及预防进一步感染至关重要。如果受感染的数据确实有恢复的…...

[Linux开发工具]——vim使用
Linux编辑器——vim的使用 一、什么是集成开发环境?二、什么是vim?三、vim的概念四、vim的基本操作五、vim命令模式命令集5.1 移动光标5.2 删除文字5.3 复制粘贴5.4 其他操作 六、vim底行模式命令集6.1 首先在命令模式下shift;进入末行模式。…...

【教学类-43-11】 20231231 3*3宫格数独提取单元格坐标数字的通用模板(做成2*2=4套、3*2=6套)
背景需求: 1、以前做单元格填充,都是制作N个分开的单元格 (表格8) 2、这次做五宫格数独的Word模板,我图方便,就只用了一个大表格,第六行第六列隐藏框线,看上去就是分开的ÿ…...

Spring Boot日志:从Logger到@Slf4j的探秘
写在前面 Hello大家好,今日是2024年的第一天,祝大家元旦快乐🎉 2024第一篇文章从SpringBoot日志开始 文章目录 一、前言二、日志有什么用?三、日志怎么用?四、自定义日志打印💬 常见日志框架说明4.1 在程序…...

英飞凌TC3xx之一起认识GTM系列(六)如何实现GTM与VADC关联的配置
英飞凌TC3xx之一起认识GTM系列(六)如何实现GTM与VADC关联的配置 1 GTM与ADC的接口2 GTM与VADC的连接2.1 VADC 到 GTM 的连接2.1.1 简要介绍2.1.2 应用举例2.2 EVADC到 GTM的连接2.2.1 应用举例3 总结本文介绍实现GTM与VADC的连接性的相关寄存器配置。 1 GTM与ADC的接口 由英…...

【基础】【Python网络爬虫】【6.数据持久化】Excel、Json、Csv 数据保存(附大量案例代码)(建议收藏)
Python网络爬虫基础 数据持久化(数据保存)1. Excel创建数据表批量数据写入读取表格数据案例 - 豆瓣保存 Excel案例 - 网易新闻Excel保存 2. Json数据序列化和反序列化中文指定案例 - 豆瓣保存Json案例 - Json保存 3. Csv写入csv列表数据案例 - 豆瓣列表保…...

王道考研计算机网络——应用层
如何为用户提供服务? CS/P2P 提高域名解析的速度:local name server高速缓存:直接地址映射/低级的域名服务器的地址 本机也有告诉缓存:本机开机的时候从本地域名服务器当中下载域名和地址的对应数据库,放到本地的高…...

Android MVVM 写法
前言 Model:负责数据逻辑 View:负责视图逻辑 ViewModel:负责业务逻辑 持有关系: 1、ViewModel 持有 View 2、ViewModel 持有 Model 3、Model 持有 ViewModel 辅助工具:DataBinding 执行流程:View &g…...

LeetCode 热题 100——283. 移动零
283. 移动零 提示 简单 2.3K 相关企业 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,…...

neovim调试xv6-riscv过程中索引不到对应头文件问题
大家好,我叫徐锦桐,个人博客地址为www.xujintong.com,github地址为https://github.com/jintongxu。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家访问。 和这篇文章neovim调试linux内核过程中索…...

轻量应用服务器与云服务器CVM对比——腾讯云
腾讯云轻量服务器和云服务器CVM该怎么选?不差钱选云服务器CVM,追求性价比选择轻量应用服务器,轻量真优惠呀,活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三…...

骑砍战团MOD开发(31)-游戏AI控制
一.骑砍单机模式下AI控制 骑砍战团中野外战斗,训练场中小兵和地方小兵的行为统称为场景AI. 骑砍大地图中敌军追踪和遭遇追击统称为大地图AI. 二.骑砍场景AI 骑砍引擎通过header_mission_templates,py定制AI常量控制小兵位置,动作和朝向.可实现自定义阵型和攻击动作。 # Agen…...

flutter学习-day21-使用permission_handler进行系统权限的申请和操作
文章目录 1. 介绍2. 环境准备2-1. Android2-2. iOS 3. 使用 1. 介绍 在大多数操作系统上,权限不是在安装时才授予应用程序的。相反,开发人员必须在应用程序运行时请求用户的许可。在 flutter 开发中,则需要一个跨平台(iOS, Android)的 API 来…...

虹科方案丨L2进阶L3,数据采集如何助力自动驾驶
来源:康谋自动驾驶 虹科方案丨L2进阶L3,数据采集如何助力自动驾驶 原文链接:https://mp.weixin.qq.com/s/qhWy11x_-b5VmBt86r4OdQ 欢迎关注虹科,为您提供最新资讯! 12月14日,宝马集团宣布,搭载…...

Kubernetes 学习总结(42)—— Kubernetes 之 pod 健康检查详解
Kubernetes 入门 回想 2017 年刚开始接触 Kubernetes 时,碰到 Pod一直起不来的情况,就开始抓瞎。后来渐渐地掌握了一些排查方法之后,这种情况才得以缓解。随着时间推移,又碰到了问题。有一天在部署某个 springboot 微服务时&…...

【后端】Docker学习笔记
文章目录 Docker一、Docker安装(Linux)二、Docker概念三、Docker常用命令四、数据卷五、自定义镜像六、网络七、DockerCompose Docker Docker是一个开源平台,主要基于Go语言构建,它使开发者能够将应用程序及其依赖项打包到一个轻…...

UE5.1_Gameplay Debugger启用
UE5.1_Gameplay Debugger启用 重点问题: Gamplay Debugger启用不知道? Apostrophe、Tilde键不知道是哪个? Gameplay调试程序 | 虚幻引擎文档 (unrealengine.com) Gameplay Debugger...

【论文阅读+复现】SparseCtrl: Adding Sparse Controls to Text-to-Video Diffusion Models
SparseCtrl:在文本到视频扩散模型中添加稀疏控制。 (AnimateDiff V3,官方版AnimateDiffControlNet,效果很丝滑) code:GitHub - guoyww/AnimateDiff: Official implementation of AnimateDiff. paper:htt…...

速盾cdn:ddos防护手段
速盾CDN采用多种手段来进行DDoS防护,以确保网络和网站的正常运行。以下是速盾CDN可能采用的一些主要DDoS防护手段: 实时监测和分析: 速盾CDN实时监测网络流量,通过分析流量模式来检测异常行为,以迅速发现潜在的DDoS攻击…...

STL——queue容器
1.queue基本概念 概念:queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口。 队列容器允许从一端新增元素,从另一端移除元素。 队列中只有队头和队尾才可以被外界使用,因此队列不允许…...

gitLab页面打tag操作步骤
作者:moical 链接:gitLab页面打tag简单使用 - 掘金 (juejin.cn) 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 ---------------------------------------------------------------------…...

神秘的Cookie和Session
Cookie 1.Cookie是什么? Cookie是浏览器提供的持久化储存数据的方式。 2.从哪里来? Cookie从服务器中来,存储到客户端中。一个客户端就对应着一个浏览器。 服务器代码中决定了什么样的数据会储存到客户端中,通过HTTP相应的Se…...

springboot接口文档
Swagger 在Spring Boot中生成和维护接口文档的一个常用方法是使用Swagger。Swagger是一个开源软件框架,它帮助开发者设计、构建、记录和使用RESTful Web服务。下面是在Spring Boot项目中使用Swagger来创建接口文档的详细步骤:1. 添加Swagger依赖 在你的Spring Boot项目的pom…...