云原生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 来…...
Java函数冷启动优化不是“选配”,而是SLA硬指标!一线大厂SRE团队正在紧急落地的6项Kubernetes调度增强策略
第一章:Java函数冷启动的本质与SLA倒逼机制Java函数冷启动并非单纯“首次加载慢”的表象,而是JVM生命周期、类加载机制、字节码验证、即时编译(JIT)预热及运行时元数据初始化等多层系统行为在无预热上下文下的集中爆发。当Serverl…...
连续使用 OpenClaw 50 天后,我总结了 3 个核心工作流和 5 个血泪教训
🔥 连续使用 OpenClaw 50 天后,我总结了 3 个核心工作流和 5 个血泪教训AI 不会取代你,但会用 AI 的人会取代你——这句话说烂了,但 50 天后我才真正明白它的意思。01 上周五下午 5 点,同事都在加班,我先走…...
ESP8266 AT指令实战:用NodeMCU连接WiFi并发送HTTP请求(2023最新版)
ESP8266 AT指令实战:用NodeMCU连接WiFi并发送HTTP请求(2023最新版) 当你拿起一块NodeMCU开发板时,它可能看起来只是块普通的电路板,但内置的ESP8266芯片让它成为了物联网开发的瑞士军刀。不同于Arduino需要额外WiFi模块…...
深度学习项目训练环境体验:基于专栏的实战环境,快速验证模型
深度学习项目训练环境体验:基于专栏的实战环境,快速验证模型 1. 环境概述与核心价值 深度学习项目开发过程中,环境配置往往是最耗时且最容易出问题的环节。本镜像基于《深度学习项目改进与实战》专栏预置了完整的开发环境,让开发…...
s2-pro语音合成镜像快速上手:5分钟搞定专业级文字转语音
s2-pro语音合成镜像快速上手:5分钟搞定专业级文字转语音 1. 镜像简介与核心功能 s2-pro是Fish Audio开源的专业级语音合成模型镜像,能够将文本转换为自然流畅的语音。这个镜像特别适合需要快速部署文字转语音功能的开发者、内容创作者和企业用户。 1.…...
告别目标跟丢!手把手教你用BoT-SORT和OpenCV GMC搞定复杂场景下的多目标跟踪
告别目标跟丢!手把手教你用BoT-SORT和OpenCV GMC搞定复杂场景下的多目标跟踪 在智能监控和自动驾驶等实际应用中,多目标跟踪(MOT)技术常常面临动态相机和目标快速移动带来的挑战。传统算法在目标遮挡、镜头晃动等复杂场景下容易出…...
EverythingPowerToys自定义程序集成:扩展外部应用打开方式的完整教程
EverythingPowerToys自定义程序集成:扩展外部应用打开方式的完整教程 【免费下载链接】EverythingPowerToys Everything search plugin for PowerToys Run 项目地址: https://gitcode.com/gh_mirrors/ev/EverythingPowerToys EverythingPowerToys是一款强大的…...
Qwen2.5-72B-Instruct-GPTQ-Int4部署教程:vLLM与HuggingFace Transformers对比
Qwen2.5-72B-Instruct-GPTQ-Int4部署教程:vLLM与HuggingFace Transformers对比 1. 模型简介 Qwen2.5-72B-Instruct-GPTQ-Int4是Qwen大语言模型系列的最新版本,具有720亿参数规模。相比前代Qwen2,这个版本在多个方面实现了显著提升ÿ…...
解决语音合成难题:用QWEN-AUDIO实现高质量、带情绪的TTS
解决语音合成难题:用QWEN-AUDIO实现高质量、带情绪的TTS 1. 语音合成的痛点与突破 传统语音合成技术(TTS)长期面临三大难题:机械感强、缺乏情感表现力、定制成本高。许多开发者尝试过开源解决方案,但往往需要复杂的参数调整才能获得勉强可用…...
SenseVoiceSmall实战案例:如何用AI分析会议录音中的情绪变化
SenseVoiceSmall实战案例:如何用AI分析会议录音中的情绪变化 1. 会议录音分析的痛点与解决方案 在日常工作中,会议录音分析一直是个耗时费力的任务。传统方法需要人工反复听取录音,不仅效率低下,还容易遗漏关键信息。特别是会议…...
