StorageClass存储类

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: StorageClass存储类

屏幕截图 2023-08-28 163846.png

存储类

storageclass连接存储插件,根据PVC的消费动态生成PV

一、开启NFS

[root@master ~]# yum -nd
[root@master ~]# cat /etc/exports 
/nfsdata *(rw,sync,no_root_squash) 
[root@master ~]# systemctl start rpcbind 
[root@master ~]# systemctl start nfs-server  
[root@master ~]# systemctl enable rpcbind 
[root@master ~]# systemctl enable nfs-server 
[root@master ~]# showmount -e

PS: 不要忘了,node节点也要下载 nfs-utils,否则将不能挂载。

二、开启rbac权限

RBAC基于角色的访问控制--全拼Role-Based Access Control

[root@master ~]# vim rbac-rolebind.yaml 
kind: Namespace 
apiVersion: v1 
metadata: 
  name: bdqn 
--- 
apiVersion: v1 
kind: ServiceAccount  
metadata: 
  name: nfs-provisioner 
  namespace: bdqn  
--- 
apiVersion: rbac.authorization.k8s.io/v1 
kind: ClusterRole 
metadata: 
  name: nfs-provisioner-runner 
  namespace: bdqn 
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: ["watch", "create", "update", "patch"] 
  - apiGroups: [""] 
    resources: ["services", "endpoints"] 
    verbs: ["get","create","list", "watch","update"]
  - apiGroups: ["extensions"] 
    resources: ["podsecuritypolicies"] 
    resourceNames: ["nfs-provisioner"] 
    verbs: ["use"]  
--- 
kind: ClusterRoleBinding 
apiVersion: rbac.authorization.k8s.io/v1 
metadata: 
  name: run-nfs-provisioner 
subjects: 
  - kind: ServiceAccount 
    name: nfs-provisioner 
    namespace: bdqn 
roleRef: 
  kind: ClusterRole 
  name: nfs-provisioner-runner 
  apiGroup: rbac.authorization.k8s.io

三、创建nfs-deployment.yaml

[root@master sc]# vim nfs-deployment.yaml 
apiVersion: apps/v1 
kind: Deployment 
metadata: 
  name: nfs-client-provisioner 
  namespace: bdqn 
spec: 
  selector: 
    matchLabels: 
      app: nfs-client-provisioner 
  replicas: 1 
  strategy: 
    type: Recreate 
  template: 
    metadata: 
      labels: 
        app: nfs-client-provisioner 
    spec: 
      serviceAccount: nfs-provisioner      
      containers: 
        - name: nfs-client-provisioner 
          image: registry.cn-hangzhou.aliyuncs.com/open-ali/nfs-client-provisioner
          imagePullPolicy: IfNotPresent 
          volumeMounts: 
            - name: nfs-client-root 
              mountPath: /persistentvolumes 
          env: 
            - name: PROVISIONER_NAME 
              value: bdqn-test 
            - name: NFS_SERVER 
              value: 192.168.8.10 
            - name: NFS_PATH
              value: /nfsdata 
      volumes: 
        - name: nfs-client-root 
          nfs:
            server: 192.168.8.10 
            path: /nfsdata

PS: nfs-client-provisioner这个镜像的作用,它通过k8s集群内置的NFS驱动,挂载远端的NFS服务器到本地目录(这里的本地目录指的是容器内的目录),然后将自身作为storage provisioner,关联到storageclass。

并且暴露了一个环境变量

env:

name: PROVISIONER_NAME #提供者的名称 重要! 记住这个名字

value: bdqn-test #真正提供存储的是bdqn-test

name: NFS_SERVER #用的是nfs服务

注:如果nfs-client-provisioner noready,执行iptables -F

四、创建storageclass资源

kubectl explain sc #可以查看一下sc的帮助 
[root@master ~]# vim storageclass.yaml #创建一个最简略的sc资源一共7行 
apiVersion: storage.k8s.io/v1 
kind: StorageClass 
metadata: 
  name: storageclass 
  namespace: bdqn     #所在名称空间 
provisioner: bdqn-test     #存储提供者是谁 需要和上段env里指定的name下的 value:bdqn-test一致
reclaimPolicy: Retain 
[root@master ~]# kubectl get sc #不受名称空间影响,可以直接查到 
[root@master ~]# kubectl describe sc

验证:最后创建一个pvc资源对象,看能否达到自动创建pv的效果

五、创建PVC验证

[root@master sc]# vim test-pvc.yaml 
kind: PersistentVolumeClaim 
apiVersion: v1 
metadata: 
  name: test-pvc #给pod资源或其他资源管理用的名称 
  namespace: bdqn 
