kubernetes使用NFS作为存储的操作步骤(保姆式分享)

Posted 键客李大白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kubernetes使用NFS作为存储的操作步骤(保姆式分享)相关的知识,希望对你有一定的参考价值。

目录

  • 前言
  • 环境说明
  • 安装NFS服务端
  • 安装客户端驱动
  • 创建运行nfs-provisioner的sa账号
  • 对sa账号做rbac授权
  • 创建外部存储提供商
  • Pod中使用NFS服务
  • 使用NFS创建StorageClass
  • 使用StorageClass动态划分pv卷

前言

nfs 卷能将 NFS (网络文件系统) 挂载到Pod 中。 不像 emptyDir 那样会在删除 Pod 的同时也会被删除,nfs 卷的内容在删除 Pod 时会被保存,卷只是被卸载。 这意味着 nfs 卷可以被预先填充数据,并且这些数据可以在 Pod 之间共享。

nfs支持多个客户端挂载,可以创建多个pod,挂载同一个nfs服务器共享出来的目录;但是nfs如果宕机了,数据也就丢失了,所以需要使用分布式存储,常见的分布式存储有​​​glusterfs​​​和​​​cephfs​​。


环境说明

  • NFS服务器地址:192.168.2.30
  • NFS共享目录:/data/nfs/efk


安装NFS服务端

$ yum  install -y  nfs-utils 
$ systemctl start nfs
$ systemctl enable nfs
$ systemctl status nfs
$ chkconfig nfs on //设置为开机自启
注意:正在将请求转发到“systemctl enable nfs.service”。
  • 创建共享目录
[root@sc-node2 ~]#  mkdir  -p  /data/nfs/efk          #创建共享目录
[root@sc-node2 ~]# cat /etc/exports
/data/nfs/efk 192.168.2.0/24(rw,no_root_squash)
[root@sc-node2 ~]# exportfs -arv //使配置文件生效
exporting 192.168.2.0/24:/data/v1
[root@sc-node2 ~]# systemctl restart nfs
[root@sc-node2 ~]# showmount -e localhost //检查共享目录信息
Export list for localhost:
/data/nfs/efk 192.168.2.0/24 .


安装客户端驱动

客户端即是kubernetes集群中的每个节点,每个节点都需要本步骤操作。

[root@sc-node2 ~]#  yum -y install nfs-utils
[root@sc-node2 ~]# systemctl start nfs-utils
[root@sc-node2 ~]# systemctl enable nfs-utils
[root@sc-node2 ~]# systemctl status nfs-utils


创建运行nfs-provisioner的sa账号

nfs的外部供应商将使用该SA账号访问相关的资源。

  • 编写资源清单文件
[root@sc-master1 ~]# vim nfs-provisioner-sa.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: nfs-provisioner
namespace: kube-login
  • 创建sa账号
[root@sc-master1 ~]# kubectl apply -f  nfs-provisioner-sa.yaml


对sa账号做rbac授权

[root@sc-master1 ~]# vim nfs-rbac.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: nfs-provisioner-runner
rules:
- apiGroups: [""]
resources: ["persistentvolumes"]
verbs: ["get", "list", "watch", "create", "delete"]
- apiGroups: [""]
resources: ["persistentvolumeclaims"]
verbs: ["get", "list", "watch", "update"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["events"]
verbs: ["create", "update", "patch"]
- apiGroups: [""]
resources: ["services", "endpoints"]
verbs: ["get"]
- apiGroups: ["extensions"]
resources: ["podsecuritypolicies"]
resourceNames: ["nfs-provisioner"]
verbs: ["use"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: run-nfs-provisioner
subjects:
- kind: ServiceAccount
name: nfs-provisioner
namespace: kube-logging
roleRef:
kind: ClusterRole
name: nfs-provisioner-runner
apiGroup: rbac.kubernetes之NFS动态提供Kubernetes后端存储卷

在kubernetes中使用nfs-provisioner动态存储卷

Kubernetes第八篇:使用kubernetes部署NFS系统完成数据库持久化(Kubernetes工作实践类)

k8s实践17:kubernetes对接nfs存储实现pvc动态按需创建分配绑定pv

Kubernetes_09_使用kubernetes部署NFS系统完成数据库持久化(Kubernetes工作实践类)

Kubernetes: 利用NFS动态提供后端存储