1、先搭建一个nfs服务器

#安装nfs
yum -y install nfs-utils
#创建挂载目录
mkdir /nfs
#更改exports文件
vim /etc/exports
#输入以下内容   #网段配置成k8s master和node所在网段
/nfs/ 192.168.164.0/24(rw,sync,no_root_squash)  

#启动nfs
systemctl start rpcbind;systemctl enable rpcbind
systemctl start nfs;systemctl enable nfs
exportfs -r


2、需要在k8s 的所有master和node节点安装nfs客户端

yum -y install nfs-utils

3、创建持久化PV存储 pv.yaml文件

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv
  namespace: default
spec:
  capacity:
    storage: 10G
  accessModes:
    - ReadWriteMany
  nfs:
    # FIXME: use the right IP
    server: 192.168.164.11
    path: /nfs/

4、创建持久化PVC存储索取 pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
  namespace: default
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: ""
  resources:
    requests:
      storage: 10G

5、创建nginx POD容器使用PVC存储卷索取

apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx-v1
  labels:
    name: nginx-v1
  namespace: default
spec:
  replicas: 1
  selector:
    name: nginx-v1
  template:
    metadata:
      labels:
       name: nginx-v1
    spec:
      containers:
      - name: nginx-v1
        image: nginx
        volumeMounts:
        - mountPath: /usr/share/nginx/html
          name: nginx-data
        ports:
        - containerPort: 80
      volumes:
      - name: nginx-data
        persistentVolumeClaim:
          claimName: nfs-pvc

最后就是测试了

在nfs服务器的 /nfs 目录下创建一个index.html 文件

[root@node2 nfs]# cat index.html 
this is  nfs PV 静态存储模式

查看创建的nginx pod信息,可以看到pod的ip为10.244.2.37 ,pod 名为nginx-v1-xnhnv

 让后再k8s的任意节点上访问pod,都可以访问到

 

 接着我们把 pod删除再试试

 然后k8s的Replication Controllers 又新起了一个pod

 新pod的 名字是 nginx-v1-sd5sz ip是10.224.2.38

 在访问这个新pod试试

 

 

 发现我们的网页内用并没有改变

PV配置参数如下:

Capacity 指定 PV 的容量为 100M;

accessModes 指定访问模式为 ReadWriteOnce,支持的访问模式有:

ReadWriteOnce -------- PV 能以 read-write 模式 mount 到单个节点。

ReadOnlyMany – ------ PV 能以 read-only 模式 mount 到多个节点。

ReadWriteMany –-----  PV 能以 read-write 模式 mount 到多个节点。

persistentVolumeReclaimPolicy 指定当 PV 的回收策略为 Recycle,支持的策略有:

Retain – -----------------需要管理员手工回收。

Recycle –--------------- 清除 PV 中的数据,效果相当于执行 rm -rf /thevolume/*;

Delete –------------------ 删除 Storage Provider 上的对应存储资源,

storageClassName 指定 PV 的 class 为 nfs。相当于为 PV 设置了一个分类,PVC 可以指定 class 申请相应 class 的 PV。

指定 PV 在 NFS 服务器上对应的目录。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