一、环境准备工作¶
1.1 搭建NFS¶
1、在10.0.0.22主机上搭建NFS
[root@k8s-node02 ~]# yum install nfs-utils rpcbind -y
如果是Ubuntu 系列,则采用下面命令
[root@k8s-node02 ~]# apt install nfs-kernel-server -y
2、配置共享目录
[root@k8s-node02 ~]# mkdir /data/nfs -p
[root@k8s-node02 ~]# echo "/data/nfs/ 10.0.0.0/24(rw,sync,no_subtree_check,no_root_squash)" >> /etc/exports
3、加载NFS配置
[root@k8s-node02 ~]# exportfs -r
# 验证
[root@k8s-node02 ~]# exportfs -s
/data/nfs 10.0.0.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,no_root_squash,no_all_squash)
4、启动NFS
[root@k8s-node02 ~]# systemctl enable --now nfs-server rpcbind
如果是Ubuntu 系列,则采用下面命令
[root@k8s-node02 ~]# systemctl enable --now nfs-kernel-server
5、客户端安装客户端工具
# 客户端安装客户端工具
[root@k8s-node01 ~]# yum install nfs-utils -y
[root@k8s-master01 ~]# yum install nfs-utils -y
如果是Ubuntu 系列,则采用下面命令
[root@k8s-node01 ~]# apt install nfs-common -y
[root@k8s-master01 ~]# apt install nfs-common -y
1.2 安装CSI¶
1、下载安装文件
[root@k8s-master01 ~]# git clone https://gitee.com/dukuan/csi-driver-nfs.git
2、安装CSI
[root@k8s-master01 ~]# cd csi-driver-nfs/
[root@k8s-master01 csi-driver-nfs]# sed -i "s#registry.k8s.io#k8s.m.daocloud.io#g" deploy/v4.9.0/*.yaml
[root@k8s-master01 csi-driver-nfs]# ./deploy/install-driver.sh v4.9.0 local
use local deploy
Installing NFS CSI driver, version: v4.9.0 ...
serviceaccount/csi-nfs-controller-sa created
serviceaccount/csi-nfs-node-sa created
clusterrole.rbac.authorization.k8s.io/nfs-external-provisioner-role created
clusterrolebinding.rbac.authorization.k8s.io/nfs-csi-provisioner-binding created
csidriver.storage.k8s.io/nfs.csi.k8s.io created
deployment.apps/csi-nfs-controller created
daemonset.apps/csi-nfs-node created
NFS CSI driver installed successfully.
3、查看pod状态
[root@k8s-master01 csi-driver-nfs]# kgp -n kube-system | grep csi-nfs
csi-nfs-controller-5c9687ccf5-l9fhp 4/4 Running 2 (5m26s ago) 6m13s
csi-nfs-node-4gnj9 3/3 Running 0 6m13s
csi-nfs-node-ccww4 3/3 Running 1 (5m22s ago) 6m13s
csi-nfs-node-rnqpn 3/3 Running 0 6m13s
4、查看CSI
[root@k8s-master01 csi-driver-nfs]# kg csidriver
NAME ATTACHREQUIRED PODINFOONMOUNT STORAGECAPACITY TOKENREQUESTS REQUIRESREPUBLISH MODES AGE
nfs.csi.k8s.io false false false <unset> false Persistent 6m42s
1.3 创建SC指向CSI¶
1、在master01主机(10.0.0.20)上更改sc的配置
[root@k8s-master01 ~]# cd csi-driver-nfs/
# 添加nfs主机信息
server: 10.0.0.22
share: /data/nfs
# 修改后的文件内容如下
[root@k8s-master01 csi-driver-nfs]# vim deploy/v4.9.0/storageclass.yaml
[root@k8s-master01 csi-driver-nfs]# cat deploy/v4.9.0/storageclass.yaml
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-csi
provisioner: nfs.csi.k8s.io
parameters:
server: 10.0.0.22
share: /data/nfs
reclaimPolicy: Delete
volumeBindingMode: Immediate
mountOptions:
- nfsvers=4.1
2、创建sc并查看
[root@k8s-master01 csi-driver-nfs]# kaf deploy/v4.9.0/storageclass.yaml
[root@k8s-master01 csi-driver-nfs]# kg sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs-csi nfs.csi.k8s.io Delete Immediate false 19s