部署NFS版StorageClass(存储类)

部署NFS版StorageClass存储类

    • NFS版PV动态供给StorageClass(存储类)
      • 基于NFS实现动态供应
      • 下载`NFS存储类资源清单`
      • 部署NFS服务器
      • 为StorageClass(存储类)创建所需的RBAC
      • 部署nfs-client-provisioner的deployment
      • 创建StorageClass
      • 使用存储类创建PVC

NFS版PV动态供给StorageClass(存储类)

  • 存储类的好处之一便是支持PV的动态供给,它甚至可以直接被视作为PV的创建模版,用户用到持久性存储时,需要通过创建PVC来绑定匹配的PV,此类操作需求较大,或者当管理员手动创建的PV无法满足PVC的所有需求时,系统按PVC的需求标准动态创建适配的PV会为存储管理带来极大的灵活性,不过仅那些属于StorageClassPVCPV才能产生绑定关系,即没有指定StorageClassPVC只能绑定同类的PV
  • 存储类对象名称至关重要,它是用户调用的标识,创建存储类对象时,除了名称之外,还需要为其定义三个关键字段。provisioner(供应者)parameter(参数)reclaimPolicy(回收策略)
  • 所以kubernetes提供了一种可以动态分配的工作机制,可用自动创建PV,该机制依赖于StorageClassAPI,将某个存储节点划分1T给kubernetes使用,当用户申请5Gi的PVC时,会自动从这1T的存储空间去创建一个5Gi的PV,而后自动与之进行关联绑定。
  • 动态PV供给的启用需要事先创建一个存储类,不同的Provisoner(供应者)的创建方法各有不同,并非所有的存储卷插件都由Kubernetes内建支持PV动态供给。

基于NFS实现动态供应

参考: https://www.cnblogs.com/xunweidezui/p/16930975.html

由于kubernetes内部不包含NFS驱动,所以需要使用外部驱动;
nfs-subdir-external-provisioner是一个自动供应器,它使用NFS服务端来支持动态供应
NFS-subdir-external- provisioner实例负责监视PersistentVolumeClaims(PVC)请求StorageClass,并自动为它们创建NFS所支持的PresistentVolumes(PV)


下载NFS存储类资源清单

NFS版StorageClass插件GitHub项目地址: https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner

部署NFS Provisioner参考

免积分下载部署yaml


部署NFS服务器

https://blog.csdn.net/omaidb/article/details/120926883


为StorageClass(存储类)创建所需的RBAC

nfs-rbac.yaml示例

---
# 创建命名空间
apiVersion: v1
kind: Namespace
metadata:name: storage
---
# 创建服务账号
kind: ServiceAccount
apiVersion: v1
metadata:# 服务账号名name: nfs-client-provisioner# 替换为deployment的命名空间namespace: storage
---
# 创建集群角色
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:# 集群角色名name: nfs-client-provisioner-runner
# 添加集群角色权限
rules:- apiGroups: [""]# 向该角色增加对PV执行查看,创建,删除 权限resources: ["persistentvolumes"]verbs: ["get", "list", "watch", "create", "delete"]- apiGroups: [""]# 向该角色增加对PVC执行查看,更新 权限resources: ["persistentvolumeclaims"]verbs: ["get", "list", "watch", "update"]- apiGroups: ["storage.k8s.io"]# 向该角色增加对动态存储类执行查看 权限resources: ["storageclasses"]verbs: ["get", "list", "watch"]- apiGroups: [""]# 向该角色增加对events(集群事件)进行 创建 更新 补丁 权限resources: ["events"]verbs: ["create", "update", "patch"]
---
# 创建集群角色绑定
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:# 角色绑定的名称name: run-nfs-client-provisioner
subjects:# 绑定服务账号- kind: ServiceAccount# 要绑定的服务账号名--就是第一个yaml创建的saname: nfs-client-provisioner# 绑定到哪个命名空间namespace: storage
roleRef:kind: ClusterRole# 要绑定的集群角色名--就是第2个yaml创建的集群角色name: nfs-client-provisioner-runnerapiGroup: rbac.authorization.k8s.io
---
# 创建role
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:# 创建的角色名name: leader-locking-nfs-client-provisioner
rules:- apiGroups: [""]# 向该角色增加对endpoint 查看 创建 更新 补丁 的权限resources: ["endpoints"]verbs: ["get", "list", "watch", "create", "update", "patch"]
---
# 创建role绑定
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:# 该角色绑定的名字name: leader-locking-nfs-client-provisioner
subjects:- kind: ServiceAccount# 要绑定的服务账号名--就是第一个yaml创建的服务账号name: nfs-client-provisioner# 替换为deployment要部署到的命名空间# 绑定到storage命名空间namespace: storage
roleRef:kind: Role# 要绑定的角色名称,就是上一个yaml创建的rolename: leader-locking-nfs-client-provisionerapiGroup: rbac.authorization.k8s.io

