当前位置: 首页 > news >正文

在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 分布式存储文件系统需要以下步骤:

  1. 在 Ceph 集群中创建一个 FS 文件系统,使用命令 ceph fs new
  2. 在 Kubernetes 集群中创建一个 Secret 对象,用于存储连接到 Ceph 集群所需的密钥和证书。可以使用 ceph auth get-key client.admin 命令获取这些信息。
  3. 创建一个 ConfigMap 对象,并将 ceph.conf 文件的内容添加到其中。该文件应该包含有关 Ceph 集群的配置信息。
  4. 创建一个 PersistentVolumeClaim(PVC)对象来声明需要访问 CephFS 存储的 Pod。例如:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:name: cephfs-pvc
spec:accessModes:- ReadWriteManyresources:requests:storage: 10GistorageClassName: cephfs-storage-class
  1. 创建一个 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
  1. 部署完成后,可以通过访问 Pod 中的 /var/www/html/ 目录来测试 CephFS 存储是否正常工作。在此之前,需要先在 Ceph 集群中创建一个目录,并将其挂载到该目录。

这就是在 Kubernetes 中部署 CephFS 分布式存储文件系统的步骤。

五,PersistentVolume静态制备

在 Kubernetes 中,可以使用静态 PersistentVolume(PV)制备的方式来创建 PV。下面是一个简单的示例:

  1. 创建一个 PV 文件,例如 pv.yaml,定义存储资源、访问模式和其他属性。示例文件如下:
apiVersion: v1
kind: PersistentVolume
metadata:name: my-pv
spec:capacity:storage: 10GiaccessModes:- ReadWriteOncenfs:path: /exports/my-dataserver: nfs.example.com
  1. 执行以下命令创建 PV:
kubectl create -f pv.yaml
  1. 确认 PV 是否已经成功创建:
kubectl get pv
  1. 创建 PVC 文件,例如 pvc.yaml,用于声明需要使用的存储资源和访问模式。示例文件如下:
apiVersion: v1
kind: PersistentVolumeClaim 
metadata:name: my-pvc 
spec:accessModes:- ReadWriteOnce resources:requests:storage: 5Gi 
  1. 执行以下命令创建 PVC:
kubectl create -f pvc.yaml
  1. 在 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"
  1. 部署 Pod 后,可以访问 /var/www/html 目录来测试是否已经成功挂载 PV。

这就是使用静态 PersistentVolume 制备的方式在 Kubernetes 中创建 PV 的步骤。

六,StorageClass动态制备

在 Kubernetes 中,可以使用动态 StorageClass 制备的方式来创建 PV。下面是一个简单的示例:

  1. 创建一个存储类定义文件 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 容量
  1. 执行以下命令创建 StorageClass:
kubectl create -f storage-class.yaml
  1. 确认 StorageClass 是否已经成功创建:
kubectl get sc
  1. 创建 PVC 文件,例如 pvc.yaml,用于声明需要使用的存储资源和访问模式,并将上一步中创建的 StorageClass 指定为存储类。示例文件如下:
apiVersion: v1 
kind: PersistentVolumeClaim 
metadata:name: my-pvc 
spec:accessModes:- ReadWriteOnce resources:requests:storage: 5Gi storageClassName: my-storage-class # 指定存储类名称
  1. 执行以下命令创建 PVC:
kubectl create -f pvc.yaml
  1. 在 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"
  1. 部署 Pod 后,可以访问 /var/www/html 目录来测试是否已经成功挂载 PV。

这就是使用动态 StorageClass 制备的方式在 Kubernetes 中创建 PV 的步骤。

七,PersistentVolumeClaim磁盘申领

在 Kubernetes 中,可以使用 PersistentVolumeClaim(PVC)来申领存储资源。下面是一个简单的示例:

  1. 创建一个 PVC 文件 pvc.yaml,用于声明需要使用的存储资源和访问模式。示例文件如下:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: my-pvc
spec:accessModes:- ReadWriteOnce   # 访问模式为读写一次resources:requests:storage: 5Gi   # 申请的磁盘空间大小为5GB
  1. 执行以下命令创建 PVC:
kubectl create -f pvc.yaml
  1. 确认 PVC 是否已经成功创建:
kubectl get pvc
  1. 在 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"
  1. 部署 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类&#xff1a;基本数据类型复合类型 基本类型&#xff1a;char short int long float double 复合类型&#xff1a;数组 结构体 共用体 类&#xff08;C语言没有类&#xff0c;C有&#xff09; 1.1.1、内存占用与sizeof运算符 数据…...

Python如何正确解决爬虫过程中的Cookie失效问题?

前言 本文是该专栏的第54篇,后面会持续分享python爬虫干货知识,记得关注。 在python爬虫项目中,Cookie是一种用于在客户端和服务器之间传递信息的技术。在爬取某些网站的时候,可能会需要登录才能正常获取到数据,这个时候就需要用到cookie来解决。通常情况下,需要将cooki…...

维护自己电脑浅析

作为一名计算机用户&#xff0c;维护自己的电脑是非常重要的&#xff0c;这可以保证电脑的正常运行、数据的安全、提高电脑的性能等。在本文中&#xff0c;我将分享一些我个人维护电脑的经验和技巧。 定期清理电脑 电脑在使用过程中会产生大量的临时文件、垃圾文件、缓存文件等…...

svo2论文

论文题目 SVO: Semidirect Visual Odometry for Monocular and Multicamera Systems 内容 1&#xff09; 具有最小特征漂移的长特征轨迹&#xff1b; 2&#xff09; 图像平面中的大量均匀分布的特征&#xff1b; 3&#xff09;新特征与旧地标的可靠关联&#xff08;即环路闭…...

【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源码的时候&#xff0c;提示一下错误&#xff1a; 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 是最流行的版本控制工具&#xff0c;本文介绍其在安卓开发环境Android Studio下的使用。 本文参考链接是&#xff1a;https://learntodroid.com/how-to-use-git-and-github-in-android-studio/ 一&#xff1a;Android Studio 中设置Git …...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

windows系统MySQL安装文档

概览&#xff1a;本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容&#xff0c;为学习者提供全面的操作指导。关键要点包括&#xff1a; 解压 &#xff1a;下载完成后解压压缩包&#xff0c;得到MySQL 8.…...