1.部署nfsclass
Helm部署nfs-client-provisioner: 预先配置好外部的NFS服务器。
[kubeadm@server1 nfsclass]$ ls
class.yaml deployment.yaml pod.yaml pvc.yaml rbac.yaml
[kubeadm@server1 nfsclass]$ kubectl delete -f . // 删除之前的部署
storageclass.storage.k8s.io "managed-nfs-storage" deleted
deployment.apps "nfs-client-provisioner" deleted
serviceaccount "nfs-client-provisioner" deleted
clusterrole.rbac.authorization.k8s.io "nfs-client-provisioner-runner" deleted
clusterrolebinding.rbac.authorization.k8s.io "run-nfs-client-provisioner" deleted
role.rbac.authorization.k8s.io "leader-locking-nfs-client-provisioner" deleted
rolebinding.rbac.authorization.k8s.io "leader-locking-nfs-client-provisioner" deleted
Error from server (NotFound): error when deleting "pod.yaml": pods "test-pod" not found
Error from server (NotFound): error when deleting "pvc.yaml": persistentvolumeclaims "test-claim" not found
注意:在使用helm uninstall删除的时候,调用的是kubectl apiserver,通过config完成授权
[kubeadm@server2 .kube]$ ls
cache config http-cache
[kubeadm@server2 .kube]$ pwd
/home/kubeadm/.kube
[kubeadm@server2 helm]$ helm search repo nfs
NAME CHART VERSION APP VERSION DESCRIPTION
stable/nfs-client-provisioner 1.2.8 3.1.0 nfs-client is an automatic provisioner that use...
stable/nfs-server-provisioner 1.0.0 2.3.0 nfs-server-provisioner is an out-of-tree dynami...
[kubeadm@server1 ~]$ helm pull stable/nfs-client-provisioner // 拉取nfs-client
[kubeadm@server1 ~]$ tar zxf nfs-client-provisioner-1.2.8.tgz
[kubeadm@server1 ~]$ cd nfs-client-provisioner/
[kubeadm@server1 nfs-client-provisioner]$ ls
Chart.yaml ci OWNERS README.md templates values.yaml
[kubeadm@server1 nfs-client-provisioner]$ vim values.yaml
image:
repository: nfs-client-provisioner // 需要在你的私有仓库中有nfs-client-provisioner镜像
tag: latest
nfs:
server: 172.25.0.1 // nfs输出端
path: /nfs // nfs输出端路径
defaultClass: true // 默认stroageclass将内用于动态的为没有特定storage class需求的pvc配置存储
[kubeadm@server1 nfs-client-provisioner]$ kubectl create namespace nfs-client-provisioner // 创建一个独立的namespace
namespace/nfs-client-provisioner created
[kubeadm@server1 nfs-client-provisioner]$ helm install nfs-client-provisioner . -n nfs-client-provisioner
NAME: nfs-client-provisioner
LAST DEPLOYED: Wed May 13 11:38:41 2020
NAMESPACE: nfs-client-provisioner
STATUS: deployed
REVISION: 1
TEST SUITE: None
[kubeadm@server1 nfs-client-provisioner]$ helm -n nfs-client-provisioner list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
nfs-client-provisioner nfs-client-provisioner 1 2020-05-13 11:38:41.860926655 +0800 CST deployed nfs-client-provisioner-1.2.8 3.1.0
[kubeadm@server1 nfs-client-provisioner]$ kubectl -n nfs-client-provisioner get all // 部署完成
NAME READY STATUS RESTARTS AGE
pod/nfs-client-provisioner-76474c9c94-5dcjq 1/1 Running 0 75s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nfs-client-provisioner 1/1 1 1 76s
NAME DESIRED CURRENT READY AGE
replicaset.apps/nfs-client-provisioner-76474c9c94 1 1 1 76s
测试:
[kubeadm@server1 pv]$ kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs-client (default) cluster.local/nfs-client-provisioner Delete Immediate true 6m5s
[kubeadm@server1 pv]$ cat pvc1.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc1
spec:
# storageClassName: nfs
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
[kubeadm@server1 pv]$ kubectl apply -f pvc1.yaml
persistentvolumeclaim/pvc1 created
[kubeadm@server1 pv]$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-d7372908-97a8-4c46-ab24-e269570f8005 1Gi RWO Delete Bound default/pvc1 nfs-client 7s
[kubeadm@server1 pv]$ kubectl delete -f pvc1.yaml
persistentvolumeclaim "pvc1" deleted