kubernetes集群配置默认存储类(nfs)

news2024/9/20 17:41:38

文章目录

    • 概述
    • 安装nfs服务端
    • node节点上安装
    • 启动nfs
    • 配置StorageClass
      • 创建Deployment
      • 创建ServiceAccount
      • 创建StorageClass对象
      • 创建资源对象
    • 常见问题
    • 参考文档

概述

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

  • 查看Kubernetes集群中的默认存储类
kubectl get storageclass

安装nfs服务端

  • 找一台新的服务器,作为nfs服务端,然后进行 nfs的安装 【服务器:172.16.11.17】
  • 安装nfs
yum install -y nfs-utils
  • 创建存放数据的目录
mkdir -p /data/k8s
  • 设置挂载路径
# 打开文件
vim /etc/exports
# 添加如下内容
/data/k8s *(rw,no_root_squash)

node节点上安装

  • 在k8s集群需要部署应用的node节点安装nfs
yum install -y nfs-utils

启动nfs

  • node节点上配置完成后,到nfs服务器启动nfs
systemctl start nfs

配置StorageClass

  • 使用StorageClass,需要安装对应的自动配置程序,比如上面我们使用的是nfs,那么我们就需要使用到一个 nfs-client 的自动配置程序,也叫它 Provisioner,这个程序使用我们已经配置的nfs服务器,来自动创建持久卷,也就是自动帮我们创建PV。

自动创建的 PV 以 ${namespace} - ${pvcName}- ${pvName} 这样的命名格式创建在 NFS 服务器上的共享数据目录中,而当这个 PV 被回收后会以 archieved- ${namespace}- ${pvcName}- ${pvName} 这样的命名格式存在 NFS 服务器上。

  • 当然在部署nfs-client之前,需要先成功安装上 nfs 服务器,上面已经安装好了,服务地址是172.16.11.17,共享数据目录是/data/k8s/,然后部署 nfs-client 即可。

创建Deployment

  • 首先配置 Deployment(nfs-client.yaml)
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/external_storage/nfs-client-provisioner:latest
          volumeMounts:
            - name: nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: fuseim.pri/ifs
            - name: NFS_SERVER
              value: 172.16.11.17   #替换成自己的nfs服务器
            - name: NFS_PATH
              value: /data/k8s  # 替换成自己的挂载目录
      volumes:
        - name: nfs-client-root
          nfs:
            server: 172.16.11.17   #替换成自己的nfs服务器
            path: /data/k8s  # 替换成自己的挂载目录

创建ServiceAccount

  • Deployment使用了一个名为 nfs-client-provisioner 的serviceAccount,所以也需要创建一个 sa,然后绑定上对应的权限。(nfs-client-sa.yaml)
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-client-provisioner

---
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: ["list", "watch", "create", "update", "patch"]
  - apiGroups: [""]
    resources: ["endpoints"]
    verbs: ["create", "delete", "get", "list", "watch", "patch", "update"]

---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: run-nfs-client-provisioner
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    namespace: default
roleRef:
  kind: ClusterRole
  name: nfs-client-provisioner-runner
  apiGroup: rbac.authorization.k8s.io
  • 新建的一个名为 nfs-client-provisioner 的ServiceAccount,然后绑定了一个名为 nfs-client-provisioner-runner 的ClusterRole,而该ClusterRole声明了一些权限,其中就包括对persistentvolumes的增、删、改、查等权限,所以我们可以利用该ServiceAccount来自动创建 PV。

创建StorageClass对象

  • nfs-client 的 Deployment 声明完成后,就可以创建一个StorageClass对象。(nfs-client-class.yaml)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: course-nfs-storage
provisioner: fuseim.pri/ifs

  • 声明了一个名为 course-nfs-storage 的StorageClass对象。
  • 注意provisioner对应的值一定要和上面的Deployment下面的 PROVISIONER_NAME 这个环境变量的值一样。

创建资源对象

kubectl create -f nfs-client.yaml
kubectl create -f nfs-client-sa.yaml
kubectl create -f nfs-client-class.yaml
  • 查看资源状态
kubectl get pods
# 查看存储类
kubectl get storageclass

在这里插入图片描述

  • 可以设置这个 course-nfs-storage 的 StorageClass 为 Kubernetes 的默认存储后端,我们可以用 kubectl patch 命令来更新。
kubectl patch storageclass course-nfs-storage -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
  • 执行完命令后,我们默认存储类就配置成功了。
kubectl get storageclass

在这里插入图片描述

常见问题

问题一

  • 部署k8s动态持久卷nfs报错如下:
waiting for a volume to be created, either by external provisioner “gxf-nfs-storage” or manually created by system administrator
  • 由于Kubernetes 1.20禁用了selfLink,创建的时候会报错。
vi  /etc/kubernetes/manifests/kube-apiserver.yaml
  • 添加一行内容
- --feature-gates=RemoveSelfLink=false

在这里插入图片描述

  • 重新应用
kubectl apply -f /etc/kubernetes/manifests/kube-apiserver.yaml
  • 持续补充中…

参考文档

  • nfs-client 文档
  • https://blog.csdn.net/weixin_45625174/article/details/123920122

你知道的越多,你不知道的越多。

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

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

相关文章

钙通道阻滞剂/拮抗剂的应用 | MedChemExpress

