kubernetes如何配置默认存储

如果不想每次都创建PV,希望k8s集群中能够配置号默认存储,然后根据你的PVC自动创建PV,就需要安装一个默认存储,也就是storageclass

什么是storageclass

Kubernetes提供了一套可以自动创建PV的机制,即:Dynamic Provisioning。而这个机制的核心在于StorageClass这个API对象。

StorageClass对象会定义下面两部分内容:

1. PV的属性。比如,存储类型,Volume的大小等。
2. 创建这种PV需要用到的存储插件,即存储制备器。


有了这两个信息之后,Kubernetes就能够根据用户提交的PVC,找到一个对应的StorageClass,之后Kubernetes就会调用该StorageClass声明的存储插件,进而创建出需要的PV。但是其实使用起来是一件很简单的事情,你只需要根据自己的需求,编写YAML文件即可,然后使用kubectl create命令执行即可

配置k8s集群中的默认存储

我们使用nfs来作为集群的存储,首先在master节点上安装nfs,并且创建存放数据的目录

sudo apt install  nfs-kernel-server -y
# 建立共享目录,修改配置文件
mkdir /data
sudo vim /etc/exports
sudo cat /etc/exports
/data *(rw,sync,no_root_squash,no_subtree_check)    
/data/k8s   *(rw,sync,no_root_squash,no_subtree_check)
# 重启服务,使配置生效
sudo service rpcbind restart
sudo service nfs-kernel-server restart
systemctl enable rpcbind
systemctl enable nfs-kernel-server
exportfs -arv

然后node节点安装nfs的client

apt install nfs-common -y

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

当然在部署nfs-client之前,我们需要先成功安装上 nfs 服务器,上面已经安装好了,服务地址是172.16.10.50(master的IP),共享数据目录是/data/volume,然后接下来我们部署 nfs-client 即可,我们也可以直接参考 nfs-client 文档,进行安装即可。

我们直接使用helm的方式来部署,提前添加stable的仓库

#添加仓库
helm repo add stable https://charts.helm.sh/stable
#安装nfs-client-provisioner
helm install nfs-client-provisioner stable/nfs-client-provisioner --set nfs.server=172.16.10.50 --set nfs.path=/data/volume --set storageClass.defaultClass=true --set storageClass.name=nfs-storage

如果没有报错的话,你就能在默认的namespace下看到一个nfs-client-provisioner的Pod在正常运行,后续你在yaml中直接指定PVC的storageClass为nfs-storage就能够正常使用了

报错解析

nfs-client-provisioner在运行过程中查看日志,看到如下报错,创建的一个PVC并没有自动绑定PV,storageclass没有给他创建PV,查看PVC一直处于pending的状态,然后报错信息提示selfLink was empty,这是因为kubernetes1.16版本之后就弃用了selfLink,1.20版本彻底停用,但是nfs-provisioner的实现是基于selfLink功能的,所以才会失败

报错信息如下:

E0407 02:18:31.379377       1 controller.go:1004] provision "kubesphere-monitoring-system/prometheus-k8s-db-prometheus-k8s-0" class "nfs-storage": unexpected error getting claim reference: selfLink was empty, can't make reference

解决方法:

修改/etc/kubernetes/manifests/kube-apiserver.yaml文件,找到如下内容后,在最后添加一项参数
spec:containers:command:kube-apiserver--advertise-address=192.168.210.20--.......  #省略多行内容--feature-gates=RemoveSelfLink=false  #添加此行等待一下,然后删除apiserver的那个pod,让它重启就可以了

关于storageclass的更多内容可参考博客:K8S 快速入门(十六)实战篇:StorageClass(存储类)-CSDN博客

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

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

相关文章

【会话文本nlp】对话文本解析库pyconverse使用教程版本报错、模型下载等问题解决超参数调试

