编辑
2025-08-20
K8S(重新复习)
00

目录

一、卷的类型使用
1.emptyDir
2.hostPath
3.NFS

一、卷的类型使用

1.emptyDir

emptyDir - 临时空目录,随Pod创建/删除而创建/销毁,用于容器间数据共享

yml
apiVersion: v1 kind: Pod metadata: name: emptydir-demo #该类型临时使用,pod删除后数据卷也会被删除 spec: containers: - name: writer image: busybox command: ["/bin/sh", "-c"] args: ["echo 'Hello from writer' > /cache/data.txt && sleep 3600"] volumeMounts: - name: cache-volume #名称必须一致 mountPath: /cache - name: reader image: busybox command: ["/bin/sh", "-c"] args: ["cat /cache/data.txt && sleep 3600"] volumeMounts: - name: cache-volume #名称必须一致 mountPath: /cache volumes: - name: cache-volume #名称必须一致 emptyDir: {}
js
创建了一个Pod包含writer和reader两个容器 通过emptyDir卷在/cache目录实现容器间共享 writer容器向/cache/data.txt写入数据 reader容器读取并输出相同文件内容 emptyDir生命周期与Pod绑定,Pod删除后数据丢失
js
#进入reader容器中是否存在 kubectl exec -it emptydir-demo -c reader -- sh

image.png

2.hostPath

hostPath - 将节点本地文件系统挂载到Pod,数据可持久化但仅限于单节点

yml
apiVersion: v1 kind: Pod metadata: name: hostpath-demo spec: containers: - name: hostpath-container image: nginx:alpine volumeMounts: - name: hostpath-volume mountPath: /usr/share/nginx/html volumes: - name: hostpath-volume hostPath: path: /tmp/hostpath-data type: DirectoryOrCreate #DirectoryOrCreate类型表示如果目录不存在会自动创建

将节点上的/tmp/hostpath-data目录挂载到容器的/usr/share/nginx/html

查看pod分配的是节点2,就去节点2的服务器查看 image.png

image.png

image.png 注意:hostPath是根据你/tmp/hostpath-data目录去挂载的,你节点上的/tmp/hostpath-data目录是空,挂载到pod内的文件目录下也会是空,哪怕你pod该目录下有文件一样给你清空,根据节点上的文件目录下文件进行挂载

3.NFS

yml
apiVersion: v1 kind: Pod metadata: name: nfs-direct-pod spec: containers: - name: nginx image: nginx volumeMounts: - name: nfs-vol mountPath: /usr/share/nginx/html volumes: - name: nfs-vol nfs: server: 192.168.201.104 path: /data/nfs_share readOnly: false

在全部节点都先创建一个/data/nfs_share目录并授权,NFS服务器上也创建该目录。 然后NFS在/etc/fstab编辑加一行,这样就能同时挂载多个目录(因为之前挂载过一个了)

js
192.168.201.104:/data/nfs_share /data/nfs_share nfs defaults 0 0

然后nfs重新加载生效

js
sudo exportfs -a # 重新加载配置 sudo systemctl restart nfs-server

再全部k8s集群节点重新挂载一个新的

js
mount -t nfs 192.168.201.104:/data/nfs_share /data/nfs_share

然后进入pod容器后去到/usr/share/nginx/html目录下会发现跟我nfs挂载的目录文件一样。

image.png

image.png

本文作者:松轩(^U^)

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

Document