我们都知道钙、钾、钠离子对于维持个体内环境的重要性,离子通道一直是个有趣而复杂的话题。它们就像为某种物质专属定制的“门”或 VIP 通道,不仅分类繁多,还有着严密的“门控”机制。每个细胞都像一个电池,正常状态下&#xff0c…

SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.10 jetcache 本地缓存方案

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇5 整合第三方技术5.10 jetcache 本地缓存方案5.10.1 使用 jetcache 实…

【Java高级】一篇文章带你学会什么是注解

目录 注解概述 | Java内置的三个注解 Deprecated Override SuppressWarnings | 元注解 Target Retention(注解生命周期) Documented Inherited Repeatable(JDK1.8) | 自定义注解 自定义注解的概述 自定义注解的步骤…

货币政策传导与货币政策调控-中国视角下的宏观经济

货币政策传导与货币政策调控-潘登同学的宏观经济学笔记 文章目录货币政策传导与货币政策调控-潘登同学的宏观经济学笔记货币传导路径货币是银行的负债——货币的“形而下”定义贷款创造存款货币乘数货币就是记忆(money is memory)——货币的“形而上”定…

libevent库

libevent介绍 1 事件驱动, 高性能, 轻量级, 专注于网络 2 源代码精炼, 易读 3 跨平台 4 支持多种I/O多路复用技术, 如epoll select poll等 5 支持I/O和信号等事件 libevent的核心实现: 在linux上, 其实质就是epoll反应堆. libevent是事件驱动, epoll反应堆也是事件驱动, 当要…

硬件基础 -- D/A数字模拟信号

D/A 需要数位模拟开关 如果开关打卡,则此位电压参与运算 如果开关关闭,则此位电压0V参与运算 转换过程中需要将数字数字量锁存 转换过程 模拟量转数字量需要比较器 数字量转模拟量需要运放 #mermaid-svg-wJVhc3DQ619gtYuZ {font-family:"trebuchet …

【计算机毕业设计】6.超市仓库管理系统+vue

一、系统截图(需要演示视频可以私聊) 基于B/S的超市进销存管理系统的设计与实现 摘 要:开发本超市进销存管理系统的主要目标是方便企业对商品、客户和员工信息的实时掌控,提高企业的工作效率。本系统是采用java开发的一个基于B/S…

渗透测试——基于SQL注入拿到webshell

作者名:Demo不是emo 主页面链接:主页传送门创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座右…

spring整合struts2

因为最近工作的需要不得不学习struts2,整理了一下spring整合struts2的过程 需要详细了解struts2的朋友可以自行百度,这里只是简单的讲述如何使用 我是用的是idea进行项目构建的,eclipse的话可以自己百度一下 struts的官网:https:…

PTA题目 阶梯电价

为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部…

前缀和【一维前缀和与二维前缀和】

全文目录😀 一维前缀和🤔 构建一维前缀和数组😵‍💫 子序列的和😀 二维前缀和🤔 构建二维前缀和数组😵‍💫 子矩阵的和😀 一维前缀和 一维前缀和很简单,就是…

[附源码]java毕业设计铁路法院数字档案管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

[附源码]java毕业设计网上花店系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

同步时序逻辑电路

分类 按逻辑功能不同分为:RS触发器、D触发器、JK触发器、T触发器。按触发方式不同分为:电平触发器、边沿触发器和脉冲触发器。按电路结构不同分为:基本RS触发器和钟控触发器。按存储数据原理不同分为:静态触发器和动态触发器。按…

【从零开始学微服务】03.软件架构的演化过程

大家好,欢迎来到万猫学社,跟我一起学,你也能成为微服务专家。 目前大部分的企业系统和互联网应用都是采用Web的形式提供服务能力,根据系统的组织方式和部署结构,我们通常把软件架构的演化过程分为以下几个阶段&#xf…

微信小程序实战,基于vue2实现瀑布流

1、什么是瀑布流呢? 瀑布流,又称瀑布流式布局。是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部。 瀑布流对于图片的展现&#xff0c…

HTML+CSS+JS大作业:生态环境网站设计——环境保护主题 大学生环保主题网页制

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 环境保护 | 保护地球 | 校园环保 | 垃圾分类 | 绿色家园 | 等网站的设计与制作HTML期末大学生网页设计作业 HTML:结构 CSS:样…

【计算机编程基础】

计算机编程基础1 本节目标2 编程语言2.1 编程2.2 计算机语言2.3 编程语言2.4 翻译器2.5 编程语言和标记语言区别3 计算机基础3.1 计算机组成3.2 数据存储3.3 数据存储单位3.4 程序运行1 本节目标 说出什么是编程语言区分编程语言和标记语言的不同说出常见的数据存储单位及其换…

Maven入门学习——使用IDEA创建Maven文件的两种方式(内含配置setting文件)

使用IDEA创建Maven文件的两种方式一、前言二、前期准备(配置setting文件)1.修改文件放置位置2.改用阿里云镜像3.修改默认JDK版本三、构建Maven项目1.新建空项目2.设置项目中Maven版本3.新建模块4.配置模块5.测试四、使用插件创建Maven项目1.新建Maven项目…

Python字典制作“编码本”“密码本”,“试炼”加、解密文本操作

【点击此处跳转笔记正文】Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单…… My CSDN主页、My HOT博、My Python 学习个人备忘录好文力荐、 老齐教室 自学并不是什么神秘的…