k8s持久化存储(NFS)

k8s持久化存储(NFS)

创建一个PersistentVolume

将创建一个NFS PersistentVolume。Kubernetes支持NFS在集群上进行开发和测试。PersistentVolume使用NFS文件系统来连接存储。

以下是nfs持久卷的配置文件:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: task-pv-volume
  namespace: openeuler
  labels:
    type: nfs
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  nfs:
    path: "/data"
    server: 192.168.26.135

PersistentVolume定义了StorageClass name manual,该名称将用于将PersistentVolumeClaim请求绑定到该PersistentVolume

为简单起见,此示例使用ReadWriteOnce访问模式。对于生产使用,Kubernetes项目建议使用ReadWriteOncePod访问模式。accessModes有:

ReadWriteOnce

单个节点可以读写方式挂载该卷。当pod在同一节点上运行时,ReadWriteOnce访问模式仍然可以允许多个pod访问卷。对于单个pod访问,请参见ReadWriteOncePod。

ReadOnlyMany

多节点仅以只读方式挂载该卷。

ReadWriteMany

多节点以读写方式挂载该卷。

ReadWriteOncePod

单个Pod可以读写方式挂载该卷。如果要确保整个群集中只有一个Pod可以读取该PVC或向其写入,请使用ReadWriteOncePod访问模式。

只有CSI卷和Kubernetes版支持ReadWriteOncePod访问模式。要使用此功能,您需要将以下CSI边车更新到这些版本或更高版本:

在CLI中,访问模式缩写为:

  • RWO - ReadWriteOnce
  • ROX - ReadOnlyMany
  • RWX - ReadWriteMany
  • RWOP - ReadWriteOncePod

创建PV

kubectl apply -f pv-volume.yaml

显示PV信息

kubectl get pv -n openeuler 
NAME             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
task-pv-volume   10Gi       RWO            Retain           Available           manual                  6s

创建一个PersistentVolumeClaim

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: task-pv-claim
  namespace: openeuler
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

创建PVC

kubectl apply -f pv-claim.yaml

再次查看PV

kubectl get pv -n openeuler 
NAME             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                     STORAGECLASS   REASON   AGE
task-pv-volume   10Gi       RWO            Retain           Bound    openeuler/task-pv-claim   manual                  14m

查看PVC

kubectl get pvc -n openeuler 
NAME            STATUS   VOLUME           CAPACITY   ACCESS MODES   STORAGECLASS   AGE
task-pv-claim   Bound    task-pv-volume   10Gi       RWO            manual         50m

创建一个Pod

下一步是创建一个Pod,它使用PersistentVolumeClaim作为卷。

apiVersion: v1
kind: Pod
metadata:
  name: task-pv-pod
  namespace: openeuler
spec:
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:
        claimName: task-pv-claim
  containers:
    - name: task-pv-container
      image: nginx
      volumeMounts:
        - mountPath: "/data"
          name: task-pv-storage

请注意,Pod的配置文件指定了一个PersistentVolumeClaim,但它没有指定PersistentVolume。从Pod的角度来看,claim是一个volume。

创建Pod

kubectl apply -f pv-pod.yaml

查看挂载信息

 kubectl exec -it -n openeuler task-pv-pod -- df -hT | grep data
192.168.26.135:/data       nfs4      37G  1.7G   33G   5% /data
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
发出的红包

打赏作者

gswcfl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值