kubernetes学习日志(六)

前言

本文记录了存储卷管理、临时卷、持久卷、PV/PVC管理

一、持久卷

卷概述

容器化带来的问题

容器中的文件在磁盘上是临时存放的,这对于容器运行重要应用程序带来一些问题
1、容器崩溃重启时,kubelet会以纯净(镜像)状态重启,容器内的历史数据会丢失
2、容器被删除时,容器内数据会一并被清理
3、多个容器可能会有共享文件和目录的需求
ps:因为K8s是没有停止容器的概念的,所以只有创建和删除容器

卷是一个抽象化的存储设备
使用卷可以解决容器崩溃重启后的历史数据丢失的问题,也可以解决容器或Pod被删除后数据持久保存的问题,
同时可以解决多个容器内数据共享的问题。
Pod可以使用任意数目的卷

k8s支持的卷类型

持久卷

持久卷是集群中的存储资源,里面的数据不会随着Pod的删除而丢失

临时卷

有些应用程序需要额外的存储,但并不关心数据在重启后是否仍然可用。临时卷会同Pod一起创建删除

投射卷

它允许将多个现有卷源映射到同一个目录,通过这些不同类型的卷源组合成一个统一的卷,可以更方便的管理和使用这些资源

卷的使用

1、编写一个Pod资源对象文件
2、在Pod.spec下添加volumes字段,配置外部存储为卷
3、在Pod.spec.comtainers[*] 中添加volumeMounts 字段,声明卷在容器中的挂载位置
ps:卷不能挂载到其他卷上,也不能与其他卷有硬连接
Pod配置中每个容器都必须独立指定各个卷的挂载位置

hostPath卷

hostPath是持久卷,本质是使用本地设备,例如磁盘、分区、目录、Socket、CharDevice和BlockDevice等等。
hostPath卷的可用性取决于底层节点的可用性,如果节点变得不健康,那么hostPath卷也将不可被访问。
hostPath卷里面的数据不会随着Pod结束而消失
ps : 配置相同的Pod,可能在不同节点上表现不同,应为不同节点上映射的文件内容不同

spec : volumes :  # 卷定义- name : logdata # 卷名称hostPath :   # 使用hostPath 创建卷path : /var/weblog  # 在节点上存放的路径type : DirectoryOrCreate   # 目录不存在就创建新的containers : - name : nginximage : myos:nginxvolumeMounts :  # mount卷- name : logdata  # 卷的名字mountPath : /usr/local/nginx/logs # 容器内路径 

type对应内型 :

type类型说明
DirectoryOrCreate卷映射对象是一个目录,如果不存在就创建
Directory卷映射对象是一个目录,且必须存在
FileOrCreate卷映射对象是一个文件,如果不存在就创建
File卷映射对象是一个文件,且必须存在
Socket卷映射对象是一个Socket套接字,且必须存在
CharDevice卷映射对象是一个字符设备,且必须存在
BlockDevice卷映射对象是一个块设备,且必须存在

NFS卷

k8s中允许将NFS存储以卷的方式挂载到Pod中,删除Pod时,nfs存储卷会被卸载(umount),而不是被删除,nfs卷可以在不同节点的Pod之间共享数据
NFS最大的功能就是在不同节点的不同Pod中共享读写数据,本地NFS的客户端可以透明地读写位于远端NFS服务骑上的文件,就像访问本地文件一样

spec : volumes : ... ...- name : website  # 存储卷名称nfs : 		# 定义资源对象server : 192.168.1.10 # 指明NFS服务器地址path : /var/webroot # NFS共享目录containers : - name : nginximage : myos:nginxvolumeMounts :  # 映射存储卷- name : website  # 映射的存储卷名称mountPath : /usr/local/nginx/html # 映射到容器中的路径

PV/PVC

PV:Persistent Volume 是持久卷
PVC : PersistentVolumeClaim 是持久卷声明

PV/PVC用途

存储的管理是一个与计算机实例的管理完全不同的问题。管理员希望能提供一种通用的API来完成Pod对卷的部署管理与使用。PV/PVC就是为了满足这种需求而诞生的,PV/PVC的引入使集群具备了存储的逻辑抽象能力

k8s支持的存储卷

cephfs : CephFS volume
csi : 容器存储接口(CSI)
fc : Fibre Channel(FC)存储
hostPath HostPath 卷
iscsi : ISCSI(SCSI over IP) 存储
nfs 网络文件系统(NFS)存储
rbd Rados块设备(RBD)卷

PV/PVC使用

PV是资源提供者,根据集群的基础设施变化而变化,由k8s集群管理员配置
PVC是资源的使用者,根据业务服务的需求变化来配置,用户无需知道PV的技术细节,只需要声明你需要什么类型的资源即可
PVC会根据用户的声明需求,自动找到PV完成绑定

