一个简单的小开发
首页
分类
标签
归档
关于

YDS

30岁大龄程java程序员,心不老,神不灭
首页
分类
标签
归档
关于
  • K8S

    • K8S-集群安装(2.24前后版本的安装方式都有)
    • K8S基础概念学习
    • K8S控制台安装(安装dashboard)
    • storageclass学习
      • 介绍
      • StorageClass 资源
      • 创建基于nfs的第三方制备器
      • 参考
    • configmap学习
    • K8S发布JAVA项目
    • k8s长期token的使用方式
    • 创建一个pvc
  • DOCKER

  • HELM

  • LINUX

  • DEVOPS
  • K8S
yds
2023-11-25
目录

storageclass学习

# storageclass

# 介绍

StorageClass 为管理员提供了描述存储 "类" 的方法。 不同的类型可能会映射到不同的服务质量等级或备份策略,或是由集群管理员制定的任意策略。 Kubernetes 本身并不清楚各种类代表的什么。这个类的概念在其他存储系统中有时被称为 "配置文件"。

# StorageClass 资源

每个 StorageClass 都包含 provisioner、parameters 和 reclaimPolicy 字段, 这些字段会在 StorageClass 需要动态分配 PersistentVolume 时会使用到。

# 创建基于nfs的第三方制备器

由于NFS 没有内部制备器,但可以使用外部制备器。 也有第三方存储供应商提供自己的外部制备器。

  • 自定义制备器

    前题是已经安装nfs服务

    vim nfs-client.yaml
    
    1
    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
    ---
    kind: Deployment
    apiVersion: apps/v1
    metadata:
      name: nfs-client-provisioner
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nfs-client-provisioner
      strategy:
        type: Recreate
      template:
        metadata:
          labels:
            app: nfs-client-provisioner
        spec:
          serviceAccountName: nfs-client-provisioner
          containers:
            - name: nfs-client-provisioner
              image: quay.io/vbouchaud/nfs-client-provisioner:latest
              volumeMounts:
                - name: nfs-client-root
                  mountPath: /persistentvolumes
              env:
                - name: PROVISIONER_NAME
                  value: fuseim.pri/ifs
                - name: NFS_SERVER
                  value: node0
                - name: NFS_PATH
                  value: /home/nfs/data
          volumes:
            - name: nfs-client-root
              nfs:
                server: node0  ## nfs服务器host
                path: /home/nfs/data   ## nfs数据目录
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    kubectl apply -f nfs-client.yaml
    
    1
  • 创建storageclass

    vim nfs-client-storageclass.yaml
    
    1
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: nfs-client-storageclass
    provisioner: fuseim.pri/ifs ## 和上面自定义制备器的名称变量值一致
    
    1
    2
    3
    4
    5
  • 测试pvc

    vim test-nfs-pvc.yaml
    
    1
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: test-nfs-pvc2
      annotations:
        volume.beta.kubernetes.io/storage-class: "nfs-client-storageclass"
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 10Gi
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
  • 测试pod

    vim test-pod.yaml
    
    1
    apiVersion: v1
    kind: Pod
    metadata:
      name: test-storageclass-pod
    spec:
      containers:
      - name: busybox
        image: busybox:latest
        imagePullPolicy: IfNotPresent
        command:
        - "/bin/sh"
        - "-c"
        args:
        - "sleep 3600"
        volumeMounts:
        - name: nfs-pvc
          mountPath: /mnt
      restartPolicy: Never
      volumes:
      - name: nfs-pvc
        persistentVolumeClaim:
          claimName: test-nfs-pvc2
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22

    进入pod输出文件

    kubectl exec -it pod_name sh
    cd /mnt/
    echo "test" > test.txt
    
    1
    2
    3

    nfs服务器数据目录自动创建pv挂载的目录,里面有test.txt。

helm 安装:https://artifacthub.io/packages/helm/nfs-subdir-external-provisioner/nfs-subdir-external-provisioner

# 参考

https://zhuanlan.zhihu.com/p/104555373

https://kubernetes.io/zh/docs/concepts/storage/storage-classes/

https://hub.docker.com/r/vbouchaud/nfs-client-provisioner
1
2
3
4
5
#K8S
上次更新: 2024/09/30, 01:34:11
K8S控制台安装(安装dashboard)
configmap学习

← K8S控制台安装(安装dashboard) configmap学习→

最近更新
01
使用docker-compose安装mysql
09-30
02
鸿蒙app开发中的数据驱动ui渲染问题
08-01
03
LINUX连接openvpn
07-02
更多文章>
Theme by Vdoing | Copyright © 2020-2024 YDS
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式