k8s-持久化存储

k8s持久化存储:emptyDir

k8s**emptyDir类型的Volume是在Pod分配到Node上时被创建,Kubernetes会在Node上自动分配一个目录,因此无需指定宿主机Node上对应的目录文件。 这个目录的初始内容为空,当Pod从Node上移除时,emptyDir中的数据会被永久删除。emptyDir Volume主要用于某些应用程序无需永久保存的临时目录,多个容器的共享目录等。**

创建一个pod,挂载临时目录emptyDir

vim emptydir.yaml

apiVersion: v1

kind: Pod

metadata:

name: pod-empty

spec:

containers:

  • name: container-empty

image: nginx

imagePullPolicy: IfNotPresent

volumeMounts:

  • mountPath: /cache

name: cache-volume ##与volumes中的name保持一致

volumes:

  • emptyDir: {}

name: cache-volume

持久化存储:hostPath

hostPath Volume是指Pod挂载宿主机上的目录或文件。 hostPath Volume使得容器可以使用宿主机的文件系统进行存储,hostpath(宿主机路径):节点级别的存储卷,在pod被删除,这个存储卷还是存在的,不会被删除,所以只要同一个pod被调度到同一个节点上来,在pod被删除重新被调度到这个节点之后,对应的数据依然是存在的。

创建一个pod,挂载hostPath存储卷

vim hostpath.yaml

用 kubectl get pod -owide 查看挂在哪个node上,在该node上的挂载目录上创建文件或写入内容,

再回到master服务器上查看kubectl exec test-hostpath -- ls /usr/share/nginx/html

**hostpath存储卷缺点 **

单节点,pod删除之后重新创建必须调度到同一个node节点,数据才不会丢失

k8s持久化存储:nfs

nfs支持多个客户端挂载,可以创建多个pod,挂载同一个nfs服务器共享出来的目录;但是nfs如果宕机了,数据也就丢失了,所以需要使用分布式存储,常见的分布式存储有glusterfs和cephfs

以k8s的控制节点作为NFS服务端(每个节点都要安装)

yum install -y nfs-utils

在宿主机创建NFS需要的共享目录mkdir /data

配置nfs共享服务器上的/data目录 vim /etc/exports

/data 192.168.166.0/24(rw,sync,no_root_squash,no_subtree_check)

启服务:systemctl start nfs

查看共享节点是否启用exportfs -arv

再node节点上查看showmount -e 192.168.11.160

*创建Pod,挂载NFS共享出来的目录

vim nfs.yml

k8s持久化存储: PVC

PersistentVolume(PV)是群集中的一块存储,由管理员配置或使用存储类动态配置。 它是集群中的资源,就像pod是k8s集群资源一样。 PV是容量插件,如Volumes,其生命周期独立于使用PV的任何单个pod。
pv是集群级别资源

PersistentVolumeClaim(PVC)是用户使用存储的请求。 它类似于pod。Pod消耗节点资源,PVC消耗存储资源。 pod可以请求特定级别的资源(CPU和内存)。 pvc在申请pv的时候也可以请求特定的大小和访问模式(例如,可以一次读写或多次只读)

在宿主机创建NFS需要的共享目录 mkdir /data/v{1..10} -p

配置nfs共享宿主机上的/data/v1..v10目录 vim /etc/exports

重新加载配置,使配置成效 exportfs -arv
创建pv vim pv.yaml

apiVersion: v1

kind: PersistentVolume

metadata:

name: v1

spec:

capacity:

storage: 1Gi #pv的存储空间容量

accessModes: "ReadWriteOnce"

nfs:

path: /data/v1 #把nfs的存储空间创建成pv

server: 192.168.11.160 #nfs服务器的地址


apiVersion: v1

kind: PersistentVolume

metadata:

name: v2

spec:

capacity:

storage: 2Gi

accessModes: "ReadWriteMany"

nfs:

path: /data/v2

server: 192.168.11.160


apiVersion: v1

kind: PersistentVolume

metadata:

name: v3

spec:

capacity:

storage: 3Gi

accessModes: "ReadOnlyMany"

nfs:

path: /data/v3

server: 192.168.11.160


apiVersion: v1

kind: PersistentVolume

metadata:

name: v4

spec:

capacity:

storage: 4Gi

accessModes: "ReadWriteOnce","ReadWriteMany"

nfs:

path: /data/v4

server: 192.168.11.160


apiVersion: v1

kind: PersistentVolume

metadata:

name: v5

spec:

capacity:

storage: 5Gi

accessModes: "ReadWriteOnce","ReadWriteMany"

nfs:

path: /data/v5

server: 192.168.11.160


apiVersion: v1

kind: PersistentVolume

metadata:

name: v6

spec:

capacity:

storage: 6Gi

accessModes: "ReadWriteOnce","ReadWriteMany"

nfs:

path: /data/v6

server: 192.168.11.160


apiVersion: v1

kind: PersistentVolume

metadata:

name: v7

spec:

capacity:

storage: 7Gi

accessModes: "ReadWriteOnce","ReadWriteMany"

nfs:

path: /data/v7

server: 192.168.11.160


apiVersion: v1

kind: PersistentVolume

metadata:

name: v8

spec:

capacity:

storage: 8Gi

accessModes: "ReadWriteOnce","ReadWriteMany"

nfs:

path: /data/v8

server: 192.168.11.160


apiVersion: v1

kind: PersistentVolume

metadata:

name: v9

spec:

capacity:

storage: 9Gi

accessModes: "ReadWriteOnce","ReadWriteMany"

nfs:

path: /data/v9

server: 192.168.11.160


apiVersion: v1

kind: PersistentVolume

metadata:

name: v10

spec:

capacity:

storage: 10Gi

accessModes: "ReadWriteOnce","ReadWriteMany"

nfs:

path: /data/v10

server: 192.168.11.160

更新资源清单文件 kubectl apply -f pv.yaml

创建pvc,和符合条件的pv绑定 *vim pvc.yml

vim pod-pvc.yml

kubectl create -f pod-pvc.yml

相关推荐
SelectDB18 小时前
安全评审卡了三周,我把部署形态的四种选项重新排了一遍
大数据·数据库·云原生
阿里云云原生19 小时前
完整还原已经服务千家企业的 AIOps Agent 的评测和调优实践
云原生
阿里云云原生20 小时前
让 Agent 成为企业生产力丨Alibaba Cloud AgentCore 企业智能体构建与治理沙龙·上海站精彩回顾 & PPT 下载
云原生·agent
csdn_aspnet21 小时前
Docker Prune:完整指南与上手示例
运维·docker·容器·prune
阿里云云原生21 小时前
交付周期从 51 天缩短到 14 天,多 Agent 协作产品⾃进化背后的组织重构
云原生·agent
阿里云云原生1 天前
从部署上线到运维优化:STAROps 与 ROS Agent 的资源运维自动化实践
云原生
谢白羽1 天前
从传统运维到 AI Infra: K8s 上调度 100 张 GPU踩坑笔记
运维·人工智能·缓存·kubernetes·vllm·sglang·vllm-omni
xianyuCcCcCCCcc1 天前
Kubernetes 资源调度与弹性伸缩:Schedule、Metric、HPA 与 Quota
云原生·kubernetes
分布式存储与RustFS1 天前
在 1Panel 应用商店部署 RustFS:安装、配置与验证步骤
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准
我不会起名字3221 天前
滚动更新时请求 502:Pod 终止与 endpoint 摘除的时间差
kubernetes·滚动更新·排查·优雅停机