搭建NFS服务器,部署k8s集群,并在k8s中使用NFS作为持久化储存

🐇明明跟你说过:个人主页

🏅个人专栏:《Kubernetes航线图:从船长到K8s掌舵者》 🏅

🔖行路有良友,便是天堂🔖

目录

一、前言

1、k8s概述

2、NFS简介

二、NFS服务器搭建

1、准备NFS 服务器

2、搭建NFS服务

三、安装k8s集群

1、环境准备

2、禁用防火墙和SELinux

3、设置时间同步 

4、关闭swap交换分区 

5、修改hosts文件

6、修改机器内核参数

7、配置阿里repo源

8、安装container

9、修改containerd配置文件

10、设置container开机自启动

11、设置服务的端点地址

12、安装docker

13、添加docker镜像加速器

14、配置软件源

15、安装kubeadm、kubelet、kubectl

16、设置kubelet开机自启动

17、上传离线镜像包

18、导入镜像

19、设置容器运行时

20、初始化Master节点

21、设置容器运行时

22、导入镜像

23、将Work节点加入到集群

24、查看集群状态 

25、为Work节点设置标签

26、安装网络插件calico

27、安装calico

28、查看Pod状态

四、在k8s集群中使用nfs

1、安装nfs驱动

2、编写yaml文件

3、创建Pod

五、测试数据持久化

1、创建首页文件

2、访问测试


一、前言

1、k8s概述

 Kubernetes单词起源于希腊语, 是“舵手”或者“领航员、飞行员”的意思。

Kubernetes(简称K8s)的前世今生可以追溯到谷歌(Google)内部的一个项目,它起源于2003年,当时谷歌正面临着不断增长的应用程序和服务的管理挑战。这个项目最初被称为"Borg",是一个早期的容器编排系统。Borg 的成功经验成为 Kubernetes 开发的契机。

 有关k8s起源的介绍,请参考《初识K8s之前世今生、架构、组件、前景》这篇文章

Kubernetes的优点包括可移植性、可伸缩性和扩展性。它使用轻型的YAML清单文件实现声明性部署方法,对于应用程序更新,无需重新构建基础结构。管理员可以计划和部署容器,根据需要扩展容器并管理其生命周期。借助Kubernetes的开放源代码API,用户可以通过首选编程语言、操作系统、库和消息传递总线来构建应用程序,还可以将现有持续集成和持续交付(CI/CD)工具集成。

2、NFS简介

NFS,即网络文件系统(Network File System),是一种用于在计算机系统之间共享文件和目录的协议。NFS最初由Sun公司开发,目前已经成为全球广泛使用的网络文件系统之一,无论是在企业内部网络还是在云计算环境中。

NFS允许远程计算机像访问本地文件一样访问和操作远程文件,从而方便了多台计算机之间的文件共享和协作。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。NFS不仅适用于Linux与Unix之间实现文件共享,也能实现Linux与Windows间的文件共享功能。

NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,这样,从本地端的系统来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,使用上相当便利。

NFS的应用场景非常广泛,它可以用于办公环境,实现文件服务器的高可用性,保证数据的可靠传输和处理,提高工作效率;对于大型企业来说,NFS可以提供集中式的文件存储和管理,简化文件管理流程,降低运营成本。

二、NFS服务器搭建

1、准备NFS 服务器

准备一台Linux服务器,虚拟机或物理机都可以,操作系统Ubuntu或centos,这里选择Centos

2、搭建NFS服务

安装 nfs-utils 软件包。

[root@nfsserver ~]# yum install nfs-utils -y

创建共享目录

[root@nfsserver ~]# mkdir /data/nfs-k8s -p

配置nfs权限

[root@nfsserver ~]# vim /etc/exports

 添加如下内容

/data/nfs-k8s *(rw,no_root_squash)

关闭防火墙并禁用SELinux

[root@nfsserver ~]# systemctl stop firewalld && setenforce 0

 启动nfs服务