前言: 此篇博客用于记录调用pyconverse库解析对话文本时遇到的问题与解决思路,以供大家参考。 文章目录 pycoverse介绍代码github链接问题解决1 [cannot import name ‘cached_download‘ from ‘huggingface_hub‘ 问题解决](https://blog.csdn.net/wei…

5G的SUCI、SUPI、5G-GUTI使用场景及关系

使用场景(来源于对23.501、23.502、33.501、23.003的理解) 1、UE初始注册时,根据HN Public Key把SUPI加密成SUCI,并发送初始注册请求 2、AMF转发SUCI给AUSF和UDM进行认证,并获取解密后的SUPI 3、AMF根据SUPI生成一个5G-GUTI,并保…

2. kafka 生产者

一. 生产者消息发送流程 在消息发送的过程中,涉及到了两个线程:main线程和Sender线程。Producer发送的消息会分别经过Interceptors(拦截器),Serializer(序列化器),Partitioner(分区器)最终到达RecordAccumulator,Recor…

web应用安全和信息泄露预防

文章目录 1:spring actuator导致的信息泄露1.1、Endpoint配置启用检测1.2、信息泄露复现1.3、防御 2:服务端口的合理使用3:弱口令(密码)管理4:服务端攻击4.1、短信业务,文件上传等资源型接口1、…

智慧安防丨以科技之力,筑起防范人贩的铜墙铁壁

近日,贵州省贵阳市中级人民法院对余华英拐卖儿童案做出了一审宣判,判处其死刑,剥夺政治权利终身,并处没收个人全部财产。这一判决不仅彰显了法律的威严,也再次唤起了社会对拐卖儿童犯罪的深切关注。 余华英自1993年至2…

计算机编程中的测试驱动开发(TDD)及其在提高代码质量中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 计算机编程中的测试驱动开发(TDD)及其在提高代码质量中的应用 计算机编程中的测试驱动开发(T…

【MYSQL】锁详解(全局锁、表级锁、行级锁)【快速理解】

目录 一、全局锁 二、表级锁 1.表锁 2.元数据锁 3.意向锁 三、行级锁 1. 行锁 2.间隙锁 3.临建锁 锁是处理并发情况下,对数据的一致性的关键因素,也是并发情况下对效率影响非常大的。 1、全局锁:锁定表中所有数据。 2、表级锁:…

thinkphp6 入门(2)--视图、渲染html页面、赋值

use think\facade\View;View::assign([name > ThinkPHP,email > thinkphpqq.com]);View::assign(data,[name > ThinkPHP,email > thinkphpqq.com]); View::fetch(index);助手函数 view(index, [name > ThinkPHP,email > thinkphpqq.com ]); 模板输出 {$na…

百度智能云 VectorDB 优势数量 TOP 1

近日,IDC 发布了《RAG 与向量数据库市场前景预测》报告,深入剖析了检索增强生成(RAG)技术和向量数据库市场的发展趋势。报告不仅绘制了 RAG 技术的发展蓝图,还评估了市场上的主要厂商。在这一评估中,百度智…

MySQL索引的底层实现原理是什么?

MySQL索引的底层实现主要基于B树数据结构。B树是一种平衡多路查找树,具有以下特点: 1、树的所有叶子节点都位于同一层: 这确保了从根节点到每个叶子节点的路径长度相同,保证了查询效率的一致性。 2、节点中的数据按键值大小有序…

手搓神经网络(MLP)解决MNIST手写数字识别问题 | 数学推导+代码实现 | 仅用numpy,tensor和torch基本计算 | 含正反向传播数学推导

手写数字识别(神经网络入门) 文章目录 手写数字识别(神经网络入门)实验概述实验过程数据准备模型实现线性变换层前向传播反向传播更新参数整体实现 激活函数层(ReLU)前向传播反向传播整体实现 Softmax层&am…

在MATLAB中导入TXT文件的若干方法

这是一篇关于如何在MATLAB中导入TXT文件的文章,包括示例代码和详细说明 文章目录 在MATLAB中导入TXT文件1. 使用readtable函数导入TXT文件示例代码说明 2. 使用load函数导入TXT文件示例代码说明 3. 使用importdata函数导入TXT文件示例代码说明 4. 自定义导入选项示例…

ks 小程序sig3

前言 搞了app版的快手之后 (被风控麻了) 于是试下vx小程序版的 抓包调试 小程序抓包问题 网上很多教程, github也有开源的工具代码 自行搜索 因为我们需要调试代码,所以就用了下开源的工具 (可以用chrome的F12功能&a…

解决Spring Boot整合Redis时的连接问题

前言 在使用Spring Boot整合Redis的过程中,经常会遇到连接问题,尤其是当Redis服务部署在远程服务器上时。 问题描述 当你尝试连接到Redis服务器时,可能会遇到以下错误: org.springframework.data.redis.connection.PoolExcept…

算法--“汽车加油”问题.

def greedy():n 100 # 汽车满油后可行驶的最大距离d [50, 80, 39, 60, 40, 32] # 加油站的距离k len(d) # 加油站的数量# 检查是否有加油站距离超过汽车的最大行驶距离for dist in d:if dist > n:print(no solution)returnnum 0 # 加油次数current_position 0 # 当…

道陟科技EMB产品开发进展与标准设计的建议|2024电动汽车智能底盘大会

11月12日,2024电动汽车智能底盘大会在重庆开幕。会议由中国汽车工程学会主办,电动汽车产业技术创新战略联盟、中国汽车工程学会智能底盘分会、智能绿色车辆与交通全国重点实验室承办。本届大会围绕电动汽车智能底盘相关技术发展与融合,满足高…

sqli—labs靶场 5-8关 (每日4关练习)持续更新!!!

Less-5 上来先进行查看是否有注入点,判断闭合方式,查询数据列数,用union联合注入查看回显位,发现到这一步的时候,和前四道题不太一样了,竟然没有回显位??? 我们看一下源…

【qt】控件3

1.setToolTip和setToolTipDuration setToolTip这个函数用来设置提醒内容 setToolTipDuration这个函数用来设置提醒时间 Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);ui->help->setToolTip("按下这个按键就可以提…

STM32 使用 STM32CubeMX HAL库实现低功耗模式

STM32 使用 HAL 库的低功耗模式测试使用 ...... 矜辰所致前言 上次画了一个 STM32L010F4 最小系统的板子,也做了一些基本测试,但是最重要的低功耗一直拖到现在,以前在使用 STM32L151 的时候用标准库做过低功耗的项目,现在都使…

js实现导航栏鼠标移入时,下划线跟随鼠标滑动

话不多说&#xff0c;上代码&#xff1a; html代码&#xff1a; <div class"nav clearfix"><div class"bottomLine"></div><ul class"clearfix"><li class"nav__item"><a href"./index.html&…