文章目录
准备镜像 k8s集群每个node节点需要下载镜像:
docker pull mariadb:10.5.2
在 Kubernetes 中,Volume 是一种抽象概念,用于持久化存储容器中的数据。Kubernetes 提供了多种类型的Volume,每种类型都适用于不同的场景和需求。
1. EmptyDir 临时卷
描述: EmptyDir 是一种临时性 Volume,它在 Pod 被调度到节点上时创建,随着 Pod 的删除而被清除。它通常用于需要临时存储数据的场景,如容器之间共享数据。使用很少
volumes:
- name: temp-volume
emptyDir: {
}
2. HostPath 文件目录挂载
描述: HostPath 允许将主机节点(Node)上的文件系统目录直接挂载到 Pod 中。这种 Volume 适合需要直接访问主机文件系统的应用场景,但在生产环境中使用时需注意安全性和可移植性问题。
例如只支持单节点(Node),而且只支持 “ReadWriteOnce”模式
volumes:
- name: host-path-volume
hostPath:
path: /data
指定node节点 kubectl label nodes k8s-node01 mariadb=mariadb
查看node节点label值 kubectl get nodes --show-labels
HOSTPATH的用法: 在volimeMountes中指定容器内部的路径和外部 hostPath的名称
在 定义卷中定义
containers
volumeMounts:
- mountPath: /var/lib/mysql
name: mariadb-volume
.......
volumes:
- name: mariadb-volume
hostPath:
path: /data/mariadb
type: Directory
3. PersistentVolumeClaim (PVC & PV)
部署mysql之前我们需要先了解一个概念有状态服务。这是一种特殊的服务,简单的归纳下就是会产生需要持久化的数据,并且有很强的I/O需求,且重启需要依赖上次存储到磁盘的数据。如典型的mysql,kafka,zookeeper等等。
描述: PersistentVolumeClaim 允许 Pod 使用持久化存储,如云存储卷(AWS EBS、Azure Disk 等)或者集群中的网络存储(NFS、GlusterFS 等)。PVC 提供了一种抽象机制,使得 Pod 可以独立于存储技术进行部署和管理。
volumes:
- name: pvc-volume
persistentVolumeClaim:
claimName: my-pvc
3.1 PV&&PVC理论补充
存储机制介绍 在 Kubernetes 中,存储资源和计算资源(CPU、Memory)同样重要,Kubernetes 为了能让管理员方便
管理集群中的存储资源,同时也为了让使用者使用存储更加方便,所以屏蔽了底层存储的实现细节,将存储抽象出两个 API 资源
PersistentVolume 和 PersistentVolumeClaim 对象来对存储进行管理。
PersistentVolume(持久化卷): PersistentVolume 简称 PV, 是对底层共享存储的一种抽象,将共享存储定义为一种资源,它属于集群级别资源,不属于任何 Namespace,用户使用 PV 需要通过 PVC
申请。PV 是由管理员进行创建和配置,它和具体的底层的共享存储技术的实现方式 有关,比如说 Ceph、GlusterFS、NFS
等,都是通过插件机制完成与共享存储的对接,且根据不同 的存储 PV 可配置参数也是不相同。
PersistentVolumeClaim(持久化卷声明): PersistentVolumeClaim 简称 PVC,是用户存储的一种声明,类似于对存储资源的申请,它属于一个 Namespace 中的资源&#x