[root@nfsserver ~]# systemctl start nfs

为数据目录添加读写权限

[root@nfsserver ~]# chmod 666 /data/ -R

使nfs配置生效

[root@nfsserver ~]# exportfs -arv

至此,nfs服务器已搭建完成

三、安装k8s集群

这里我们安装的k8s只有一台master一台node,而在实际生产环境中,master节点和node节点必须要有多台组成高可用,这里为了节省资源,我们每个角色只用了一台

1、环境准备

准备至少2台服务器,虚拟机或服务器都可以,资源配置如下

2、禁用防火墙和SELinux

在两台机器上都要执行

关闭防火墙并禁止开机自启动

[root@master ~]# systemctl stop firewalld && systemctl disable firewalld

[root@node ~]# systemctl stop firewalld && systemctl disable firewalld 

 关闭SELinux

[root@master ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@master ~]# setenforce 0
[root@master ~]# getenforce
Permissive

[root@node ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@node ~]# setenforce 0
[root@node ~]# getenforce
Permissive 

3、设置时间同步 

[root@master ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
[root@master ~]# date
Tue Mar 19 14:10:22 CST 2024

[root@node ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
[root@node ~]# date
Tue Mar 19 14:10:22 CST 2024 

4、关闭swap交换分区 

[root@master ~]# swapoff -a

[root@node ~]# swapoff -a 

5、修改hosts文件

[root@master ~]# vi /etc/hosts

# 添加如下两行内容

192.168.40.110 master
192.168.40.111 node

[root@node ~]# vi /etc/hosts

# 添加如下两行内容

192.168.40.110 master
192.168.40.111 node

6、修改机器内核参数

[root@master ~]# modprobe br_netfilter
[root@master ~]# cat > /etc/sysctl.d/k8s.conf <<EOF
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> net.ipv4.ip_forward = 1
> EOF
[root@master ~]# sysctl -p /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

[root@node ~]# modprobe br_netfilter
[root@node ~]# cat > /etc/sysctl.d/k8s.conf <<EOF
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> net.ipv4.ip_forward = 1
> EOF
[root@node ~]# sysctl -p /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1 

7、配置阿里repo源

[root@master ~]# yum install yum-utils device-mapper-persistent-data lvm2  -y

[root@master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

[root@node ~]# yum install yum-utils device-mapper-persistent-data lvm2 -y 

[root@node ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

8、安装container

[root@master ~]# yum install  containerd.io -y

 [root@node ~]# yum install  containerd.io -y

9、修改containerd配置文件

[root@master ~]# mkdir -p /etc/containerd
[root@master ~]# containerd config default > /etc/containerd/config.toml
[root@master ~]# vim /etc/containerd/config.toml

#将SystemdCgroup = false修改为SystemdCgroup = true

[root@node ~]# mkdir -p /etc/containerd
[root@node ~]# containerd config default > /etc/containerd/config.toml
[root@node ~]# vim /etc/containerd/config.toml

#将SystemdCgroup = false修改为SystemdCgroup = true

10、设置container开机自启动

[root@master ~]# systemctl enable containerd  --now

[root@node ~]# systemctl enable containerd  --now 

11、设置服务的端点地址

[root@master ~]# cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF

[root@node ~]# cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF 

12、安装docker

[root@master ~]# yum install  docker-ce  -y

[root@master ~]# systemctl enable docker --now

[root@node ~]# yum install  docker-ce  -y

[root@node ~]# systemctl enable docker --now

13、添加docker镜像加速器

[root@master docker]# tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://ofcqsr1y.mirror.aliyuncs.com"]
> }
> EOF

[root@master docker]# sudo systemctl daemon-reload
[root@master docker]# sudo systemctl restart docker

[root@node docker]# tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://ofcqsr1y.mirror.aliyuncs.com"]
> }
> EOF

[root@node docker]# sudo systemctl daemon-reload
[root@node docker]# sudo systemctl restart docke  

14、配置软件源

[root@master ~]# vim /etc/yum.repos.d/kubernetes.repo
# 添加如下内容

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0

[root@node ~]# vim /etc/yum.repos.d/kubernetes.repo
# 添加如下内容

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0

15、安装kubeadm、kubelet、kubectl

[root@master ~]# yum install kubelet-1.28.2 kubeadm-1.28.2 kubectl-1.28.2 -y

[root@node ~]# yum install kubelet-1.28.2 kubeadm-1.28.2 kubectl-1.28.2 -y 

16、设置kubelet开机自启动

[root@master ~]# systemctl enable kubelet

 [root@node ~]# systemctl enable kubelet

17、上传离线镜像包

离线镜像包我已经放到个人主页的资源中,大家可以自行下载

18、导入镜像

[root@master ~]# ctr -n=k8s.io images import k8s-1-28.tar.gz

[root@master ~]# ctr -n=k8s.io images import k8s-1-28-etcd.tar.gz

19、设置容器运行时

[root@master ~]# crictl config runtime-endpoint /run/containerd/containerd.sock

20、初始化Master节点

[root@master ~]# kubeadm init --kubernetes-version=1.28.2  --apiserver-advertise-address=192.168.40.110  --image-repository registry.aliyuncs.com/google_containers  --pod-network-cidr=10.244.0.0/16

[root@master ~]#   mkdir -p $HOME/.kube
[root@master ~]#   sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]#   sudo chown $(id -u):$(id -g) $HOME/.kube/config 

查看节点状态

[root@master ~]# kubectl get node
NAME     STATUS     ROLES           AGE   VERSION
master   NotReady   control-plane   66s   v1.28.2 

21、设置容器运行时

[root@node ~]# crictl config runtime-endpoint /run/containerd/containerd.sock

22、导入镜像

[root@node ~]# ctr -n=k8s.io images import k8s-1-28-etcd.tar.gz

[root@node ~]# ctr -n=k8s.io images import k8s-1-28.tar.gz 

23、将Work节点加入到集群

在Master节点上生成token

[root@master ~]# kubeadm token create --print-join-command

将生成的密钥考到node节点执行

[root@node ~]# kubeadm join 192.168.40.110:6443 --token 8zx14z.br9wctj9shxb08sq --discovery-token-ca-cert-hash sha256:6559345665c6beb70a9da42c2de6b85fc41f61d3dc3c527be3f7cc4629c503ab 

24、查看集群状态 

[root@master ~]# kubectl get node
NAME     STATUS     ROLES           AGE   VERSION
master   NotReady   control-plane   10m   v1.28.2
node     NotReady   <none>          5s    v1.28.2

25、为Work节点设置标签

 [root@master ~]# kubectl label nodes node node-role.kubernetes.io/work=work

#再次查看

[root@master ~]# kubectl get node
NAME     STATUS     ROLES           AGE   VERSION
master   NotReady   control-plane   10m   v1.28.2
node     NotReady    work                 5s    v1.28.2

26、安装网络插件calico

calico介绍

  • Calico是一个开源的网络和网络安全解决方案,专为容器化环境设计,旨在提供网络连接和安全策略管理功能。它基于BGP协议,实现了一个纯三层网络方案,能够与Kubernetes、AWS、OpenStack等云平台良好地集成。
  • Calico的核心功能包括网络连接、网络策略和安全性。通过使用BGP路由协议,Calico能够在所有节点上通过Linux Kernel实现高效的vRouter进行数据转发。每个vRouter都会将在本节点上运行的容器的路由信息广播到整个Calico网络,并自动设置到达其他节点的路由转发规则。这种设计确保了所有容器之间的数据流量都是通过IP路由的方式完成互联互通的。

27、安装calico

[root@master ~]# curl -L -O https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml 

[root@master ~]# kubectl  apply -f calico.yaml

28、查看Pod状态

[root@master ~]# kubectl get pod -A 
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-658d97c59c-fbrgn   1/1     Running   0          5m31s
kube-system   calico-node-qd6v2                          1/1     Running   0          5m31s
kube-system   calico-node-s9khc                          1/1     Running   0          5m31s
kube-system   coredns-66f779496c-l6nqx                   1/1     Running   0          19m
kube-system   coredns-66f779496c-n7jn6                   1/1     Running   0          19m
kube-system   etcd-master                                1/1     Running   0          19m
kube-system   kube-apiserver-master                      1/1     Running   0          19m
kube-system   kube-controller-manager-master             1/1     Running   5          19m
kube-system   kube-proxy-7wbhh                           1/1     Running   0          9m15s
kube-system   kube-proxy-bb47r                           1/1     Running   0          19m
kube-system   kube-scheduler-master                      1/1     Running   5          19m

四、在k8s集群中使用nfs

1、安装nfs驱动

在集群的两个节点上分别执行

yum install nfs-utils -y
systemctl enable nfs --now

2、编写yaml文件

[root@master ~]# vim nfs.yaml
apiVersion: v1
kind: Pod
metadata:name: test-nfs-volume
spec:containers:- name: test-nfsimage: nginximagePullPolicy: IfNotPresentports:- containerPort: 80protocol: TCPvolumeMounts:- name: nfs-volumesmountPath: /usr/share/nginx/htmlvolumes:- name: nfs-volumesnfs:path: /data/nfs-k8sserver: 192.168.40.132

这段配置文件的解释如下: 

apiVersion 和 kind

apiVersion: v1  
kind: Pod

  • apiVersion: v1 表示使用的是 Kubernetes API 的第一个版本。
  • kind: Pod 表示这个资源对象是一个 Pod。

metadata

metadata:  name: test-nfs-volume

  • metadata 包含了关于这个 Pod 的元数据。
  • name: test-nfs-volume 给这个 Pod 设置了一个唯一的名称。

spec
spec 字段定义了 Pod 的期望状态。

containers

containers:  
- name: test-nfs  image: nginx  imagePullPolicy: IfNotPresent  ports:  - containerPort: 80  protocol: TCP  volumeMounts:  - name: nfs-volumes  mountPath: /usr/share/nginx/html

  • containers 字段定义了 Pod 中运行的容器列表。
  • name: test-nfs 是容器的名称。
  • image: nginx 指定了容器使用的镜像。
  • imagePullPolicy: IfNotPresent 表示如果本地没有镜像,则尝试从镜像仓库拉取。
  • ports 字段定义了容器监听的端口。
  • containerPort: 80 指定容器监听的端口为 80。
  • protocol: TCP 表示使用 TCP 协议。
  • volumeMounts 字段定义了容器内部挂载卷的路径。
  • name: nfs-volumes 引用下面定义的卷的名称。
  • mountPath: /usr/share/nginx/html 指定了卷在容器内的挂载路径。

volumes

volumes:  
- name: nfs-volumes  nfs:  path: /data/nfs-k8sserver: 192.168.40.132

  • volumes 字段定义了 Pod 中可以使用的卷列表。
  • name: nfs-volumes 给卷设置了一个名称。
  • nfs 字段定义了 NFS 卷的属性。
  • path: /data/nfs-k8s 指定了 NFS 服务器上共享的路径。
  • server: 192.168.40.132 指定了 NFS 服务器的 IP 地址。

3、创建Pod

在master节点上执行

[root@master ~]# kubectl  apply -f nfs.yaml

五、测试数据持久化

1、创建首页文件

在nfs服务器上,cd到 /data/nfs-k8s 目录

[root@nfsserver nfs-k8s]# echo "hello nfs" > index.html

添加权限

[root@nfsserver nfs-k8s]# chmod 644 index.html

2、访问测试

在k8s master节点上执行

查看pod IP

[root@master ~]# kubectl get pod -owide

访问测试

[root@master ~]# curl 10.244.167.134

此处可以看到我们刚刚创建的文件的内容,证明k8s调用nfs作为持久化存储成功

至此,NFS服务器的搭建与k8s中的使用测试完成 

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Kubernetes的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!   

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

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

相关文章

分享 WebStorm 2024 激活的方案,支持JetBrains全家桶

大家好&#xff0c;欢迎来到金榜探云手&#xff01; WebStorm公司简介 JetBrains 是一家专注于开发工具的软件公司&#xff0c;总部位于捷克。他们以提供强大的集成开发环境&#xff08;IDE&#xff09;而闻名&#xff0c;如 IntelliJ IDEA、PyCharm、和 WebStorm等。这些工具…

SOCKS代理是如何增强网络隐私?

在数字化时代&#x1f310;&#xff0c;网络隐私的重要性日益凸显。个人和组织都在寻找有效的方法来保护自己的网络活动不受侵犯。SOCKS代理作为一种流行的网络协议&#xff0c;提供了一种有效的手段来增强网络隐私。本文将详细介绍SOCKS代理是如何工作的&#xff0c;以及它是如…

C++模板编程

模板是泛型编程的基础&#xff0c;先给出泛型编程的概念。 泛型编程&#xff1a;编写与类型无关的通用代码&#xff0c;是代码复用的一种手段。 应用场景&#xff1a;比如要实现一个通用的&#xff0c;进行两个变量互相交换的函数&#xff0c;此时可以通过函数重载的方式&…

【从浅学到熟知Linux】进程状态与进程优先级(含进程R/S/T/t/D/X/Z状态介绍、僵尸进程、孤儿进程、使用top及renice调整进程优先级)

&#x1f3e0;关于专栏&#xff1a;Linux的浅学到熟知专栏用于记录Linux系统编程、网络编程及数据库等内容。 &#x1f3af;每天努力一点点&#xff0c;技术变化看得见 文章目录 进程状态进程状态查看R运行状态&#xff08;running&#xff09;S睡眠状态&#xff08;sleeping&a…

蓝桥杯嵌入式速成

蓝桥杯嵌入式速成 cubmx创建工程利用官方提供的LCD代码创建工程&#xff08;15届不能用&#xff09;利用官方提供的LCD代码创建工程&#xff08;15届能用&#xff09;Keil配置头文件注意其他注意 LED闪烁 按键短按长按双击 LCD高亮行高亮字符 RTCADCI2Cuart接收发送 PWMDAC定时…

Vue.js------vue基础

1. 能够了解更新监测, key作用, 虚拟DOM, diff算法2. 能够掌握设置动态样式3. 能够掌握过滤器, 计算属性, 侦听器4. 能够完成品牌管理案例 一.Vue基础_更新监测和key 1.v-for更新监测 目标&#xff1a;目标结构变化, 触发v-for的更新 情况1: 数组翻转情况2: 数组截取情况3…

VIT论文阅读

论文地址&#xff1a;https://arxiv.org/pdf/2010.11929.pdf VIT论文阅读 摘要INTRODUCTION结论RELATEDWORKMETHOD1.VISIONTRANSFORMER(VIT)整体流程消融实验HEAD TYPE AND CLASSTOKENpoisitional embedding 整体过程公式Inductive biasHybrid Architecture 2.FINE-TUNINGANDH…

Substance 3D2024版 下载地址及安装教程

Substance 3D是Adobe公司推出的一套全面的3D设计和创作工具集合&#xff0c;用于创建高质量的3D资产、纹理和材质。 Substance 3D包括多个功能强大的软件和服务&#xff0c;如Substance 3D Painter、Substance 3D Designer和Substance 3D Sampler等。这些工具提供了广泛的功能…

TQ15EG开发板教程:在MPSOC上运行ADRV9009

首先需要在github上下载两个文件&#xff0c;本例程用到的文件以及最终文件我都会放在网盘里面&#xff0c; 地址放在最后面。在github搜索hdl选择第一个&#xff0c;如下图所示 GitHub网址&#xff1a;https://github.com/analogdevicesinc/hdl/releases 点击releases选择版…

vue实现海康h5player问题汇总

1. 引入问题 最开始写的时候&#xff0c;把h5player封装成了一个组件&#xff0c;把资源文件随便放在了一个目录下&#xff0c; 直接在子组件中引入&#xff0c;报错window.JSPlugin is not a constructor 或者JSPlugin is not defined 初步分析应该是引入资源文件失败&#x…

Java异常处理机制详解:多层方法调用与异常传播(day23)

1.数组下标越界 2.多个处理异常 上面这两个代码的区别就是有无 System.out.println("抛出了NumberFormatException"); System.out.println("抛出了ArrayIndexOutOfBoundsException"); 第一种是不论捕获到哪种异常&#xff0c;都只会调用e.printStack…

Asterisk 21.2.0编译安装经常遇到的问题和解决办法之pjproject

目录 Asterisk社区官方的说法然而买家秀是这样的pjproject-2.14下载不了的问题如何解决 Asterisk社区官方的说法 编译安装Asterisk 21.2.0版本 按照官网文档&#xff0c;原则上只需要如下几步&#xff1a; ./contrib/scripts/install_prereq install ./configure make make i…

Golang | Leetcode Golang题解之第20题有效的括号

题目&#xff1a; 题解&#xff1a; func isValid(s string) bool {n : len(s)if n % 2 1 {return false}pairs : map[byte]byte{): (,]: [,}: {,}stack : []byte{}for i : 0; i < n; i {if pairs[s[i]] > 0 {if len(stack) 0 || stack[len(stack)-1] ! pairs[s[i]] {…

【leetcode面试经典150题】36. 旋转图像(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

第04章 计算机常用通信指标和术语视频课程

4.1 本章目标 掌握bit、Byte、KB、MB、GB、TB概念和换算关系掌握波特率、比特率、误码率的概念掌握信道、基带信号、频带信号概念了解多路复用、频分多路复用、时分多路复用了解同步传输、异步传输概念 4.2 bit、Byte、KB、MB、GB、TB概念和换算关系 4.2.1 概念与换算 4.2.2…

docker-compose 之 OpenGauss

使用 docker 启动高斯数据库的示范脚本如下&#xff1a; docker-compose.yml version: 3.7 services:opengauss:image: enmotech/opengauss:5.1.0container_name: opengaussnetwork_mode: "host"privileged: truevolumes:- ./opengauss:/var/lib/opengaussenvironm…

使用自己的数据基于SWIFT微调Qwen-Audio-Chat模型

目录 使用自己的数据训练参数设置自己的数据准备语音转写任务语音分类任务 开始训练不同训练方法mpddpmp ddpdeepspeed 训练实例训练详情Qwen-Audio-Chat模型 模型数据实例官方可用的数据由内部函数处理为指定格式 训练好的模型测试 使用自己的数据 官方参考文档&#xff1a;…

CSPNet: A New Backbone that can Enhance Learning Capability of CNN

CSPNet 摘要1.引言3.方法3.1Cross Stage Partial NetworkDenseNetCross Stage Partial DenseNetPartial Dense BlockPartial Transition LayerApply CSPNet to Other Architectures 3.2 Exact Fusion ModelLooking Exactly to predict perfectlyAggregate Feature PyramidBalan…

【Android】【root remount】【3】remount 文件详细信息获取

前言 我们在root & remount 设备后&#xff0c;push相关文件到systm 、vendor、product 等目录进行调试&#xff0c;那么我们push的文件被保存在什么地方呢&#xff1f; 以及我们FWS、app侧如何过去push 的文件信息呢&#xff1f; remount push 文件保存 push 文件保存的…

java数据结构与算法刷题-----LeetCode684. 冗余连接

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 并查集 并查集 解题思路&#xff1a;时间复杂度O( n ∗ l o g 2…