k8s数据持久化之NFS

本文详细介绍了如何在 Kubernetes (k8s) 集群中部署和使用 NFS (Network File System) 作为数据卷,实现 Pod 间的数据共享和持久化。通过配置 NFS 服务器,创建 Deployment 并挂载 NFS 数据卷,确保即使 Pod 删除后,数据依然能够被新创建的 Pod 访问,验证了 NFS 在 k8s 中的有效性和可靠性。
摘要由CSDN通过智能技术生成

目录

NFS

部署nfs

测试

k8s中使用nfs示例

测试数据共享

测试数据持久化


NFS

NFS是主流的k8s数据持久化解决方案与pod共享存储解决方案
NFS数据卷:提供对NFS挂载支持,可以自动将NFS共享 路径挂载到Pod中
NFS:是一个主流的文件共享服务器

部署nfs

1、实施nfs(所有节点)
yum install nfs-utils -y
2、选择一台nfs-utils服务器作为数据节点,并进行配置
修改nfs服务器配置
vi /etc/exports
这*代表所有ip可以访问,rw代表对此目录有读写权限,no_root_squash代表他是root身份运行
/ifs/kubernetes *(rw,no_root_squash)
新建此数据目录
mkdir /ifs/kubernetes -p
启动服务并设置开机自启
systemctl start nfs
systemctl enable nfs

测试

进去其他k8s节点,远程挂载nfs节点数据,命令(ip为nfs数据节点ip),在挂载节点新建一个文件然后取消挂载
mount -t nfs 192.168.209.112:/ifs/kubernetes /mnt
cd /mnt
touch aaa
umount /mnt
在nfs服务器可以看到刚刚新建的文件夹

k8s中使用nfs示例

创建一个deployment.yaml
vi deployment-nfs.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-nfs
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        - name: wwwroot
          mountPath: /usr/share/nginx/html
      volumes:
      - name: wwwroot
        nfs:
          server: 192.168.209.112
          path: /ifs/kubernetes
kubectl apply -f deployment-nfs.yaml

测试数据共享

先验证他们数据是否共享
可以看到,进入第一个容器的html目录创建了一个bbb文件,退出后进去第二个容器的html目录。bbb已经被同步过来,即这个deployment的三个容器的html文件实现了共享
进入他们远程挂载的nfs服务器目录
可以看见容器内挂载路径的数据也被同步到这里了
同时,我在nfs服务器对应挂载路径上创建一个index首页
进入容器查看,可以看见已经同步到了容器内
curl每个pod,内容一样

测试数据持久化

测试pod删除后新建的pod是否能够获取这个持久化文件
kubectl delete pod web-nfs-96f7f9594-4rz7v
可以看到,即便删除容器,deployment自恢复新建的容器,容器内也能访问到之前持久化的数据
Kubernetes (K8s) 支持使用 NFS(Network File System)作为持久化存储解决方案。NFS 是一种分布式文件系统协议,允许将远程文件系统挂载到本地服务器上。 要使用 NFS 进行持久化存储,你需要先设置一个 NFS 服务器,并在 Kubernetes 集群中配置一个 NFS 持久卷。以下是一些步骤: 1. 配置 NFS 服务器:你需要设置一个 NFS 服务器并将其配置为共享文件系统。确保你已经安装并配置好了 NFS 服务器软件。 2. 创建 NFS 持久卷:在 Kubernetes 中,你可以使用 PersistentVolume(PV)和 PersistentVolumeClaim(PVC)对象来定义持久卷和持久卷声明。创建一个 PV 来表示 NFS 服务器上的共享目录,并为该 PV 创建一个 PVC。 3. 部署应用程序:使用创建的 PVC,在你的应用程序中声明一个持久卷。你可以通过将 PVC 挂载到应用程序的 Pod 中来实现持久化存储。 以下是一个示例的 YAML 文件,演示了如何在 Kubernetes 中配置一个 NFS 持久卷: ``` apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv spec: capacity: storage: 5Gi accessModes: - ReadWriteMany nfs: server: <NFS_SERVER_IP> path: /path/to/shared/directory --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi storageClassName: "" selector: matchLabels: name: nfs-pv ``` 替换 `<NFS_SERVER_IP>` 和 `/path/to/shared/directory` 为你 NFS 服务器的 IP 地址和共享目录的路径。然后,使用 kubectl apply 命令来部署这个 YAML 文件。 一旦 PVC 和 PV 创建成功,你可以在你的应用程序中使用该 PVC 来挂载 NFS 持久卷,并在 Pod 中进行持久化存储。 这就是使用 NFS 进行持久化存储的基本步骤。希望对你有所帮助!如果还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值