spec: 
  storageClassName: storageclass 
  accessModes: 
    - ReadWriteOnce 
  resources: 
    requests: 
      storage: 200Mi #设置存储大小 
[root@master ~]# kubectl get pvc -n bdqn  
[root@master ~]# kubectl get pod -n bdqn #查到pod的名称 
[root@master ~]# ls /nfsdata/ 
1.txt bdqn-test-pvc-pvc-ebca0cbf-6bd9-4b49-9967-09e266de9ea4 
[root@master ~]# kubectl exec -it -n bdqn nfs-client-provisioner-f645cc7-rznbs sh
/ #ls /persistentvolumes/

六、创建一个Pod测试

vim test-pod.yaml
apiVersion: v1 
kind: Pod 
metadata: 
  name: test-pod 
  namespace: bdqn 
spec: 
  containers: 
  - name: test-pod 
    image: busybox 
    args: 
      - /bin/sh 
      - -c 
      - sleep 3000 
    volumeMounts: 
      - name: nfs-pv 
        mountPath: /test #随便自定义一个目录即可 
  volumes: 
    - name: nfs-pv 
      persistentVolumeClaim: 
        claimName: test-pvc #关联上我们上面创建的pvc名字 
[root@master ~]# kubectl apply -f test-pod.yaml
pod/test-pod created 
[root@master ~]# kubectl get pod -n bdqn
[root@master ~]# ls /nfsdata/ 
1.txt bdqn-test-pvc-pvc-ebca0cbf-6bd9-4b49-9967-09e266de9ea4 
[root@master sc]# echo 123456 > /nfsdata/bdqn-test-pvc-pvc-ebca0cbf-6bd9-4b49- 9967-09e266de9ea4/test.txt 
[root@master ~]# kubectl exec -n bdqn test-pod cat /test/test.txt 
123456


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
存储 Kubernetes API
kubernetes【存储】1. 共享存储pv、pvc、StorageClass使用详解(1)
kubernetes【存储】1. 共享存储pv、pvc、StorageClass使用详解(1)
kubernetes【存储】1. 共享存储pv、pvc、StorageClass使用详解(1)
|
3月前
|
存储 Kubernetes 容器
Kubernetes 存储选项:持久化卷与存储类
【8月更文第29天】随着容器化的普及,越来越多的应用程序需要持久化数据以保持状态信息。Kubernetes 提供了一套完整的解决方案来管理和配置持久化存储,包括持久卷 (Persistent Volume, PV)、持久卷声明 (Persistent Volume Claim, PVC) 和存储类 (StorageClass)。本文将详细介绍这些概念,并通过实际示例来演示如何在 Kubernetes 中配置存储。
287 1
|
6月前
|
存储 Kubernetes 应用服务中间件
k8s-配置与存储-持久化存储-NFS 挂载、StorageClass 存储类 动态创建NFS-PV案例
k8s-配置与存储-持久化存储-NFS 挂载、StorageClass 存储类 动态创建NFS-PV案例
592 0
|
6月前
第十三章 绑定StorageClass演示绑定PV和PVC
第十三章 绑定StorageClass演示绑定PV和PVC
54 1
|
存储 Kubernetes 调度
Kubernetes 中存储使用介绍(PV、PVC和StorageClass)
在 Kubernetes 中的应用,都是以 Pod 的形式运行的,当我们要是在 Kubernetes 上运行一些需要存放数据的应用时,便需要关注应用存放的数据是否安全可靠。因为 Pod 是有生命周期的,那么也就是说当 Pod 被删除或重启后,Pod 里面所运行的数据也会随之消失。
2034 0
Kubernetes 中存储使用介绍(PV、PVC和StorageClass)
|
6月前
|
存储 Kubernetes 关系型数据库
kubernetes学习之持久化存储StorageClass(4---nfs存储服务)
kubernetes学习之持久化存储StorageClass(4---nfs存储服务)
135 0
|
11月前
|
Kubernetes Cloud Native API
k8s如何访问 pod 元数据
k8s如何访问 pod 元数据
|
存储 Kubernetes 安全
Kubernetes 中的对象是如何删除的:Finalizers 字段介绍
Kubernetes 中的对象删除并不像表面上看起来那么简单,删除对象涉及一系列过程,例如对象的级联和非级联删除,在删除之前检查以确定是否可以安全删除对象等等。这些都是通过称为 `Finalizers`(终结器)的 API 对象实现的。
1152 0
Kubernetes 中的对象是如何删除的:Finalizers 字段介绍
|
存储 Kubernetes Docker
kubernetes存储对象volume
kubernetes存储对象volume
|
存储 Kubernetes 容器
kubernetes创建nfs存储类
kubernetes创建nfs存储类
223 0