PV资源文件

---
kind : PersistentVolume
apiVersion : v1
metadata : name : mypv
spec : volumeMode : Filesystem  # 提供资源的类型[Filesystem, Block]accessModes :  # 存储卷能提供的访问模式- ReadWriteOnce # 卷支持的模式,支持多种- ReadOnlyMnay  # RWO,ROX,RWX,RWOPcapacity :   # 存储卷能提供的存储空间storage : 30Gi  # 空间大小persistentVolumeReclaimPolicy : Retain # 数据回收方式......  # 存储配置

PV资源文件(hostPath)

... ... 
metadata : name : pv-local
spec : volumeMode : Filesystem # 提供Filesystem访问方式accessModes : - ReadWriteOnce # hostPath 只支持RWOcapacity : storage : 30Gi # 提供的磁盘空间大小persistentVolumeReclaimPolicy : Retain # 数据手工回收hostPath : # hostPath配置path : /var/weblogtype :DirectoryOrCreate

PV资源文件(NFS)

spec : volumeMode : Filesystem  # 提供Filesystem访问方式accessModes :   	# NFS 支持多种访问方式- ReadOnlyMany    # RWO,ROX,RWX- ReadWriteMany 
... ...capacity : storage : 30Gi  # 提供的磁盘空间大小persistentVolumeReclaimPolicy : Retain # 数据手工回收mountOptions :  # mount的参数-	nolock nfs :   # NFS配置server : <NFS服务器地址>path : <共享目录路径>

PVC资源文件

---
kind : PersistentVolumeClaim
apiVersion : v1
metadata : name : pvc1
spec :   	# 定义需求volumMode : Filesystem  需要使用Filesystem的存储卷accessModes : - ReadWriteOnce  # 需要支持RWO的存储卷resources : requests : storage : 25Gi # 最小磁盘空间需求

Pod调用PVC

映射PVC为卷
使用PVC用户无需关心后端存储设备
系统会自动查找匹配

... ...
spec : Volumes :  # 定义存储卷- name : logdata # 定义卷名persistentVolumeClaim : # 定义PVC资源对象claimName : pvc1 # 使用的PVC为pvc1- name : website # 定义卷名persistentVolumeClaim : 	# 定义PVC资源对象 claimName : pvc2 # 定义使用的PVC为pvc2

存储卷挂载路径

... ... 
spec : containers : -	name : nginximage : myos:nginxvolumeMounts :- name : logdata  # 挂载卷名mountPath : /usr/local/nginx/logs  # 挂载路径- name : website   # 挂载卷名mountPath : /usr/local/nginx/html  # 挂载路径 

二、临时卷

1、configMap 卷

configMap卷提供了向Pod注入配置数据的方法,允许你将配置文件与镜像分离,使容器化的应用具有可移植性
configMap 在使用之前需要先创建它,configMap 不是用来保存大量数据的,在其中保存的数据不可超过1Mib

configMap用途

配置环境变量
修改配置文件的参数,数据库的地址等

修改系统时区

创建configMap语法格式
kubectl create configmap 名称 [选项/参数]

kubectl create configmap tz --from-literal=TZ="Asia/Shanghai"
kubectl get configmap

使用资源对象创建configmap

--- 
kind : ConfigMap
apiVersion : v1
metadata : name : timezone
data : TZ="Asia/Shanghai"

使用 :

---
kind : Pod 
apiVersion : v1
metadata : name : web1
spec : ... ... containers : - name : nginximage : myos:nginxenvFrom :  # 配置环境变量- configMapRef : # 调用资源对象name : timezone # Configmap 名称 

配置nginx解析php

在Pod中增加php容器,与nginx共享一张网卡

containers : 
- name : nginx
... ...
- name : php image : myos:php-fpmenvFrom : - configmapRef :   # 配置时区name : timezone  volumeMounts : - name : website  # 挂载NFSmountPath : /usr/local/nginx/html 

制作Configmap配置文件

获取配置文件并修改
kubectl cp -c nginx web1:/usr/local/nginx/conf/nginx.conf nginx.conf
# vim nginx.conf
location ~\.php$ {root	html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi.conf;
}
###
使用命令创建configmap
kubectl create configmap nginx-php --from-file=nginx.conf

映射配置文件

spec : volumes : - name : nginx-php  # 卷名称configMap :  # 引用资源对像name : nginx-php # 资源对象名称... ...containers : - name : nginx... ...volumeMounts : -	name : nginx-php # 卷名称subPath : nginx.conf # 键值(不设置键值映射为目录)mountPath : /usr/local/nginx/conf/nginx.conf # 路径

