k8s持久化存储PV&PVC部署

k8s持久化存储PV&PVC部署

基于NFS的PV

1.创建NFS服务

安装nfs-utils rpcbind

yum install nfs-utils rpcbind

​ nfs-utils所有节点都需要安装

启动

systemctl restart rpcbind nfs

编辑共享配置文件

在主机节点编辑

vim /etc/exports

写入:/mnt/share *(rw)

(如果没有这个目录那就mkdir一下)

然后把权限给到最大

chmod 777 /mnt/share

在这里可能会出现关于NFS的问题

showmount -e nfs服务器ip

可查看挂载目录

更多关于nfs操作

https://www.xuebuyuan.com/1490537.html

遇到clnt_create: RPC: Program not registered

用这个方法重启可解决

解决办法:

1.在服务器上先停止rpcbind,
service rpcbind stop

  1. 然后在停止nfs

    service nfs stop

  2. 最后在重启rpcbind和nfs,一定要按顺序启动和停止

    service rpcbind start

    service nfs start

K8S中pod在挂载volume时出现FailedMount错误(exit status 32)

Warning FailedMount 2m42s kubelet, k8s-node01 MountVolume.SetUp failed for v…

这个问题跟nfs有关,可能是挂载出现错误

2.创建PV

vim pv1.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs
spec:
  storageClassName: manual
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  nfs:
    server: 192.168.134.131
    path: "/mnt/share"

这里的server是服务器ip地址,即主机ip

应用

kubectl apply -f pv1.yaml

查看

kubectl get pv
kubectl describe pv nfs

3.创建PVC

vim pvc1.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: manual
  resources:
    requests:
      storage: 1Gi

应用

kubectl apply -f pvc1.yaml

查看

kubectl get pvc

4.创建pod调用pvc

vim nginx-nfs.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-nfs
  labels:
    role: web-frontend
spec:
  containers:
  - name: web
    image: nginx
    ports:
      - name: web
        containerPort: 80
    volumeMounts:
        - name: nfs
          mountPath: "/usr/share/nginx/html" #这个是挂载到pod里的某个目录
  volumes:
  - name: nfs
    persistentVolumeClaim:
      claimName: nfs

5.验证

1.在nfs共享目录下创建一个文件

cd /mnt/share
vim test

2.进入到nginx-nfs这个pod里查看

kubectl exec -it nginx-nfs bsh

在挂载的目录里查看有没有那个文件

cat /usr/share/nginx/html/test

3.删除这个pod验证

删除这个pod,在master上查看是否还有这个文件。以此证明pvc不受pod的删除而受影响

kubectl delete pod nginx-nfs

4.重新创建这个pod

kubectl apply -f nginx-nfs.yaml

看看那个文件还存在

6.理解

对于这种基于NFS的持久化PV存储,就是在主机一端的本地目录里建立NFS远程目录,挂载到pod的目录里,然后pod被调度到某个节点上,从而实现无论在哪个节点里pod都能访问这个主机目录,并且能添加删除文件,即存储到远程主机的磁盘中,而且不会随着这个pod的存在与否影响这个文件目录,即实现持久化存储。

参考教程

https://my.oschina.net/u/3866149/blog/3056436

你可能感兴趣的:(k8s持久化存储PV&PVC部署)