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