K8s中创建NFS存储分配器和StorageClass

k8s数据持久化之NFS 目录 NFS 部署nfs 测试 k8s中使用nfs示例 测试数据共享 测试数据持久化 NFS NFS是主流的k8s数据持久化解决方案与pod共享存储解决方案 NFS数据卷:提供对NFS挂载支持,可以自动将NFS共享路径挂载到Pod中 NFS:是一个主流的文件共享服务器 部署nfs 1、实施nfs(所有节点) yum install nfs-utils -y 2、选择一台nfs-utils服务器作为数据节点,并进行配置 修改nfs服务器配置 阅读详情

1 创建NFS共享目录

# 创建目录
sudo mkdir -p /data/k8s
 
# 添加权限
sudo chmod 777 /data/k8s

# 编辑文件
sudo vim /etc/exports
 
# 添加以下内容
# 下面的含有“*”的旧版本可以,新版本可能出问题
# /data/k8s	192.168.108.*(rw,sync,no_subtree_check)
/data/k8s	192.168.108.0/24(rw,sync,no_subtree_check)
 
# 重启服务
sudo service nfs-kernel-server restart
 
# 查看共享目录
sudo showmount -e 192.168.108.100
# 返回值如下,表示创建成功
Export list for 192.168.108.100:
/data/k8s	192.168.108.0/24

2 设置存储分配器的权限

创建nfs-client-provisioner-authority.yaml文件