2、secret卷

secret卷是一种临时卷,类似于ConfigMap但专门用于保存机密数据
在设置Secret.data字段时,所有简直都必须是经过base64编码的字符串

secret用途

配置一些需要加密的环境变量或文件(eg:https证书)
访问需要认证登陆的私有镜像仓库(eg:harbor私有仓库)

创建secret语法格式

kubectl create secret 子类型 名称 [选项/参数]
子类型

通用类型:

kubectl create secret generic 名称 [选项/参数]

用于创建认证登陆私有仓库的子类型

kubectl create secret docker-registry 名称 [选项/参数]

用于创建TLS证书的子类型

kubectl create secret tls 名称 [选项/参数]

登陆私有仓库

kubectl create secret docker-registry harbor-auth --docker-server="harbor:443" --docker-username="username" --docker-password="password" # 仓库主机端口号 登陆用户名 密码
yaml文件:
---
kind : Pod
apiVersion : v1
metadata : name : web2
spec : imagePullSecret :   # secret数据- name : harbor-auth   # 资源对象名称containers : - name : apacheimage : harbor:443/myimg/httpd:latest # 使用私有仓库里的镜像

3、emptyDir 卷

emptyDir的本质是一个简单的空目录,可以提供临时空间,同一个Pod中容器也可以用来共享数据eg:缓存服务器、数据分析统计、排序等
emptyDir随Pod创建而创建,Pod在该节点上运行期间一直存在,当Pod被删除时,临时卷中的数据也会被永久删除
重启Pod中容器不会造成emptyDir数据丢失

... ...
spec : volumes :    # 定义卷- name : cache   # 卷的名字emptyDir : {}   # 卷的类型containers : - name : apacheimage : harbor:443/myimg/httpd:latest volumeMounts : # 在容器中挂载卷-	name : cache # 卷名mountPath : /var/cache # 路径不存在就创建,存在就覆盖

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

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

相关文章

PyTorch 深度学习实践-卷积神经网络基础篇

视频指路 参考博客笔记 参考笔记二 文章目录 上课笔记代码实现作业实现 上课笔记 如果一个网络全都是由线性层串联起来&#xff08;torch.nn.Linear(xx, yy)&#xff09;&#xff0c;就叫他全连接的网络(左边节点到右边节点任意两个都存在权重) 先看一下吴恩达或者李宏毅老师…

QT通用配置文件库(QPreferences)

QT通用配置文件库(QPreferences) QPreferences项目是基于nlohmann/json的qt可视化配置文件库&#xff0c;将配置保存成json格式&#xff0c;并提供UI查看与修改&#xff0c;可通过cmake可快速添加进项目。默认支持基本类型、stl常用容器、基本类型与stl容器组成的结构体&#…

【Git标签管理】理解标签 | 创建标签 | 查看标签 | 删除标签 | 推送标签

目录 1.理解标签 2.创建标签 3.查看标签 4.删除本地仓库的标签 5.推送标签 6.删除远程仓库的标签 1.理解标签 Git提供一个打标签的功能tag&#xff0c;对某一次事务/提交的表示&#xff08;作用/意义&#xff09;。标签 tag &#xff0c;可以简单的理解为是对某次 comm…

Java(二十二)---队列

