k8s安装nfs-subdir-external-provisioner插件
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \--set nfs.server=192.168.5.226 \--set nfs.path=/mnt/demo \--set image.tag=v4.0.2 \--set im
简介
nfs-client-provisioner 是一个Kubernetes的简易NFS的外部provisioner,本身不提供NFS,需要现有的NFS服务器提供存储
PV以
n
a
m
e
s
p
a
c
e
−
{namespace}-
namespace−{pvcName}-
p
v
N
a
m
e
的
命
名
格
式
提
供
(
在
N
F
S
服
务
器
上
)
P
V
回
收
的
时
候
以
a
r
c
h
i
e
v
e
d
−
{pvName}的命名格式提供(在NFS服务器上) PV回收的时候以 archieved-
pvName的命名格式提供(在NFS服务器上)PV回收的时候以archieved−{namespace}-
p
v
c
N
a
m
e
−
{pvcName}-
pvcName−{pvName} 的命名格式(在NFS服务器上)
以后是回收后,在nfs服务器上查看共享目录的例子
[root@nfs-server]# tree /mnt/demo
/mnt/demo
├── archived-demo-project-test-claim-pvc-7b4f2b76-711c-405c-8642-03257d398c18
│ └── SUCCESS
├── archived-kube-system-test-claim-pvc-03d81e07-7549-44d2-a1c9-87a687bf5dcc
│ └── SUCCESS
└── demo-project-gdf-pvc-13636fcf-9fc3-4218-b83b-0c2e63c603aa
安装
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
--set nfs.server=192.168.5.226 \
--set nfs.path=/mnt/demo \
--set image.tag=v4.0.2 \
--set image.repository=xxxxxxx/nfs-subdir-external-provisioner \
-n kube-system
#xxxxxxx处,请替换为你的私有仓库地址,可以是阿里云的仓库,阿里云支持海外仓库构建。
helm安装插件成功的提示:
NAME: nfs-subdir-external-provisioner
LAST DEPLOYED: Sat Nov 13 17:49:05 2021
NAMESPACE: kube-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
创建一个存储卷
在kubeshere上创建一个nfs存储卷,名字gdf
使用nfs存储卷后支持多节点只读和多节点读写了。
多节点只读(ROX)
多节点读写(RWX)
查看nfs服务器
创建上面存储卷gdf后,登录nfs服务器查看,上次创建的/mnt/demo作为nfs共享目录,原本demo目录下是空的。
#格式${.PVC.namespace}-${.PVC.name}
ls /mnt/demo/
demo-project-gdf-pvc-13636fcf-9fc3-4218-b83b-0c2e63c603aa
另外用官方例子进行测试
#test-claim.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: test-claim
spec:
storageClassName: nfs-client
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Mi
#test-pod.yaml
kind: Pod
apiVersion: v1
metadata:
name: test-pod
spec:
containers:
- name: test-pod
image: busybox:stable
command:
- "/bin/sh"
args:
- "-c"
- "touch /mnt/SUCCESS && exit 0 || exit 1"
volumeMounts:
- name: nfs-pvc
mountPath: "/mnt"
restartPolicy: "Never"
volumes:
- name: nfs-pvc
persistentVolumeClaim:
claimName: test-claim
执行命令
kubectl apply -f deploy/test-claim.yaml,deploy/test-pod.yaml
kubectl delete -f deploy/test-claim.yaml,deploy/test-pod.yaml
kubectl apply -f deploy/test-claim.yaml,deploy/test-pod.yaml -n demo-project
kubectl delete -f deploy/test-claim.yaml,deploy/test-pod.yaml -n demo-project
#每执行一行命令,使用kubectl get pv,pvc -A 观察pv和pvc的变化。最后到nfs服务器上查看目录会有 archieved-${namespace}-${pvcName}-${pvName} 格式的目录
参考:
nfs-subdir-external-provisioner
nfs-subdir-external-provisioner/README.md
kubernetes系列11—PV和PVC详解
更多推荐
所有评论(0)