资讯专栏INFORMATION COLUMN

k8s基于storageclass的动态存储

IT那活儿 / 2493人阅读
k8s基于storageclass的动态存储
使用说明:一般在k8s中创建有状态服务时会需要创建pv+pvc静态存储来实现存储,基于sc的动态存储减少了用户对于底层存储资源各方面细节的关注,只需要关注自己创建的pvc资源,引用存储类的对应sc资源即可,简单来说就是无需创建pv,只需创建pvc后k8s系统会自动创建合适的pv,并将pv和pvc绑定好实现动态存储。


一. 创建rbac授权

(集群中开启了rbac)

cat nfs-rbac.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-client-provisioner

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: nfs-client-provisioner-clusterrole
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"]

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: nfs-client-provisioner-clusterrolebinding
subjects:
- kind: ServiceAccount
  name: nfs-client-provisioner
  namespace: default
roleRef:
  kind: ClusterRole
  name: nfs-client-provisioner-clusterrole
  apiGroup: rbac.authorization.k8s.io


Kubectl apply -f nfs-rbac.yaml


二. 创建provisioner

NFS Provisioner 是一个自动配置卷程序,它使用现有的和已配置的 NFS 服务器来支持通过持久卷声明动态配置 Kubernetes 持久卷
cat nfs-deployment.yaml

```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-client-prosioner
spec:
  selector:
    matchLabels:
      app: nfs-client-prosioner
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: nfs-client-prosioner
    spec:
      serviceAccountName: nfs-client-provisioner
      containers:
      - name: nfs-client-prosioner
        image: registry.cn-hangzhou.aliyuncs.com/rookieops/nfs-client-provisioner:v0.1
        imagePullPolicy: IfNotPresent
        volumeMounts:
        - name: nfs-client-root
         mountPath: /data/pv
        env:
        - name: PROVISIONER_NAME
         value: rookieops/nfs
        - name: NFS_SERVER
         value: 192.168.16.1     
        - name: NFS_PATH
         value: /home/nfs #nfs的共享目录
      volumes:
      - name: nfs-client-root
       nfs:
         server: 192.168.16.1
         path: /home/nfs
注意:ip 192.168.16.1为nfs的服务器地址  /home/nfs 为nfs的共享目录
注意:动态存储创建是基于集群中已经安装并能使用nfs的基础上来创建的

三. 创建storageclass


cat storageclass-naf.yaml

```
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs-client-storageclass
provisioner: rookieops/nfs

`
``

注意:provisioner 的参数rookieops/nfs 需要和上面创建的provisioner中的PROVISIONER_NAME对应
通过kubectl get sc 查看创建的sc 资源


四. 创建pvc


cat pvc.yaml

```
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-nfs-pvc2
  annotations:
    volume.beta.kubernetes.io/storage-class: "nfs-client-storageclass"
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 300Gi
```

注意:nfs-client-storageclass为上面sc定义的名字
通过kubectl get pvc 和kubectl get pv 查看新创建的绑定状态

END


更多精彩干货分享

点击下方名片关注

IT那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129784.html

相关文章

  • 干货速递 ▎Kubernetes有状态集群服务部署与管理(上)

    摘要:有状态集群服务,与普通有状态服务相比,它多了集群管理的需求。为此开发了一套以为核心的全新特性,方便了有状态集群服务在上的部署和管理。 2016年12月2日,时速云架构师张寿红应邀参加ArchSummit2016全球架构师峰会,并在微服务与容器实践专场做了《Kubernetes有状态集群服务部署与管理》的干货分享。 showImg(https://segmentfault.com/img...

    Pink 评论0 收藏0
  • Kubernetes容器存储接口(CSI)GA了

    摘要:作者,高级软件工程师实施的容器存储接口已在版本中升级为。功能受弃用政策保护。随着容器存储接口的采用,卷层变得真正可扩展。年中国论坛提案征集现已开放论坛让用户开发人员从业人员汇聚一堂,面对面进行交流合作。 showImg(https://segmentfault.com/img/bVbnBe1?w=620&h=340); 作者:Saad Ali,Google高级软件工程师 Kuberne...

    zengdongbao 评论0 收藏0
  • Kubernetes容器存储接口(CSI)GA了

    摘要:作者,高级软件工程师实施的容器存储接口已在版本中升级为。功能受弃用政策保护。随着容器存储接口的采用,卷层变得真正可扩展。年中国论坛提案征集现已开放论坛让用户开发人员从业人员汇聚一堂,面对面进行交流合作。 showImg(https://segmentfault.com/img/bVbnBe1?w=620&h=340); 作者:Saad Ali,Google高级软件工程师 Kuberne...

    yanwei 评论0 收藏0
  • 【容器云 UK8S】使用kubectl操作集群:创建PVC之创建StorageClass和创建一个存

    摘要:创建当前存储卷支持类型的以及,详见在中使用在中使用创建在创建持久化存储卷之前,你需要先创建,然后在中使用。集群默认创建了两个,你也可以创建一个新的,示例及说明如下版本年月日之后创建的集群存储供应方,此处不可更改。创建PVC当前存储卷支持SSD、SATA类型的UDisk以及UFS,详见:在UK8S中使用UDisk在UK8S中使用UFS创建StorageClass在创建持久化存储卷(persis...

    Tecode 评论0 收藏0
  • 猫头鹰深夜翻译:持久化容器存储

    摘要:如果我们的容器使用,文件如下在这个例子中,我们可以重复创建和销毁,同一个持久存储会被提供给新的,无论容器位于哪个节点上。 前言 临时性存储是容器的一个很大的买点。根据一个镜像启动容器,随意变更,然后停止变更重启一个容器。你看,一个全新的文件系统又诞生了。 在docker的语境下: # docker run -it centos [root@d42876f95c6a /]# echo H...

    tianhang 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<