k8s 使用 nfs 做动态存储卷创建

手工部署内容参考 https://github.com/kubernetes-incubator/external-storage/tree/master/nfs-client/deploy

下面写一下使用helm 部署的方法

 

helm charts 在这里 https://github.com/helm/charts/tree/master/stable/nfs-client-provisioner

手工下载并部署到我们自己的helm 仓库

cd /home/nfs/html

helm package nfs-client-provisioner --save=false

helm repo index --url=http://192.168.220.128:32598 .

 helm repo update

k8s 使用 nfs 做动态存储卷创建_第1张图片

 下面开始安装

首先准备好nfs

参考 https://mp.csdn.net/postedit/93199622

mkdir -p /k8s/nfs

vi /etc/exports

添加记录

/k8s/nfs *(rw,no_root_squash)

exportfs -r

exportfs

 

然后执行helm install命令 , 这里面的空格都得英文的, 如果有不对的会报错 Error: This command needs 1 argument: chart name

helm install --set nfs.server=192.168.220.128 --set nfs.path=/k8s/nfs my/nfs-client-provisioner

k8s 使用 nfs 做动态存储卷创建_第2张图片

 

运行测试看一下效果

测试文件 https://github.com/kubernetes-incubator/external-storage/tree/master/nfs-client/deploy

这里面有一个测试 pod , 一个pvc claim

 

claim文件  test-claim.yaml , 注意 storeage-class 是 nfs-client  , 在使用helm创建的时候,默认值是这个, 如果写错了,pvc会pending

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: test-claim
  annotations:
    volume.beta.kubernetes.io/storage-class: "nfs-client"
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Mi

 

创建pvc , 如果从页面复制, test-claim.yaml前面带不规范的空白字符的话, 会报错 error: the path "\u00a0test-claim.yaml" does not exist, 清掉字符重新输入就好了

kubectl apply -f test-claim.yaml

查看pvc

kubectl get pvc

 

k8s 使用 nfs 做动态存储卷创建_第3张图片

 

此时打开k8s监控持久化卷动态创建一个

k8s 使用 nfs 做动态存储卷创建_第4张图片

 

声明也存在了

 

至此自动创建nfs存储卷完成

 

 

 

使用应用商店安装遇到问题

"message": "pods \"nfs-client-nfs-client-provisioner-76d4d74dbf-\" is forbidden: unable to validate against any pod security policy: [spec.volumes[0]: Invalid value: \"nfs\": nfs volumes are not allowed to be used]"

"message": "ReplicaSet \"nfs-client-nfs-client-provisioner-76d4d74dbf\" has timed out progressing."

 

看起来像权限问题

检查权限, 没发现问题,原来的名字是 /data/nfs, 换成 /data/k8sdata

主机上执行

sudo vi /etc/exports

/data/k8sdata/ 192.168.106.0/24(rw,no_root_squash)

sudo exportfs -r

从机上执行

sudo mount -t nfs 192.168.106.140:/data/k8sdata /data/k8sdata

 

按目录也不行,192.168.106.0/24换成*也不行

换下面这个参数才可以

podSecurityPolicy.enabled true

 

 

报错

 

E1031 03:45:46.275571 1 leaderelection.go:234] error retrieving resource lock kube-system/cluster.local-nfs-nfs-client-provisioner: endpoints "cluster.local-nfs-nfs-client-provisioner" is forbidden: User "system:serviceaccount:paas-test:nfs-nfs-client-provisioner" cannot get resource "endpoints" in API group "" in the namespace "kube-system"

使用版本 v3.0.1-k8s1.11

 

升级版本使用latest标签就可以使用了

 

 

 

 

 

 

 

 

你可能感兴趣的:(各种问题)