# 清理rbac授权
kubectl delete -f nfs-rbac.yaml -n kube-system# 执行rbac授权
kubectl apply -f nfs-rbac.yaml

部署nfs-client-provisioner的deployment

apiVersion: apps/v1
kind: Deployment
metadata:# Deployment名name: nfs-client-provisionerlabels:app: nfs-client-provisioner# 部署到哪个命名空间namespace: storage
spec:replicas: 1strategy:type: Recreateselector:matchLabels:app: nfs-client-provisionertemplate:metadata:labels:app: nfs-client-provisionerspec:# 使用哪个服务账号serviceAccountName: nfs-client-provisionercontainers:- name: nfs-client-provisioner# image: lizhenliang/nfs-subdir-external-provisioner:v4.0.1image: k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2volumeMounts:- name: nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAMEvalue: k8s-sigs.io/nfs-subdir-external-provisioner- name: NFS_SERVER# NFS服务器地址value: 192.168.31.63- name: NFS_PATH# NFS服务器share目录value: /ifs/kubernetesvolumes:- name: nfs-client-rootnfs:# NFS服务器地址server: 192.168.31.63# NFS服务器share目录path: /ifs/kubernetes

创建StorageClass

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfs-client
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner # 或选择其他名称,必须与部署的环境 PROVISIONER_NAME 匹配
parameters:# 启用PV归档模式 true|falsearchiveOnDelete: "false"

使用存储类创建PVC

---
# 创建pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:# pvc名称name: pv-volume
spec:# 存储类名称storageClassName: nfs-clientaccessModes:- ReadWriteOnceresources:requests:storage: 10Mi # pvc容量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/76613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue使用el-table给每一行数据上面增加一行自定义合并行

// template <template><el-table:data"flattenedData":span-method"objectSpanMethod"borderclass"custom-header-table"style"width: 100%"ref"myTable":height"60vh"><!-- 订单详情列 -->&l…

vue项目使用html2canvas和jspdf将页面导出成PDF文件

一、需求&#xff1a; 页面上某一部分内容需要生成pdf并下载 二、技术方案&#xff1a; 使用html2canvas和jsPDF插件 三、js代码 // 页面导出为pdf格式 import html2Canvas from "html2canvas"; import jsPDF from "jspdf"; import { uploadImg } f…

大模型LLM表格报表分析:markitdown文件转markdown,大模型markdown统计分析

整体流程&#xff1a;用markitdown工具文件转markdown&#xff0c;然后大模型markdown统计分析 markitdown https://github.com/microsoft/markitdown 在线体验&#xff1a;https://huggingface.co/spaces/AlirezaF138/Markitdown 安装&#xff1a; pip install markitdown…

Linux 第二讲 --- 基础指令(二)

前言 这是基础指令的第二部分&#xff0c;但是该部分的讲解会大量使用到基础指令&#xff08;一&#xff09;的内容&#xff0c;为了大家的观感&#xff0c;如果对Linux的一些基本指令不了解的话&#xff0c;可以先看基础指令&#xff08;一&#xff09;&#xff0c;同样的本文…

python格式化字符串漏洞

什么是python格式化字符串漏洞 python中&#xff0c;存在几种格式化字符串的方式&#xff0c;然而当我们使用的方式不正确的时候&#xff0c;即格式化的字符串能够被我们控制时&#xff0c;就会导致一些严重的问题&#xff0c;比如获取敏感信息 python常见的格式化字符串 百…

LLaMA-Factory双卡4090微调DeepSeek-R1-Distill-Qwen-14B医学领域

unsloth单卡4090微调DeepSeek-R1-Distill-Qwen-14B医学领域后&#xff0c;跑通一下多卡微调。 1&#xff0c;准备2卡RTX 4090 2&#xff0c;准备数据集 医学领域 pip install -U huggingface_hub export HF_ENDPOINThttps://hf-mirror.com huggingface-cli download --resum…

React Hooks: useRef,useCallback,useMemo用法详解

1. useRef&#xff08;保存引用值&#xff09; useRef 通常用于保存“不会参与 UI 渲染&#xff0c;但生命周期要长”的对象引用&#xff0c;比如获取 DOM、保存定时器 ID、WebSocket等。 新建useRef.js组件&#xff0c;写入代码&#xff1a; import React, { useRef, useSt…

Spring AI 结构化输出详解

一、Spring AI 结构化输出的定义与核心概念 Spring AI 提供了一种强大的功能&#xff0c;允许开发者将大型语言模型&#xff08;LLM&#xff09;的输出从字符串转换为结构化格式&#xff0c;如 JSON、XML 或 Java 对象。这种结构化输出能力对于依赖可靠解析输出值的下游应用程…

THM Billing

