StorageClass做爲對存儲資源的抽象定義, 對用戶設置的NFS申請屏蔽後端存儲的細節, 一方面減小了用戶對於存儲資源細節的關注, 另外一方面減輕了管理員手工管理pv的工做, 由系統自動完成pv的建立和綁定 StorageClass自己是一種資源對象, 不提供pv的建立, 這裏以NFS共享存儲爲例, 使用nfs-client-provisioner組件鏈接nfs服務器以及pv的建立 #####案例 1.安裝nfs服務:省略 2.克隆nfs-client-provisioner組件代碼html
git clone https://github.com/kubernetes-incubator/external-storage.git cd external-storage/nfs-client/deploy
3.修改deployment文件, 主要修改nfs服務器地址和nfs提供的目錄nginx
apiVersion: v1 kind: ServiceAccount metadata: name: nfs-client-provisioner --- kind: Deployment apiVersion: extensions/v1beta1 metadata: name: nfs-client-provisioner spec: replicas: 1 strategy: type: Recreate template: metadata: labels: app: nfs-client-provisioner spec: serviceAccountName: nfs-client-provisioner containers: - name: nfs-client-provisioner image: registry.cn-hangzhou.aliyuncs.com/wangfang-dev/nfs-client-provisioner:latest volumeMounts: - name: nfs-client-root mountPath: /persistentvolumes env: - name: PROVISIONER_NAME value: fuseim.pri/ifs - name: NFS_SERVER value: 192.168.1.48 - name: NFS_PATH value: /data/nfs volumes: - name: nfs-client-root nfs: server: 192.168.1.48 path: /data/nfs
4.StorageClass 此處能夠不修改,或者修改provisioner的名字,須要與上面的deployment的PROVISIONER_NAME名字一致。 cat class.yamlgit
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: default provisioner: fuseim.pri/ifs
5.應用建立github
kubectl apply -f deployment.yaml kubectl apply -f class.yaml kubectl apply -f rbac.yaml
7.建立pvc和deployment資源後端
--- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nginx-deployment-pvc annotations: volume.beta.kubernetes.io/storage-class: "managed-nfs-storage" spec: accessModes: - ReadWriteMany resources: requests: storage: 10Mi --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: default labels: app: nginx spec: selector: matchLabels: app: nginx replicas: 1 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.12 imagePullPolicy: IfNotPresent ports: - containerPort: 80 volumeMounts: - name: html mountPath: /usr/share/nginx/html volumes: - name: html persistentVolumeClaim: claimName: nginx-deployment-pvc
8.驗證 自動建立pv PV以 ${namespace}-${pvcName}-${pvName}的命名格式提供(在NFS服務器上) PV回收的時候以 archieved-${namespace}-${pvcName}-${pvName} 的命名格式(在NFS服務器上)api