试验环境为 ubuntu 20.04
一、nfs 部署安装
- 安装 nfs
apt-get install nfs-kernel-server- 创建共享目录
mkdir nfs_data- 修改共享配置
root@master:~# vim /etc/exports/root/nfs_data *(rw,no_root_squash)- 重启 nfs
/etc/init.d/nfs-kernel-server restart- 查看共享目录
showmount -e二、安装 nfs provisioner
官方文档
- 创建 server account 用户
service_account.yaml
apiVersion:v1kind:ServiceAccountmetadata:name:nfs-provisioner- 启动 service account 并查看
kubectl apply -f service_account.yaml kubectl get sa- 创建 ServiceAccount
授权给 nfs 可以访问 k8s 内部一些功能
kubectl create clusterrolebinding nfs-provisioner-clusterrolebinding --clusterrole=cluster-admin --serviceaccount=default:nfs-provisioner- 创建 nfs deployment
k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.0下载不下来可以考虑其他办法下载完成后传到节点上。使用ctr -n=k8s.io images import nfs-subdir-external-provisioner.tar.gz
nfs-deployment.yaml
kind:DeploymentapiVersion:apps/v1metadata:name:nfs-provisionerspec:replicas:1selector:matchLabels:app:nfs-provisionerstrategy:type:Recreatetemplate:metadata:labels:app:nfs-provisionerspec:serviceAccountName:nfs-provisioner# ServiceAccount 的 namecontainers:-name:nfs-provisionerimage:k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.0imagePullPolicy:IfNotPresentvolumeMounts:-name:nfs-client-rootmountPath:/persistentvolumesenv:-name:PROVISIONER_NAMEvalue:example.com/nfs-name:NFS_SERVERvalue:192.168.17.130# nfs 服务 ip-name:NFS_PATHvalue:/root/nfs_data/nfs_pro# nfs 共享的目录地址volumes:-name:nfs-client-rootnfs:server:192.168.17.130# nfs 服务 ippath:/root/nfs_data/nfs_pro# nfs 共享的目录地址- 启动 deployment 并查看
kubectl apply -f nfs-deployment.yaml kubectl get pods