1. 信息收集 (1) Nmap 扫描 bashnmap -T4 -sC -sV -p- 10.10.189.216 输出关键信息&#xff1a; PORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 8.4p1 Debian 5deb11u380/tcp open http Apache 2.4.56 (Debian) # MagnusBilling 应用3306/tcp open …

布局决定终局:基于开源AI大模型、AI智能名片与S2B2C商城小程序的战略反推思维

摘要&#xff1a;在商业竞争日益激烈的当下&#xff0c;布局与终局预判成为企业成功的关键要素。本文探讨了布局与终局预判的智慧性&#xff0c;强调其虽无法做到百分之百准确&#xff0c;但能显著提升思考能力。终局思维作为重要战略工具&#xff0c;并非一步到位的战略部署&a…

贪心算法 day08(加油站+单调递增的数字+坏了的计算机)

目录 1.加油站 2.单调递增的数字 3.坏了的计算器 1.加油站 链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; gas[index] - cost[index]&#xff0c;ret 表示的是在i位置开始循环时剩余的油量 a到达的最大路径假设是f那么我们可以得出 a b …

【技术派部署篇】云服务器部署技术派

1 环境搭建 1.1 JDK安装 # ubuntu sudo apt update # 更新apt apt install openjdk-8-jdk # 安装JDK安装完毕之后&#xff0c;执行 java -version 命令进行验证&#xff1a; 1.2 Maven安装 cd ~ mkdir soft cd soft wget https://dlcdn.apache.org/maven/maven-3/3.8.8/bina…

Linux:35.其他IPC和IPC原理+信号量入门

通过命名管道队共享内存的数据发送进行保护的bug&#xff1a; 命名管道挂掉后&#xff0c;进程也挂掉了。 6.systemV消息队列 原理:进程间IPC:原理->看到同一份资源->维护成为一个队列。 过程&#xff1a; 进程A,进程B进行通信。 让操作系统提供一个队列结构&#xff0c;…

【数据结构】红黑树超详解 ---一篇通关红黑树原理(含源码解析+动态构建红黑树)

一.什么是红黑树 红黑树是一种自平衡的二叉查找树&#xff0c;是计算机科学中用到的一种数据结构。1972年出现&#xff0c;最初被称为平衡二叉B树。1978年更名为“红黑树”。是一种特殊的二叉查找树&#xff0c;红黑树的每一个节点上都有存储表示节点的颜色。每一个节点可以是…

2024年第十五届蓝桥杯CC++大学A组--成绩统计

2024年第十五届蓝桥杯C&C大学A组--成绩统计 题目&#xff1a; 动态规划&#xff0c; 对于该题&#xff0c;考虑动态规划解法&#xff0c;先取前k个人的成绩计算其方差&#xff0c;并将成绩记录在数组中&#xff0c;记录当前均值&#xff0c;设小蓝已检查前i-1个人的成绩&…

vue2使用ezuikit-js播放萤石视频

需求&#xff1a;需要在大屏上播放萤石视频&#xff0c;用到官方的ezuikit-js插件实现&#xff0c;并实现视频播放切换功能。有个问题至今没有解决&#xff0c;就是萤石视频的宽高是固定的&#xff0c;不会根据大屏缩放进行自适应。我这边做了简单的刷新自适应。 1.下载ezuikit…

爱普生TG-5510CA和TG-5510CB晶振成为服务器中的理想之选

在数字化时代&#xff0c;服务器作为数据存储、处理与传输的核心枢纽&#xff0c;其性能的优劣直接影响着整个信息系统的运行效率与稳定性。从企业内部的数据中心到云计算服务提供商的大规模集群&#xff0c;服务器需要应对海量数据的高速处理与频繁交互。而在服务器复杂精密的…

使用opentelemetry 可观测监控springboot应用的指标、链路实践,使用zipkin展示链路追踪数据,使用grafana展示指标

1.安装docker&#xff0c;docker-compose &#xff08;1&#xff09;安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm22.2、部署dockertar xvf docker-20.10.19.tgz cp docker/* /usr/bin/vim /usr/lib/systemd/system/docker.service[Unit] Descript…

5. 蓝桥公园

题目描述 小明喜欢观景&#xff0c;于是今天他来到了蓝桥公园。 已知公园有 N 个景点&#xff0c;景点和景点之间一共有 M 条道路。小明有 Q 个观景计划&#xff0c;每个计划包含一个起点 stst 和一个终点 eded&#xff0c;表示他想从 stst 去到 eded。但是小明的体力有限&am…

虚幻基础:碰撞帧运算

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 碰撞碰撞盒线段检测 帧运算&#xff1a;每个程序流就是一帧的计算结果速度过快时(10000)&#xff0c;导致每帧移动过大(83)&#xff0c;从而导致碰撞盒错过而没有碰撞速度快的碰撞要用线段检测 碰撞 碰撞盒 线段检…