# nfs-client-provisioner-authority.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: default
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: nfs-client-provisioner-runner
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: ["create", "update", "patch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: run-nfs-client-provisioner
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    # replace with namespace where provisioner is deployed
    namespace: default
roleRef:
  kind: ClusterRole
  name: nfs-client-provisioner-runner
  apiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: default
rules:
  - apiGroups: [""]
    resources: ["endpoints"]
    verbs: ["get", "list", "watch", "create", "update", "patch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: default
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    # replace with namespace where provisioner is deployed
    namespace: default
roleRef:
  kind: Role
  name: leader-locking-nfs-client-provisioner
  apiGroup: rbac.authorization.k8s.io

3 创建NFS存储分配器

创建nfs-client-provisioner.yaml文件

# nfs-client-provisioner.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-client-provisioner
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: nfs-client-provisioner
  template:
    metadata:
      labels:
        app: nfs-client-provisioner
    spec:
      serviceAccountName: nfs-client-provisioner
      containers:
        - name: nfs-client-provisioner
          image: quay.io/external_storage/nfs-client-provisioner:latest
          volumeMounts:
            - name: nfs-client-root
              mountPath: /persistentvolumes
          env:
            # 存储分配器名称
            - name: PROVISIONER_NAME
              value: nfs-provisioner
            # NFS服务器地址,设置为自己的IP
            - name: NFS_SERVER
              value: 192.168.108.100
            # NFS共享目录地址
            - name: NFS_PATH
              value: /data/k8s
      volumes:
        - name: nfs-client-root
          nfs:
            # 设置为自己的IP
            server: 192.168.108.100
            # 对应NFS上的共享目录
            path: /data/k8s

4 创建StorageClass

创建nfs-storage-class.yaml文件

# nfs-storage-class.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs-data

# 存储分配器的名称
# 对应“nfs-client-provisioner.yaml”文件中env.PROVISIONER_NAME.value
provisioner: nfs-provisioner

# 允许pvc创建后扩容
allowVolumeExpansion: True

parameters:
  # 资源删除策略,“true”表示删除PVC时,同时删除绑定的PV
  archiveOnDelete: "true"

查看StorageClass

kubectl get storageclass

5 创建PVC

创建nfs-pvc.yaml文件

# nfs-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  # 注意,后面Deployment申请资源需要用到此处的名称
  name: nfs-pvc
spec:
  # 设置资源的访问策略,ReadWriteMany表示该卷可以被多个节点以读写模式挂载;
  accessModes:
    - ReadWriteMany
 
  # 设置资源的class名称
  # 注意,此处的名称必须与“nfs-storage-class.yaml”中的storageClassName相同
  storageClassName: nfs-data
 
  # 设置申请的资源大小
  resources:
    requests:
      storage: 100Mi

查看PVC

kubectl get pvc

6 创建Deployment控制器

创建nfs-deployment-python.yaml文件

# nfs-deployment-python.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-deployment-python
spec:
  replicas: 2
  selector:
    matchLabels:
      app: python-nfs
  template:
    metadata:
      labels:
        app: python-nfs
    spec:
      containers:
        - name: python-nfs
          image: python:3.8.2
          imagePullPolicy: IfNotPresent
          command: ['/bin/bash', '-c', '--']
          # 启动"python -m http.server 80"服务,“>>”表示向文件中追加数据
          args: ['echo "<p> The host is $(hostname) </p>" >> /containerdata/podinfor; python -m http.server 80']
          # 设置80端口
          ports:
            - name: http
              containerPort: 80
          # 设置挂载点
          volumeMounts:
            # 此处的名称与volumes有对应关系
            - name: python-nfs-data
              mountPath: /containerdata

      # 配置nfs存储卷
      volumes:
        # 此处的名称需与spec.containers.volumeMounts.name相同
        - name: python-nfs-data
          # 向PVC申请资源,此处的名称对应# nfs-pvc.yaml文件中的metadata.name
          persistentVolumeClaim:
            claimName: nfs-pvc

7 截图

k8s之挂载NFS到POD中 NFS全称network file system,是一种允许我们像使用本地磁盘一样,使用远端某机器的磁盘的一种技术,采用cs架构,所以其本质上可以看做是一种数据存储解决方案。 阅读详情

相关推荐

k8s中的PVC为何需要延迟绑定?(WaitForFirstConsumer)

WaitForFirstConsumer其实就是告诉volume控制器,虽然找到了适合的pv, 但。

MyySophia的博客 3564

搭建NFS服务器,部署k8s集群,并在k8s中使用NFS作为持久化储存

本文旨在探讨如何搭建NFS服务器,并将其集成到Kubernetes(K8s)集群中作为持久化存储的解决方案。我们将首先介绍NFS的基本原理和优势,随后详细阐述NFS服务器的搭建过程,包括安装NFS软件包、配置NFS共享目录以及启动NFS服务。接着,我们将探讨如何安装k8s集群并在K8s中部署NFS客户端。

博客虽小,世界尽在其中 9282

K8s网络存储,NFS,PV,PVC,StorageClass等详解

Kubernetes是分布式容器集群,如何在多个Pod之间或多 个Node之间进行数据存储和共享是非常重要的问题。

zhang19903848257的博客 3471

史上最全之K8s使用nfs作为存储卷的五种方式

文章目录史上最全之K8s使用nfs作为存储卷的五种方式在`deployment/statefulset`中直接使用创建类型为nfs的持久化存储卷NFS CSI Driver安装使用pv/pvc 使用(静态配置)存储类使用(动态配置)NFS Subdir External Provisioner安装创建存储类验证集群模式nfs-ganesha-server-and-external-provisioner安装使用集群模式总结 史上最全之K8s使用nfs作为存储卷的五种方式 我们能将 NFS (网络文件系统)

琦彦 1万+

k8s-7:Volumes(1)中的临时卷与持久卷(PV,PVC,SC)及NFS配置

文章目录1. Volumes配置管理2. 卷类型2.1 emptyDir卷2.2 HostPath卷2.3 nfs卷 1. Volumes配置管理 容器中的文件在磁盘上是临时存放的,这给容器中运行的特殊应用程序带来一些问题。首先,当容器崩溃时,kubelet将重新启动容器,容器中的文件将会丢失,因为容器会以干净的状态重建。其次,当在一个Pod中运行多个容器时,常常需要在这些容器之间共享文件。Kubernetes抽象出Volume对象来解决这两个问题 Kubernetes卷具有明确的生命周期,与包裹它的Po

Fancyll_Lee的博客 1684

【k8s】Kubernetes存储之StorageClass与动态pv

一、StorageClass 简介 StorageClass提供了一种描述存储类(class)的方法,不同的class可能会映射到不同的服务质量等级和备份策略或其他策略等。 每个 StorageClass 都包含 provisioner、parameters 和 reclaimPolicy 字段, 这些字段会在StorageClass需要动态分配 PersistentVolume 时会使用到。 StorageClass的属性 Provisioner(存储分配器):用来决定使用哪个卷插件分配PV,该字段必须

sl963216757的博客 615

Kubernetes之存储管理(下)

Kubernetes之使用NFS创建动态卷供应

memory_hahaha的博客 949

DLPFC.h5ad格式数据简便获取方式+STAGATE论文复现问题

简便获取DLPFC.h5ad格式的数据方式

apple_74057836的博客 2257

k8s 中的 PV 的动态供给

模版文件内容如下这些只是模版,之后还需修改2.2.1 Storageclass 存储类的模版2.2.2 创建 Provisioner 制备器的模版2.2.3 rbac 的模版此次只需要在里面修改命名空间就可以了2.2.4 PVC 的模版2.2.5 使用 pod 测试使用的模版3 PV 动态供给的实践操作。

weixin_68398469的博客 1674

11、rsa-目标主机支持RSA密钥交换【原理扫描】的漏洞

通过将 etcd 的 TLS 密钥交换算法从 RSA 升级为 ECDHE,可实现前向保密,彻底消除 “私钥泄露导致历史流量解密” 的风险。核心步骤是通过强制启用含ECDHE的套件,并禁用 RSA 密钥交换套件,同时建议升级到 TLS 1.2+ 并优化证书类型(优先 ECDSA)。这一配置符合云原生安全最佳实践,也是 Kubernetes 等依赖 etcd 的系统推荐的安全标准。生成临时密钥的具体步骤是什么?如何验证etcd是否已成功更新为ECDH密钥交换算法?配置临时密钥交换算法可能带来哪些性能影响。

xuebo1129927648的博客 1万+

YOLO11创新改进系列:卷积,主干 注意力,C3k2融合,检测头等创新机制(已更新110+)

本专栏提供详细的 YOLO11 教程,包括基础知识、源码解析、入门实践、算法改进和项目实战,适合发表YOLO11 学习者订阅。内容包含 100+多篇独家改进机制,适合发表论文,评分高达 96 分。订阅者将获得一键运行的改进文件及答疑交流群支持。 使用服务器的同学还可以私聊获取搭建好的运行环境。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 1万+

CKA备考实验 | 动态卷供应

书籍来源:《CKA/CKAD应试指南:从Docker到Kubernetes完全攻略》前面讲持久性存储的时候,是要先创建pv,然后才能创建pvc。如果不同的命名空间里同时要创建不同的pvc,那么就需要提前把pv创建好,这样才能为pvc提供存储。这种操作方式太过于麻烦,所以可以通过storageClass(简称为sc)来解决这个问题。

团爸讲算法 238

【用unity实现100个游戏之1】制作类元气骑士、挺进地牢——俯视角射击游戏多种射击效果(一)(附源码)

俯视角射击游戏)是一类以俯视视角进行游戏展示的射击游戏。在这种游戏中,玩家控制着一个角色或载具,从俯视的角度上方观察游戏世界,并与敌人进行战斗。这种视角使玩家能够有更好的全局观察和策略性,同时也强调快速反应和精确射击。视角:俯视角度可以是固定的,也可以随着玩家角色的移动而变化,但都允许玩家以全局视角观察整个战场,有利于制定战略和规划行动。射击:玩家通常需要使用各种武器来与敌人进行战斗,包括枪械、爆炸物等。射击动作依赖于玩家的反应速度和准确性。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 7833

K8S存储

PV 全称叫做 Persistent Volume,持久化存储卷。它是用来描述或者说用来定义一个存储卷的,这个通常都是由运维工程师来定义。PVC 的全称是 Persistent Volume Claim,是持久化存储的请求。它是用来描述希望使用什么样的或者说是满足什么条件的 PV 存储。PVC 的使用逻辑:在 Pod 中定义一个存储卷(该存储卷类型为 PVC),定义的时候直接指定大小,PVC 必须与对应的 PV 建立关系,PVC 会根据配置的定义去 PV 申请,而 PV 是由存储空间创建出来的。

qq_54235967的博客 741

代码接单:用 ComfyUI 搭建电商模特换装工作流(保姆级教程)

在闲鱼和小红书上,搜一下“AI 模特图”或者“服装换模特”,你会发现大量的接单需求。太贵:请个外模拍一套图,动辄几千块。太慢:寄样品、排期、拍摄、修图,半个月过去了。太卷:竞对都在上新,你还在等图。“给我一张你的衣服平铺图(或假人图),我 10 分钟给你生成真人上身图,一张只要 50 块。对于商家是省钱,对于你是纯利润。为什么不用 Midjourney?因为 MJ 抽卡不可控,无法保持衣服版型一致。只有 ComfyUI,才能做到精准控制,实现工业化量产。

BUG猿的博客 1779

RK3399外设驱动之MIPI

RK3399外设驱动之MIPI 文章目录RK3399外设驱动之MIPIMIPI命令解析入口代码mipi显示配置实例rk3399mipi驱动rk mipi驱动注册过程rk32_mipi_dsi.c解析 内核版本 Linux4.4 平台 rk3399 作者 nineyole MIPI命令解析入口代码 MIPI的入口代码如下:kernel\drivers\video\rockchip\screen\lcd_mipi.c static int __init rk_mipi_screen_in

学无止境 2229

K8S搭建存储卷

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

Eddy的博客 2005

静态时序分析(STA)基本概念

静态时序分析中常见概念(fasle Path,multicycle path等)

m0_61544122的博客 2256

k8s中持久化存pv、pvc、nfs-storageclass

k8s中的pv、pvc、存储类、以及动态分配存储

MssGuo的博客 4003

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

kubernetes:storageclass存储方法

这里写目录标题1. StorageClass存储方法2. NFS Client Provisioner2.1 rbac.yaml做集群授权2.2 deployment.yaml 部署文件2.3 对动态卷的声明2.4 清除之前做的pv2.4 使用yaml文件创建sc2.5 创建pvc2.6 当删除pvc之后,相应的pv和pvc同时删除2.7 当pv被删除时,在服务端备份2.8 创建pod测试3. 默...

weixin_43384009的博客 2853

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

搭建 StorageClass + NFS,实现 NFS 的动态 PV 创建

目录 介绍 StorageClass 资源 实现NFS的动态pv创建 介绍 StorageClass 为管理员提供了描述存储 "类" 的方法。 不同的类型可能会映射到不同的服务质量等级或备份策略,或是由集群管理员制定的任意策略。 Kubernetes 本身并不清楚各种类代表的什么。这个类的概念在其他存储系统中有时被称为 "配置文件" StorageClass 资源 每个 StorageClass 都包含provision...

小柏ぁ的博客 2774

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

k8s StorageClass(NFS)

一. StorageClass 简介 在K8S环境,当pod需要存储空间时,StorageClass比PV更灵活和方便,每个 StorageClass 都包含 provisioner、parameters 和 reclaimPolicy 字段, 这些字段会在 StorageClass 需要动态分配 PersistentVolume 时会使用到。 StorageClass的属性 • Provisi...

包泽旭 707

k8s 安装nfs_K8S-StorageClass-DaemonSet使用NFS

在POD动态扩展容器持久时,可以通过静态手动创建PVC,绑定PV。如果我们需要动态绑定,并且需要使用NFS时使用StorageClass。由于Kubernetes是分布式容器集群,因此如何在多个Pod之间或多个Node之间进行数据存储和共享是非常重要的问题。为了解决这个问题,Kubernetes引入了网络存储卷,它支持为数众多的云提供商的产品和网络存储方案,例如NFS/iSCSI/G...

weixin_32121569的博客 322

Kubernetes StorageClass 完全指南:动态持久化存储的分类、分配器与实战配置

`StorageClass` 是 Kubernetes 存储体系中的"存储分类器":它由管理员定义,描述一类存储的特质(如性能等级、回收策略、备份策略),并绑定一个 **provisioner(存储分配器)** 负责按需动态创建 `PersistentVolume`。本文基于本仓库 [concepts/storageclass.md](https://link.gitcode.com/i/fe2c

gitblog_00514的博客 474

kubernetes存储(三)——K8S的Volumes配置管理(动态卷+StorageClass存储类(class)+部署mysql主从集群)

文章目录1.StorageClass介绍2.配置NFS Client Provisioner3.StatefulSe控制器3.1 通过无头服务创建StatefulSe控制器维持Pod的拓扑状态3.2 StatefulSet的应用状态与弹缩3.3 StatefulSet+存储3.4 使用statefullset部署mysql主从集群 1.StorageClass介绍 StorageClass提供了一种描述存储类(class)的方法,不同的class可能会映射到不同的服务质量等级和备份策略或其他策略等。 每个

Aimee_c的博客 2350
上一篇: k8s使用NFS存储数据
下一篇: k8s安装elasticsearch集群
MasonYyp
博客等级 码龄9年 301粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值