k8s:使用nfs实现pv数据持久化存储

准备:
一个k8s集群,nfs服务器

一.配置环境

1.NFS服务器

安装nfs软件:

yum install nfs-utils -y

清除iptables规则:

iptables -F

关闭防火墙:

service firewalld stop
systemctl disable firewalld

关闭selinux防火墙:

setenforce 0

设置共享目录:

[root@localhost ~]# vim /etc/exports
[root@localhost ~]# cat /etc/exports
/web  192.168.74.0/24(rw,sync,all_squash)

新建共享目录/web和index.html网页:

[root@localhost ~]# mkdir /web
[root@localhost ~]# cd /web
[root@localhost web]# echo 'welcome to hunan sanchuang!!!' >> index.html
[root@localhost web]# cat index.html 
welcome to hunan sanchuang!!!
this is a beautiful city!!

设置/web文件夹的权限,允许其他人过来读写:

[root@localhost web]# chmod 777 /web
drwxrwxrwx. 2 root root 24 96 15:01 /web
[root@localhost web]# chown nfsnobody:nfsnobody /web
[root@localhost web]# ll -d /web
drwxrwxrwx. 2 nfsnobody nfsnobody 24 96 15:01 /web

刷新nfs或者重新输出共享目录:

[root@localhost web]# exportfs -rv
exporting 192.168.74.0/24:/web

2.node节点

安装nfs软件即可:

yum install nfs-utils -y

二.编写并且执行yaml文件

在master节点上操作

1.创建NFS类型的storageclass

先创建一个文件夹吧:

cd /
mkdir storage/
cd storage/
mkdir pv-pvc
cd pv-pvc

编写yaml文件:

[root@master-1 pv-pvc]# vim nfs-sc.yaml
[root@master-1 pv-pvc]# cat nfs-sc.yaml 
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: example-nfs
provisioner: sc.com/sc-nfs
parameters:
  server: 192.168.74.159
  path: /web
  readOnly: "false"

执行yaml文件:

[root@master-1 pv-pvc]# kubectl apply -f nfs-sc.yaml 
storageclass.storage.k8s.io/example-nfs created
[root@master-1 pv-pvc]# kubectl get sc
NAME          PROVISIONER     RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
example-nfs   sc.com/sc-nfs   Delete          Immediate           false                  4h40m

2.创建pv

编写yaml文件:

[root@master-1 pv-pvc]# vim pv-nfs.yaml
[root@master-1 pv-pvc]# cat pv-nfs.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: sc-nginx-pv-2				######
  labels:
    type: sc-nginx-pv-2				######
spec:
  capacity:
    storage: 5Gi 
  accessModes:
    - ReadWriteMany				######
  storageClassName: nfs         #pv对应的名字		######
  nfs:
    path: "/web"       #nfs共享的目录               		######
    server: 192.168.74.159   #nfs服务器的ip地址
    readOnly: false   #访问模式

执行:

[root@master-1 pv-pvc]# kubectl apply -f pv-nfs.yaml
persistentvolume/sc-nginx-pv-2 created
[root@master-1 pv-pvc]# kubectl get pv
NAME            CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                    STORAGECLASS   REASON   AGE
sc-nginx-pv-2   5Gi        RWX            Retain           Bound    default/sc-nginx-pvc-1   nfs                     6m24s

3.创建pvc

编辑:

[root@master-1 pv-pvc]# vim pvc-nfs.yaml 
[root@master-1 pv-pvc]# cat pvc-nfs.yaml 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: sc-nginx-pvc-1		
spec:
  accessModes:
  - ReadWriteMany      		
  resources:
     requests:
       storage: 1Gi
  storageClassName: nfs #使用nfs类型的pv,指定pv		

执行:

[root@master-1 pv-pvc]# kubectl apply -f pvc-nfs.yaml
persistentvolumeclaim/sc-nginx-pvc-1 created
[root@master-1 pv-pvc]# kubectl get pvc
NAME             STATUS   VOLUME          CAPACITY   ACCESS MODES   STORAGECLASS   AGE
sc-nginx-pvc-1   Bound    sc-nginx-pv-2   5Gi        RWX            nfs            4s

4.创建pod

编写:

[root@master-1 pv-pvc]# vim pod-nfs.yaml 
[root@master-1 pv-pvc]# cat pod-nfs.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: sc-pv-pod-nfs
spec:
  volumes:
    - name: sc-pv-storage-nfs
      persistentVolumeClaim:
        claimName: sc-nginx-pvc-1
  containers:
    - name: sc-pv-container-nfs
      image: nginx
      imagePullPolicy: IfNotPresent
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"    # 容器内部的挂载点
          name: sc-pv-storage-nfs

执行:

[root@master-1 pv-pvc]# kubectl apply -f pod-nfs.yaml 
pod/sc-pv-pod-nfs created
[root@master-1 pv-pvc]# kubectl get pod -o wide
NAME                         READY   STATUS    RESTARTS   AGE     IP              NODE     NOMINATED NODE   READINESS GATES
php-apache-748554cb8-h2fhg   1/1     Running   1          5h50m   10.244.84.167   node-1   <none>           <none>
sc-pv-pod-nfs                1/1     Running   0          6m25s   10.244.84.168   node-1   <none>           <none>

验证结果

在任意节点访问nginx服务

[root@master-1 pv-pvc]# curl 10.244.84.168
welcome to hunan sanchuang!!!
this is a beautiful city!!

搞定!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值