在CSDN学Golang云原生(Kubernetes Volume)
一,Volume 与 configMap
Kubernetes 中的 Volume 和 ConfigMap 都是 Kubernetes 中常用的资源对象。它们可以为容器提供持久化存储和配置文件等。
Volume 可以将容器内部的文件系统挂载到宿主机上,也可以将多个容器间共享一个 Volume,并且 Volume 与 Pod 的生命周期相同。
ConfigMap 则是一种用于保存应用程序配置数据的 API 对象,通过 ConfigMap 将应用程序配置信息从 Pod Spec 中分离出来,使得应用程序配置更加灵活和可维护。
在使用时,可以将 ConfigMap 挂载为 Volume,使得容器中的应用程序能够访问其中的配置信息;或者将 ConfigMap 直接注入到容器环境变量中,在应用程序启动时读取并使用这些环境变量。
Volume 主要解决了数据持久化问题,而 ConfigMap 则主要解决了应用程序配置管理问题。
二,Volume 与 secret
在 Kubernetes 中,Volume 和 Secret 都是用于为容器提供持久化存储的资源对象。它们的不同点在于 Volume 是用来存储普通数据的,而 Secret 则是专门用来存储敏感数据的。
Secret 可以用来保存密码、密钥等敏感信息,并且这些信息会被加密后保存在 etcd 中。同时,Secret 也可以被挂载到容器内部作为文件系统使用,在容器内部访问这些敏感信息。
Kubernetes 支持多种类型的 Secret 数据,如 Opaque、ServiceAccountToken 等。其中 Opaque 类型的 Secret 可以保存任意类型的键值对,例如用户名和密码等;而 ServiceAccountToken 则是由 Kubernetes 生成的一种安全令牌,用于验证 Pod 与 Kubernetes API Server 的身份。
Volume 和 Secret 都是 Kubernetes 中常用的持久化资源对象,在应用程序开发中起到了很重要的作用。
三,Volume与PersistentVolume
在 Kubernetes 中,Volume 和 PersistentVolume 都是用于为容器提供持久化存储的资源对象。它们的不同点在于 Volume 是由 Pod 直接使用的,而 PersistentVolume 则是由多个 Pod 共享使用的。
PersistentVolume 可以理解为集群中的一个存储池,由管理员进行创建和管理,并且可以被多个 Pod 所共享。同时,在创建 PersistentVolume 时可以指定许多参数,如存储类型、大小、访问模式等等。Pod 使用 PersistentVolumeClaim(PVC)来申请获取一部分 PersistentVolume 的存储空间,并且 PVC 可以与 Pod 一起声明在同一个 YAML 文件中。
当 PVC 被创建时,Kubernetes 会尝试寻找一个可用的 PersistentVolume 来满足其需求,并将这个 PV 绑定到这个 PVC 上。如果没有可用的 PV,则 Kubernetes 将自动地创建一个新的 PV 并绑定到该 PVC 上。当 PVC 不再需要使用这个 PV 时,可以通过删除该 PVC 来释放该 PV 的占用。
PersistentVolume 和 Volume 都是 Kubernetes 中常用的持久化资源对象,在应用程序开发中起到了很重要的作用。但是它们的应用场景有所不同:Volume 更适合为单独运行的 Pod 提供本地存储;而 PersistentVolume 更适合为多个 Pod 提供共享、稳定和长期可用的存储。
四,部署cephfs分布式存储文件系统
在 Kubernetes 中部署 CephFS 分布式存储文件系统需要以下步骤:
- 在 Ceph 集群中创建一个 FS 文件系统,使用命令
ceph fs new。 - 在 Kubernetes 集群中创建一个 Secret 对象,用于存储连接到 Ceph 集群所需的密钥和证书。可以使用
ceph auth get-key client.admin命令获取这些信息。 - 创建一个 ConfigMap 对象,并将
ceph.conf文件的内容添加到其中。该文件应该包含有关 Ceph 集群的配置信息。 - 创建一个 PersistentVolumeClaim(PVC)对象来声明需要访问 CephFS 存储的 Pod。例如:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:name: cephfs-pvc
spec:accessModes:- ReadWriteManyresources:requests:storage: 10GistorageClassName: cephfs-storage-class
- 创建一个 Deployment 或 StatefulSet 对象,并将上一步中创建的 PVC 和 ConfigMap 引用进来。示例 YAML 文件如下:
apiVersion: apps/v1beta2
kind: Deployment
metadata:name: my-deployment
spec:replicas: 1template:metadata:labels:app: my-appspec:containers:- name: my-containerimagePullPolicy: IfNotPresentimage: nginxvolumeMounts:- mountPath: /var/www/html/name: cephfs-volume-mount volumes:- name: cephfs-volume-mountpersistentVolumeClaim:claimName: cephfs-pvc- name: ceph-configmapconfigMap:name: ceph-configmap
- 部署完成后,可以通过访问 Pod 中的
/var/www/html/目录来测试 CephFS 存储是否正常工作。在此之前,需要先在 Ceph 集群中创建一个目录,并将其挂载到该目录。
这就是在 Kubernetes 中部署 CephFS 分布式存储文件系统的步骤。
五,PersistentVolume静态制备
在 Kubernetes 中,可以使用静态 PersistentVolume(PV)制备的方式来创建 PV。下面是一个简单的示例:
- 创建一个 PV 文件,例如
pv.yaml,定义存储资源、访问模式和其他属性。示例文件如下:
apiVersion: v1
kind: PersistentVolume
metadata:name: my-pv
spec:capacity:storage: 10GiaccessModes:- ReadWriteOncenfs:path: /exports/my-dataserver: nfs.example.com
- 执行以下命令创建 PV:
kubectl create -f pv.yaml
- 确认 PV 是否已经成功创建:
kubectl get pv
- 创建 PVC 文件,例如
pvc.yaml,用于声明需要使用的存储资源和访问模式。示例文件如下:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: my-pvc
spec:accessModes:- ReadWriteOnce resources:requests:storage: 5Gi
- 执行以下命令创建 PVC:
kubectl create -f pvc.yaml
- 在 Pod 配置文件中引用上一步中创建的 PVC。示例 YAML 文件如下:
apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-container imagePullPolicy: IfNotPresent image: nginx volumeMounts:- mountPath: "/var/www/html"name : "my-volume" volumes :- name: "my-volume"persistentVolumeClaim:claimName: "my-pvc"
- 部署 Pod 后,可以访问
/var/www/html目录来测试是否已经成功挂载 PV。
这就是使用静态 PersistentVolume 制备的方式在 Kubernetes 中创建 PV 的步骤。
六,StorageClass动态制备
在 Kubernetes 中,可以使用动态 StorageClass 制备的方式来创建 PV。下面是一个简单的示例:
- 创建一个存储类定义文件
storage-class.yaml,其中指定了如何创建 PersistentVolume 和其他属性。示例文件如下:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: my-storage-class
provisioner: kubernetes.io/aws-ebs # 存储提供者名称
parameters:type: gp2
reclaimPolicy: Retain # 删除 PVC 时保留 PV
allowVolumeExpansion: true # 允许扩容 PV 容量
- 执行以下命令创建 StorageClass:
kubectl create -f storage-class.yaml
- 确认 StorageClass 是否已经成功创建:
kubectl get sc
- 创建 PVC 文件,例如
pvc.yaml,用于声明需要使用的存储资源和访问模式,并将上一步中创建的 StorageClass 指定为存储类。示例文件如下:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: my-pvc
spec:accessModes:- ReadWriteOnce resources:requests:storage: 5Gi storageClassName: my-storage-class # 指定存储类名称
- 执行以下命令创建 PVC:
kubectl create -f pvc.yaml
- 在 Pod 配置文件中引用上一步中创建的 PVC。示例 YAML 文件如下:
apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-container imagePullPolicy: IfNotPresent image: nginx volumeMounts:- mountPath: "/var/www/html"name : "my-volume" volumes :- name: "my-volume"persistentVolumeClaim:claimName: "my-pvc"
- 部署 Pod 后,可以访问
/var/www/html目录来测试是否已经成功挂载 PV。
这就是使用动态 StorageClass 制备的方式在 Kubernetes 中创建 PV 的步骤。
七,PersistentVolumeClaim磁盘申领
在 Kubernetes 中,可以使用 PersistentVolumeClaim(PVC)来申领存储资源。下面是一个简单的示例:
- 创建一个 PVC 文件
pvc.yaml,用于声明需要使用的存储资源和访问模式。示例文件如下:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: my-pvc
spec:accessModes:- ReadWriteOnce # 访问模式为读写一次resources:requests:storage: 5Gi # 申请的磁盘空间大小为5GB
- 执行以下命令创建 PVC:
kubectl create -f pvc.yaml
- 确认 PVC 是否已经成功创建:
kubectl get pvc
- 在 Pod 配置文件中引用上一步中创建的 PVC。示例 YAML 文件如下:
apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-container imagePullPolicy: IfNotPresent image: nginx volumeMounts:- mountPath: "/var/www/html"name : "my-volume" volumes :- name: "my-volume"persistentVolumeClaim:claimName: "my-pvc"
- 部署 Pod 后,可以访问
/var/www/html目录来测试是否已经成功挂载 PV。
这就是在 Kubernetes 中使用 PVC 进行磁盘申领的步骤。
相关文章:
在CSDN学Golang云原生(Kubernetes Volume)
一,Volume 与 configMap Kubernetes 中的 Volume 和 ConfigMap 都是 Kubernetes 中常用的资源对象。它们可以为容器提供持久化存储和配置文件等。 Volume 可以将容器内部的文件系统挂载到宿主机上,也可以将多个容器间共享一个 Volume,并且 …...
第十五章 友元 异常和其他
RTTI RTTI是什么 RTTI是运行阶段类型识别,通过运行时类型识别,程序能够使用基类的指针或者引用来检查这些指针或者引用所指向的对象的实际派生类型。 RTTI的三个元素 dynamic_cast运算符 dynamic_cast概念: dynamic_cast运算符能够将基…...
制作DBC文件
DBC文件是CAN通讯的密码本,Matlab的SimuLink中常用DBC作为CAN通讯的解析桥梁 制作DBC文件,内容是转速、位置&…...
【1.1】Java微服务:初识微服务
✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。 🍎个人主页:Meteors.的博客 💞当前专栏: 微服务 ✨特色专栏: 知识分享 &#x…...
数据结构--串、数组、广义表
这里写目录标题 串定义案例引用串的类型定义以及存储结构抽象类型定义存储结构(顺序表较为常用)顺序存储结构链式存储结构 串的模式匹配算法(查找主串中是否有某个字串)BF算法KMP算法设计思想对字串的回溯进行了优化代码对next【j】进行优化 数组类型一维…...
白银挑战——链表高频面试算法题
算法通关村第一关–链表白银挑战笔记 开始时间:2023年7月18日14:39:36 链表 Java中定义一个链表 class ListNode {public int val;public ListNode next;ListNode(int x) {val x;next null;}}1、四种方法解决两个链表第一个公共子节点 解释一下什么是公共节点 如…...
海外腾讯云账号:腾讯云高性能计算平台 THPC
高性能计算平台(TencentCloud High Performance Computing,THPC)是一款腾讯云自研的高性能计算资源管理服务,集成腾讯云上的计算、存储、网络等产品资源,并整合 HPC 专用作业管理调度、集群管理等软件,向用…...
eclipse 最新版没有navigator视图如何解决
使用project exploere视图可以显示类似navigator视图 1.显示project exploere视图 window---->show view --->project exploere 2.project exploere视图转换为类似navigator视图 第一步:点击视图右上角三个点或者倒三角,点击fiters and custom…...
Zynq-Linux移植学习笔记之62- PL挂载复旦微flash
1、背景介绍 现在为了全国产化需要,之前所有的进口flash全部要换成国产flash 2、复旦微flash型号 其中EFM25QU256和EFM25QL256对标winbond的w25q256 nor flash 3、FPGA设置 复旦微flash只支持单线模式,当使用PL侧的IP核访问时,需要设置模式…...
SpringBoot复习:(2)Tomcat容器是怎么启动的?
SpringApplication的run方法包含如下代码: 其中调用的refreshContext代码如下: 其中调用的refresh方法片段如下: 其中调用的refresh方法代码如下: 其中调用的super.refresh方法代码如下: public void refresh() th…...
1 MobileHomeTopicApplication
目录 1 OrderApplication 1.1 引用文件 1.2 #region 字段 1.3 #region 属性 OrderApplication 引用文件using System; using...
mpi4py包安装报错
报错情况 #include <mpi.h>^~~~~~~compilation terminated.failure.removing: _configtest.c _configtest.oerror: Cannot compile MPI programs. Check your configuration!!![end of output]note: This error originates from a subprocess, and is likely not a probl…...
C语言进阶-1
1、数据类型 1.1、基本数据类型 数据类型分2类:基本数据类型复合类型 基本类型:char short int long float double 复合类型:数组 结构体 共用体 类(C语言没有类,C有) 1.1.1、内存占用与sizeof运算符 数据…...
Python如何正确解决爬虫过程中的Cookie失效问题?
前言 本文是该专栏的第54篇,后面会持续分享python爬虫干货知识,记得关注。 在python爬虫项目中,Cookie是一种用于在客户端和服务器之间传递信息的技术。在爬取某些网站的时候,可能会需要登录才能正常获取到数据,这个时候就需要用到cookie来解决。通常情况下,需要将cooki…...
维护自己电脑浅析
作为一名计算机用户,维护自己的电脑是非常重要的,这可以保证电脑的正常运行、数据的安全、提高电脑的性能等。在本文中,我将分享一些我个人维护电脑的经验和技巧。 定期清理电脑 电脑在使用过程中会产生大量的临时文件、垃圾文件、缓存文件等…...
svo2论文
论文题目 SVO: Semidirect Visual Odometry for Monocular and Multicamera Systems 内容 1) 具有最小特征漂移的长特征轨迹; 2) 图像平面中的大量均匀分布的特征; 3)新特征与旧地标的可靠关联(即环路闭…...
【GoLang】MAC安装Go语言环境
小试牛刀 首先安装VScode软件 或者pycharmmac安装brew软件 brew install go 报了一个错误 不提供这个支持 重新brew install go 之后又重新brew reinstall go 使用go version 可以看到go 的版本 使用go env 可以看到go安装后的配置 配置一个环境变量 vim ~/.zshrc, # bre…...
epoll服务器创建
驱动 #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/io.h> #include <linux/device.h> #include <linux/uaccess.h> #include <linux/poll.h> unsigned int major; char kbuf[128]{0}…...
jdk11环境 提示“因为 accessExternalDTD 属性设置的限制导致不允许 ‘http‘ 访问“bug
在运行mybatis源码的时候,提示一下错误: Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession. ### Cause: org.apache.ibatis.builder.BuilderException: Error creating docum…...
Android Studio 的版本控制Git
Android Studio 的版本控制Git。 Git 是最流行的版本控制工具,本文介绍其在安卓开发环境Android Studio下的使用。 本文参考链接是:https://learntodroid.com/how-to-use-git-and-github-in-android-studio/ 一:Android Studio 中设置Git …...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
