kubectl 创建pvc_k8s-StorageClass动态创建pvc/pv

1、配置 Deployment,将里面的对应的参数替换成我们自己的 nfs 配置(nfs-client.yaml)

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: quay.io/external_storage/nfs-client-provisioner:latest

volumeMounts:

- name: nfs-client-root

mountPath: /persistentvolumes

env:

- name: PROVISIONER_NAME

value: fuseim.pri/ifs

- name: NFS_SERVER

value: 10.151.30.57

- name: NFS_PATH

value: /data/k8s

volumes:

- name: nfs-client-root

nfs:

server: 10.151.30.57

path: /data/k8s

2、nfs-client-sa.yaml 创建rbac

apiVersion: v1

kind: ServiceAccount

metadata:

name: nfs-client-provisioner

---

kind: ClusterRole

apiVersion: rbac.authorization.k8s.io/v1

metadata:

name: nfs-client-provisioner-runner

rules:

- apiGroups: [""]

resources: ["persistentvolumes"]

verbs: ["get", "list", "watch", "create", "delete"]

- apiGroups: [""]

resources: ["persistentvolumeclaims"]

verbs: ["get", "list", "watch", "update"]

- apiGroups: ["storage.k8s.io"]

resources: ["storageclasses"]

verbs: ["get", "list", "watch"]

- apiGroups: [""]

resources: ["events"]

verbs: ["list", "watch", "create", "update", "patch"]

- apiGroups: [""]

resources: ["endpoints"]

verbs: ["create", "delete", "get", "list", "watch", "patch", "update"]

---

kind: ClusterRoleBinding

apiVersion: rbac.authorization.k8s.io/v1

metadata:

name: run-nfs-client-provisioner

subjects:

- kind: ServiceAccount

name: nfs-client-provisioner

namespace: default

roleRef:

kind: ClusterRole

name: nfs-client-provisioner-runner

apiGroup: rbac.authorization.k8s.io

3、StorageClass对象了

nfs-client-class.yaml

apiVersion: storage.k8s.io/v1

kind: StorageClass

metadata:

name: course-nfs-storage

provisioner: fuseim.pri/ifs # or choose another name, must match deployment's env PROVISIONER_NAME'

4、创建资源对象

kubectl create -f nfs-client.yaml

kubectl create -f nfs-client-sa.yaml

kubectl create -f nfs-client-class.yaml

5、查看

kubectl get pods

NAME READY STATUS RESTARTS AGE

...

nfs-client-provisioner-7648b664bc-7f9pk 1/1 Running 0 7h

...

kubectl get storageclass

NAME PROVISIONER AGE

course-nfs-storage fuseim.pri/ifs 11s

6、测试

在这个 PVC 对象中添加一个声明 StorageClass 对象的标识,这里我们可以利用一个 annotations 属性来标识

test-pvc.yaml(volumes方式)

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: test-pvc

annotations:

volume.beta.kubernetes.io/storage-class: "course-nfs-storage"

spec:

accessModes:

- ReadWriteMany

resources:

requests:

storage: 1Mi

使用

test-pod.yaml

kind: Pod

apiVersion: v1

metadata:

name: test-pod

spec:

containers:

- name: test-pod

image: busybox

imagePullPolicy: IfNotPresent

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-pvc

7、测试volumeClaimTemplates 属性来直接使用 StorageClass

test-statefulset-nfs.yaml

apiVersion: apps/v1beta1

kind: StatefulSet

metadata:

name: nfs-web

spec:

serviceName: "nginx"

replicas: 3

template:

metadata:

labels:

app: nfs-web

spec:

terminationGracePeriodSeconds: 10

containers:

- name: nginx

image: nginx:1.7.9

ports:

- containerPort: 80

name: web

volumeMounts:

- name: www

mountPath: /usr/share/nginx/html

volumeClaimTemplates:

- metadata:

name: www

annotations:

volume.beta.kubernetes.io/storage-class: course-nfs-storage

spec:

accessModes: [ "ReadWriteOnce" ]

resources:

requests:

storage: 1Gi

8、检查

kubectl create -f test-statefulset-nfs.yaml

statefulset.apps "nfs-web" created

kubectl get pods

NAME READY STATUS RESTARTS AGE

...

nfs-web-0 1/1 Running 0 1m

nfs-web-1 1/1 Running 0 1m

nfs-web-2 1/1 Running 0 33s

kubectl get pvc

NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE

...

www-nfs-web-0 Bound pvc-cc36b3ce-8b50-11e8-b585-525400db4df7 1Gi RWO course-nfs-storage 2m

www-nfs-web-1 Bound pvc-d38285f9-8b50-11e8-b585-525400db4df7 1Gi RWO course-nfs-storage 2m

www-nfs-web-2 Bound pvc-e348250b-8b50-11e8-b585-525400db4df7 1Gi RWO course-nfs-storage 1m

...

kubectl get pv

NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE

... 1d

pvc-cc36b3ce-8b50-11e8-b585-525400db4df7 1Gi RWO Delete Bound default/www-nfs-web-0 course-nfs-storage 4m

pvc-d38285f9-8b50-11e8-b585-525400db4df7 1Gi RWO Delete Bound default/www-nfs-web-1 course-nfs-storage 4m

pvc-e348250b-8b50-11e8-b585-525400db4df7 1Gi RWO Delete Boun

ls /data/k8s/

...

default-www-nfs-web-0-pvc-cc36b3ce-8b50-11e8-b585-525400db4df7

default-www-nfs-web-1-pvc-d38285f9-8b50-11e8-b585-525400db4df7

default-www-nfs-web-2-pvc-e348250b-8b50-11e8-b585-525400db4df7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值