文章目录 前言1.队列(Queue)的概念2.Queue的使用3.队列的模拟实现4.循环队列5.双端队列6.面试题[1. 用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/description/)[2. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/de…

人工智能导论-机器学习

机器学习概述 概述 本章主要介绍的机器学习的概念、发展历程、发展趋势、相关应用&#xff0c;着重拓展机监督学习和无监督学习的相关知识。 重点&#xff1a;机器学习的定义和应用&#xff1b; 难点&#xff1a;机器学习算法及分类。 机器学习 - 重要性 MachineLeaning出…

力扣第十六题——最接近的三数之和

内容介绍 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数&#xff0c;使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1&#xff1a; 输入&#xff1a;nums [-1,2,1,-4], target 1 输出&#x…

<数据集>钢板缺陷检测数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;1986张 标注数量(xml文件个数)&#xff1a;1986 标注数量(txt文件个数)&#xff1a;1986 标注类别数&#xff1a;7 标注类别名称&#xff1a;[crescent gap, silk spot, water spot, weld line, oil spot, punchin…

算法面试题五

深度学习中的优化算法&#xff1a;请列举并解释几种常用的深度学习优化算法&#xff08;如Adam、SGD等&#xff09; 深度学习中的优化算法是训练神经网络时用于最小化或最大化某个函数&#xff08;通常是损失函数或目标函数&#xff09;的重要工具。这些算法通过迭代更新模型的…

工业圆点定位激光器主要应用场景有哪些?

在现代工业生产的各个领域&#xff0c;精确定位和高效操作已成为提升生产效率和产品质量的关键。其中&#xff0c;工业圆点定位激光器以其高精度、高效率的特性&#xff0c;成为了众多工业应用中的核心工具。接下来我们就跟着鑫优威一起来深入了解一下关于工业圆点定位激光器的…

抖音/快手/小红书私信卡片在线制作

W外链平台&#xff0c;作为现代网络营销领域的一颗璀璨明星&#xff0c;其强大的功能和独特的优势已经吸引了无数企业和个人的目光。在如今这个信息爆炸的时代&#xff0c;如何有效地将自己的网站、产品、服务推广出去&#xff0c;成为了每个营销人员都在思考的问题。而W外链平…

CentOS 7报错:yum命令报错 “ Cannot find a valid baseurl for repo: base/7/x86_6 ”

参考连接&#xff1a; 【linux】CentOS 7报错&#xff1a;yum命令报错 “ Cannot find a valid baseurl for repo: base/7/x86_6 ”_centos linux yum search ifconfig cannot find a val-CSDN博客 Centos7出现问题Cannot find a valid baseurl for repo: base/7/x86_64&…

uniapp 微信默认地图选点功能实现

效果图 配置项 微信公众平台-小程序配置 uniapp配置 上代码 <template><view class"content"><button click"toMap">请选择位置</button></view> </template><script setup lang"ts">function toMa…

Flink HA

目录 Flink HA集群规划 环境变量配置 masters配置 flink-conf.yaml配置 测试 Flink HA集群规划 FLink HA集群规划如下&#xff1a; IP地址主机名称Flink角色ZooKeeper角色192.168.128.111bigdata111masterQuorumPeerMain192.168.128.112bigdata112worker、masterQuorumPee…

Leetcode1929. 数组串联

问题描述&#xff1a; 给你一个长度为 n 的整数数组 nums 。请你构建一个长度为 2n 的答案数组 ans &#xff0c;数组下标 从 0 开始计数 &#xff0c;对于所有 0 < i < n 的 i &#xff0c;满足下述所有要求&#xff1a; ans[i] nums[i]ans[i n] nums[i] 具体而言…

Unity 导入MRTK,使用URP 升级材质,MRTK的材质还是洋红色

控制台显示信息 ToggleBackground material was not upgraded. There’s no upgrader to convert Mixed Reality Toolkit/Standard shader to selected pipeline UnityEditor.Rendering.Universal.UniversalRenderPipelineMaterialUpgrader:UpgradeProjectMaterials() (at 点击…

观察者模式实战:Spring Boot中联动更新机制的优雅实现

引言 在许多应用系统中&#xff0c;我们经常需要处理多个表之间的关联更新问题。例如&#xff0c;在教育管理系统中&#xff0c;当学生的基本信息表中的年龄字段发生更改时&#xff0c;我们可能还需要同步更新学生档案表和学生成绩表中的相关信息。本文将通过一个具体的案例&a…

独立游戏《星尘异变》UE5 C++程序开发日志6——实现存档和基础设置系统

目录 一、存档类 1.创建一个SaveGame类 2.存储关卡内数据 3.加载关卡数据 4.关于定时器 5.存储全局数据 6.加载全局数据 二、存档栏 1.存档栏的数据结构 2.创建新存档 3.覆盖已有存档 4.删除存档 三、游戏的基础设置 1.存储游戏设置的数据结构 2.初始化设置 3.…

在国产芯片上实现YOLOv5/v8图像AI识别-【1.3】YOLOv5的介绍及使用(训练、导出)更多内容见视频

本专栏主要是提供一种国产化图像识别的解决方案&#xff0c;专栏中实现了YOLOv5/v8在国产化芯片上的使用部署&#xff0c;并可以实现网页端实时查看。根据自己的具体需求可以直接产品化部署使用。 B站配套视频&#xff1a;https://www.bilibili.com/video/BV1or421T74f 数据…

5.5 软件工程-系统测试

系统测试 - 意义和目的 系统测试 - 原则 系统测试 - 测试过程 系统测试 - 测试策略 系统测试 - 测试方法 真题 系统测试 - 测试用例设计 黑盒测试 白盒测试 真题 系统测试 - 调试 系统测试 - 软件度量 真题

Linux输出重定向详解

在 Linux 中&#xff0c;输出重定向是将命令的输出&#xff08;标准输出或错误输出&#xff09;重定向到文件或其他位置的过程。常见的重定向符号包括 >、>>、2> 和 &>。以下是一些常用的输出重定向操作示例&#xff1a; 标准输出重定向 使用 > 符号将命…