尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

创建storageclass (nfs)

创建storageclass (nfs) 每个StorageClass都包含字段provisionerparameters和reclaimPolicy。具体来说StorageClass会定义以下两部分1、PV的属性 比如存储的大小、类型等2、创建这种PV需要使用到的存储插件比如Ceph、NFS等provisioner供应商storageclass需要有一个供应者用来确定我们使用什么样的存储来创建pv常见的provisioner如下https://kubernetes.io/zh/docs/concepts/storage/storage-classes/provisioner既可以由内部供应商提供也可以由外部供应商提供如果是外部供应商可以参考https://github.com/kubernetes-incubator/external-storage/下提供的方法创建。1.创建一个sa[rootmaster]#vim sa.yamlapiVersion: v1kind: ServiceAccountmetadata:name: nfs-provisioner2.对sa进行授权[rootmaster]#kubectl create clusterrolebinding nfs-provisioner-clusterrolebinding --clusterrolecluster-admin --serviceaccountdefault:nfs-provisioner3、安装nfs-provisioner程序创建一个共享文件夹[rootmaster]#mkdir /data/nfs_pro -p[rootmaster]#cat /etc/exports/data/nfs_pro *(rw,no_root_squash)[rootmaster]#exportfs -arv[rootmaster]# cat nfs-deployment.yamlkind: DeploymentapiVersion: apps/v1metadata:name: nfs-provisionerspec:selector:matchLabels:app: nfs-provisionerreplicas: 1strategy:type: Recreatetemplate:metadata:labels:app: nfs-provisionerspec:serviceAccount: nfs-provisionercontainers:- name: nfs-provisionerimage: registry.cn-beijing.aliyuncs.com/mydlq/nfs-subdir-external-provisioner:v4.0.0imagePullPolicy: IfNotPresentvolumeMounts:- name: nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAMEvalue: example.com/nfs- name: NFS_SERVERvalue: 192.168.40.180- name: NFS_PATHvalue: /data/nfs_provolumes:- name: nfs-client-rootnfs:server: 192.168.40.180path: /data/nfs_pro[rootmaster]#kubectl apply -f nfs-deployment.yaml4.创建storageclass动态供给pv[rootmaster]#cat nfs-storageclass.yamlkind: StorageClassapiVersion: storage.k8s.io/v1metadata:name: nfsprovisioner: example.com/nfs[rootmaster]#kubectl apply -f nfs-storageclass.yaml#查看storageclass是否创建成功[rootmaster]# kubectl get storageclass注意provisioner处写的example.com/nfs应该跟安装nfs provisioner时候的env下的PROVISIONER_NAME的value值保持一致5.创建pod通过storageclass动态生成pvc[rootmaster]#vim statefulset.yamlapiVersion: v1kind: Servicemetadata:name: nginxlabels:app: nginxspec:ports:- name: webport: 80clusterIP: Noneselector:app: nginx---apiVersion: apps/v1kind: StatefulSetmetadata:name: webspec:replicas: 2selector:matchLabels:app: nginxserviceName: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: docker.io/library/nginx:latestimagePullPolicy: IfNotPresentports:- containerPort: 80name: webprotocol: TCPvolumeMounts:- name: wwwmountPath: /usr/share/nginx/htmlvolumeClaimTemplates:- metadata:name: wwwspec:accessModes:- ReadWriteOncestorageClassName: nfsresources:requests:storage: 1Gi查看pod,pvc,pv[rootmaster]kubectl get pods[rootmaster]kubectl get pvc[rootmaster]kubectl get pv
返回列表