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.mzph.cn/news/886633.shtml

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

相关文章

hive 统计各项目下排名前5的问题种类

实现指定某项目下的数据效果图如下所示: 其中 ABCDE 为前5名的问题种类,其中A问题有124个(出现了124次) 数据说明: 整个数据集 包含很多项目一个项目 包含很多问题一个问题 选项 可认为是 类别值,所有出…

如何解决将长视频转换为易于处理的 Spacetime Patch 的问题?

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 将长视频转换为易于处理的 Spacetime Patch(时空补丁)是一项挑战,尤其是当视频内容复杂或包含长时间连续场景时。在计算机视觉和视频分析等领域,Spacetim…

[ACTF2020]Upload 1--详细解析

信息收集 题目告诉我们是一道upload,也就是文件上传漏洞题目。 进入界面,是一个灯泡,将鼠标放在图标上就会出现文件上传的相应位置: 思路 文件上传漏洞,先看看有没有前端校验。 在js源码中找到了前端校验&#xff…

机器学习基础06

目录 1.梯度下降 1.1梯度下降概念 1.2梯度下降公式 1.3学习率 1.4实现梯度下降 1.5API 1.5.1随机梯度下降SGD 1.5.2小批量梯度下降MBGD 1.6梯度下降优化 2.欠拟合过拟合 2.1欠拟合 2.2过拟合 2.3正则化 2.3.1L1正则项(曼哈顿距离) 2.3.2…

【系统设计】设计一个系统时,需要考虑的关键因素

一、需求分析 明确目标和业务需求 与利益相关者(如客户、用户、管理层等)进行充分沟通,了解系统要解决的具体问题和期望达成的目标。 例如,设计一个电子商务系统,需要明确支持的业务流程,如商品展示、购物…

可认证数据资产合约标准协议(CMIDA-1)意见征集

标准背景 数据资产具备多维度的属性,涵盖行业特性、状态信息、资产类型、存储格式等。数据资产在不同流通主体之间可理解、可流通、可追溯、可信任的重要前提之一是存在统一的标准,缺失统一的标准,数据混乱冲突、一数多源、多样多类等问题将…

为什么 Vue3 封装 Table 组件丢失 expose 方法呢?

在实际开发中,我们通常会将某些常见组件进行二次封装,以便更好地实现特定的业务需求。然而,在封装 Table 组件时,遇到一个问题:Table 内部暴露的方法,在封装之后的组件获取不到。 代码展示为: …

Dolby TrueHD和Dolby Digital Plus (E-AC-3)编码介绍

文章目录 1. Dolby TrueHD特点总结 2. Dolby Digital Plus (E-AC-3)特点总结 Dolby TrueHD 与 Dolby Digital Plus (E-AC-3) 的对比 Dolby TrueHD和Dolby Digital Plus (E-AC-3) 是两种高级的杜比音频编码格式,常用于蓝光影碟、流媒体、影院等高品质音频传输场景。它…

Docker-01

Docker用于构建、打包、分发和运行应用程序。它允许开发人员将应用程序及其依赖项打包到一个可移植的容器中,然后可以在任何支持Docker的环境中运行这个容器。 Linux systemctl start docker //启动dockersystemctl stop docker //停止dockersystemctl enable d…

【.net core】【sqlsugar】字符串拼接+内容去重

假设有成绩类,字段如下 //成绩类 public class Score{public int id{get;set;}//学号public string No{get;set;}//学科public string subject{get;set;}//成绩public string score{get;set;} }需要实现数据汇总,汇总要求:结果中每行只展示单…

算法——删除链表的倒数第N个节点(leetcode19)

对于这道题我首先想到的是双指针并且也正确解答了后发现其实我写的代码冗余了依然可以优化代码为单指针即可解题但看了题解之后发现快慢指针非常巧妙代码也非常简洁 单指针解法 1、定义一个虚拟节点vNode指向头结点 2、定义指针cur指向虚拟节点vNode 3、遍历链表得到链表的…

Python Pillow图像编辑

Pillow简介 Pillow 不仅是 PIL 库的“复制版”,而且它又在 PIL 库的基础上增加了许多新的特性。Pillow 发展至今,已经成为了比 PIL 更具活力的图像处理库。 Pillow 的初衷只是想作为 PIL 库的分支和补充,如今它已是“青出于蓝而胜于蓝”。 …

爬虫开发(1)爬虫开发工具介绍与环境搭建

在数据驱动的时代,网络爬虫成为了获取大量数据的重要手段。无论是市场调研、竞争对手分析还是学术研究,爬虫都能帮助我们高效地收集和处理信息,所以你还不抓紧学习爬虫嘛? 在本文中,博主将详细介绍如何搭建爬虫开发环境…

1+X应急响应(网络)系统信息收集分析:

系统信息收集分析: 系统启动项和计划任务分析: 系统进程,服务分析: 内存取证: 系统崩溃转储:

Python基础学习-09文件操作

目录 1、常见文件操作 2、常见文件函数 3、文件中存储并解析Python对象 4、本节总结 1、常见文件操作 • 常见文件操作 1) fileopen(file_path) #默认modert 2) fileopen(file_path, “r”) 3) fileopen(file_path, encodin…

《人工智能深度学习的基本路线图》

《人工智能深度学习的基本路线图》 基础准备阶段 数学基础: 线性代数:深度学习中大量涉及矩阵运算、向量空间等概念,线性代数是理解和处理这些的基础。例如,神经网络中的权重矩阵、输入向量的运算等都依赖于线性代数知识。学习内容…

找不到vcruntime140.dll怎么办,彻底解决vcruntime140.dll丢失的5种方法

当计算机系统中无法找到vcruntime140.dll这个特定的动态链接库文件时,可能会引发一系列运行问题,具体表现形式多样且影响范围较广。对于依赖于该文件运行的各类软件应用来说,缺失vcruntime140.dll将直接导致程序无法正常启动或执行&#xff0…

Redis学习 ——缓存

文章目录 一、Redis缓存的介绍二、Redis缓存问题2.1 缓存穿透2.2 缓存击穿2.3 缓存雪崩2.4 双写一致性2.5 缓存持久化RDBAOF 三、缓存数据管理3.1 数据过期策略3.2 数据淘汰策略 一、Redis缓存的介绍 我们在日常的代码编写中比较少使用到Redis,但是如果涉及到了比较…

“乐鑫组件注册表”简介

当启动一个新的开发项目时,开发者们通常会利用库和驱动程序等现有的代码资源。这种做法不仅节省时间,还简化了项目的维护工作。本文将深入探讨乐鑫组件注册表的概念及其核心理念,旨在指导您高效地使用和贡献组件。 概念解析 ESP-IDF 的架构…

视觉SLAM--经典视觉SLAM框架

整个视觉SLAM流程主要包括以下步骤: 1、传感器信息读取:在视觉SLAM中主要为相机图像信息的读取和预处理。 2、前端视觉里程计:估算相邻图像间相机的运动,以及局部地图的样子。 3、后端(非线性)优化&#…