k8s volumes and data

Overview

传统上,容器引擎(Container Engine)不提供比容器寿命更长的存储。由于容器被认为是瞬态(transient)的,这可能会导致数据丢失或复杂的外部存储选项。Kubernetes卷共享 Pod 生命周期,而不是其中的容器。如果容器终止,数据将继续可供新容器使用。

卷(volume)是一个目录,可能是预先填充的,可供 Pod 中的容器(container)使用。目录的创建、数据和内容的后端存储取决于卷类型(volume type)。截至 v1.13,有 27 种不同的卷类型,从用于访问 Ceph 的 rbd、NFS,到来自 Google 的 gcePersistentDisk 等云提供商的动态卷。每个都有特定的配置选项和依赖性。

容器存储接口 (CSI-Container Storage Interface) 的采用实现了容器container orchestration行业标准接口的目标,以允许访问任意存储系统。目前,卷插件是“树内 (in-tree)”的,这意味着它们是使用核心 Kubernetes 二进制文件编译和构建的。这个“树外(out-of-tree)”对象将允许存储供应商开发单个驱动程序并允许插件容器化。这将取代现有的 Flex 插件,后者需要提升对主机节点的访问权限,这是一个很大的安全问题。

如果您希望存储生命周期与 Pod 不同,则可以使用持久卷(Persistent Volumes)。这些允许 Pod 使用持久卷声明(Persistent Volume Claim)来声明空卷或预填充卷,使得这些volume比Pod 的寿命更长。然后,卷内的数据可以被另一个 Pod 使用,或者作为检索数据的一种方式。

已经存在两个 API 对象来向 Pod 提供数据。编码(encoded)数据可以使用 Secret 传递,非编码数据(non-encoded)可以使用 ConfigMap 传递。这些可用于传递重要数据,例如 SSH 密钥、密码,甚至是/etc/hosts等配置文件。

Introducing Volumes

Pod 规范可以声明一个或多个卷以及它们的可用位置。每个都需要名称(name)、类型(type)和安装点(a mount point)。同一卷可以供 Pod 中的多个容器使用,这可以是容器到容器通信的一种方法。一个卷可以供多个 Pod 使用,每个 Pod 都指定一个写入访问模式。没有并发检查,这意味着数据可能损坏,除非在外部进行锁定。

特定的访问模式(access mode)是 Pod 请求的一部分。作为请求,用户可能会被授予更多但不少于的访问权限,尽管首先会尝试直接匹配。集群将具有相同模式的卷分组在一起,然后按大小从最小到最大对卷进行排序。将针对该访问模式组中的每个卷检查声明,直到有足够大小的卷匹配为止。三种访问模式是:

在这里插入图片描述ReadWriteOnce,允许单节点(node)读写
ReadOnlyMany,允许多个节点只读
ReadWriteMany,允许多个节点读写。

因此,同一节点上的两个 pod 可以写入 ReadWriteOnce,但不同节点上的第三个 pod 由于 FailedAttachVolume 错误而不会准备就绪。

当请求卷时,本地 kubelet 使用kubelet_pods.go脚本映射原始设备,确定并创建容器的挂载点,然后在主机节点文件系统上创建符号链接(symbolic link)以将存储与容器关联。API 服务器向StorageClass插件发出存储请求,但对后端存储的请求的具体内容取决于所使用的插件。

如果未发出对特定StorageClass 的请求,则使用的唯一参数将是访问模式和大小。该卷可以来自任何可用的存储类型,并且没有配置来确定将使用哪些可用的存储类型。

Volume Spec
可用的多种存储类型之一是emptyDir。kubelet 将在容器中创建目录,但不会挂载任何存储。创建的任何数据都会写入共享容器空间。因此,它不会是持久存储。当 Pod 被销毁时,该目录将与容器一起被删除。

apiVersion: v1
kind: Pod
metadata:name: fordpinto namespace: default
spec:containers:- image: simpleapp name: gastank command:- sleep- "3600"volumeMounts:- mountPath: /scratchname: scratch-volumevolumes:- name: scratch-volumeemptyDir: {}

上面的 YAML 文件将创建一个带有单个容器的 Pod,并创建一个名为scrap-volume 的卷,这将在容器内创建/scratch目录。

Volume Types (卷类型)

您可以使用多种类型来定义卷,每种类型都有其优点和缺点。有些是本地的,还有许多利用基于网络的资源。

在 GCE 或 AWS 中,您可以使用GCEpersistentDisk或awsElasticBlockStore类型的卷,这允许您在 Pod 中挂载 GCE 和 EBS 磁盘(假设您已经设置了帐户和权限)。

emptyDir和hostPath卷易于使用。如前所述, emptyDir是一个空目录,当 Pod 终止时该目录会被删除,但会在容器重新启动时重新创建。hostPath卷从主机节点文件系统挂载资源。资源可以是目录、文件套接字、字符或块设备。这些资源必须已存在于要使用的主机上。有两种类型: DirectoryOrCreate和FileOrCreate,它们在主机上创建资源,并在资源不存在时使用它们。

NFS(网络文件系统)和 iSCSI(互联网小型计算机系统接口)是多读卡器场景的直接选择。

用于块存储的 rbd 或 CephFS 和 GlusterFS(如果在 Kubernetes 集群中可用)可以是满足多个写入器需求的不错选择。

除了我们刚刚提到的卷类型之外,还有许多其他可能的卷类型,并且还会添加更多:azureDisk、azureFile、csi、downwardAPI、fc(光纤通道)、flocker、gitRepo、local、projected、portworxVolume、quobyte、scaleIO、secret、storageos、vsphereVolume、permanentVolumeClaim、CSIPersistentVolumeSource等

CSI 允许更大的灵活性和解耦插件,而无需编辑核心 Kubernetes 代码。它是作为未来公开任意插件的标准而开发的。

Shared Volume Example (共享卷)

以下 YAML 文件创建一个 pod exampleA,其中包含两个容器,两个容器都可以访问共享卷:

您可以轻松使用emptyDir或hostPath,因为这些类型不需要任何额外的设置,并且可以在您的Kubernetes集群中工作。

请注意,一个容器 ( betacont ) 进行写入,而另一个容器 ( alphacont ) 可以立即访问数据。没有什么可以阻止容器覆盖对方的数据。锁定或版本控制注意事项必须成为容器化应用程序的一部分,以避免损坏。

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

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

相关文章

C# 数据的保存和提取(.TXT格式)

红色部分的才是最终版 一、将页面内容保存到文件中 第一步 创建Visual的Windows窗体应用,使用的是 第二步 创建几个Label控件、TextBox控件、以及Button按钮,而TextBox控件放入Panel中 第三步 先对写法进行了解,了解保存的语句 StreamWriter sw= new StreamWriter(TXT…

【android开发-17】android中SQLite数据库CRUD详细介绍

1,SQLite数据库读写的操作步骤 在Android中,对SQLite数据库的操作主要包括以下步骤: 1,创建数据库:首先,您需要创建一个SQLite数据库。这可以通过在Android项目中创建一个新的类来实现,该类继…

专业课145+总分440+东南大学920考研专业基础综合信号与系统数字电路经验分享

个人情况简介 今年考研440,专业课145,数一140,期间一年努力辛苦付出,就不多表了,考研之路虽然艰难,付出很多,当收获的时候,都是值得,考研还是非常公平,希望大…

Qt开发 之 记一次安装 Qt5.12.12 安卓环境的失败案例

文章目录 1、安装Qt2、安卓开发的组合套件2.1、CSDN地址2.2、官网地址2.3、发现老方法不适用了 3、尝试用新方法解决3.1、先安装JDK,搞定JDK环境变量3.1.1、安装jdk3.1.2、确定jdk安装路径3.1.3、打开系统环境变量配置3.1.4、配置系统环境变量3.1.5、验证JDK环境变量…

ERPNext SQL 注入漏洞复现

0x01 产品简介 ERPNext 是一套开源的企业资源计划系统。 0x02 漏洞概述 ERPNext 系统frappe.model.db_query.get_list 文件 filters 参数存在 SQL 注入漏洞,攻击者除了可以利用 SQL 注入漏洞获取数据库中的信息(例如,管理员后台密码、站点的用户个人信息)之外,甚至在高权…

100:ReconFusion: 3D Reconstruction with Diffusion Priors

简介 官网 少样本重建必然导致nerf失败,论文提出使用diffusion模型来解决这一问题。从上图不难看出,论文一步步提升视角数量,逐步与Zip-NeRF对比。 实现流程 Diffusion Model for Novel View Synthesis 给定一组输入图像 x o b s { x i…

EMNLP 2023 获奖论文公布,大模型、NLP等领域火爆

EMNLP是计算语言学和自然语言处理领域顶级国际会议之一,属于CCF B类,是由 ACL 下属的SIGDAT小组主办的NLP领域顶级国际会议,一年举办一次。相较于ACL,EMNLP更偏向于NLP在各个领域解决方案的学术探讨。 今年的EMNLP 2023 已于2023…

Excel COUNT类函数使用

目录 一. COUNT二. COUNTA三. COUNTBLANK四. COUNTIF五. COUNTIFS 一. COUNT ⏹用于计算指定范围内包含数字的单元格数量。 基本语法 COUNT(value1, [value2], ...)✅统计A2到A7所有数字单元格的数量 ✅统计A2到A7,B2到B7的所有数字单元格的数量 二. COUNTA ⏹计…

Unity中Shader黑白阀值后处理效果

文章目录 前言一、我们先来PS看一下黑白阀值的效果二、使用step(a,b)函数实现效果三、实现脚本控制黑白阀值1、在Shader属性面板定义控制阀值变量2、把step的a改为_Value3、在后处理脚本设置公共成员变量,并且设置范围为(0,1)4、在Graphics.B…

angular状态管理方案(ngrx)

完全基于redux的ngrx方案,我们看看在angular中如何实现。通过一个简单的计数器例子梳理下整个流程 一 安装 :npm i ngrx/store 这里特别要注意一点:安装 ngrx/store的时候会出现和angular版本不一致的问题 所以检查一下angular/core的版本…

HTML的img常见应用属性

目录 一、src、alt、width、height 的运用二、title的运用三、align的运用四、border的运用 一、src、alt、width、height 的运用 src指定图像的URL,即图像的路径alt指定图像的替代文本,当图像无法显示时,会显示替代文本。width指定图像的宽…

php操作数据库,用wampserver工具

php操作数据库,用wampserver工具 打开wampserver数据库可视化,创建表格,插入数据 DROP TABLE IF EXISTS user; CREATE TABLE IF NOT EXISTS user (user_Id int NOT NULL AUTO_INCREMENT COMMENT 用户编号,user_Name varchar(20) CHARACTER S…

使用MFC实现数据输出真的好方便(C++)

void CMFCApplication1Dlg::OnEnKillfocusEdit1() { //失去焦点就在上部的框显示 CString cont; GetDlgItemTextW(IDC_STATIC2, cont); cont L"你好啊\n"; SetDlgItemTextW(IDC_STATIC2,cont); // TODO: 在此添加控件通知处理程序代码 }

(三潮来袭)探寻2023年科技变革潮流与2024年前瞻展望

2023年对于IT行业来说是一个动荡而又充满变革的一年。随着世界逐渐走出前几年的挑战,企业逐渐复苏,但这个行业仍然在经历着激烈的变革。在这个时候,我们看到了一些引人注目的技术变化和未来的趋势。 一、2023年回顾 关键词:Chat…

Springboot自定义start首发预告

Springboot自定义start首发预告 基于Springboot的自定义start , 减少项目建设重复工作, 如 依赖 , 出入参包装 , 日志打印 , mybatis基本配置等等等. 优点 模块化 可插拔 易于维护和升级 定制化 社区支持(后期支持) 发布时间 预告: 2023-12-10 预计发布: 2024-1-1 , 元旦首…

Web server failed to start. Port 8888 was already in use.

端口占用 强制终止占用端口的进程 获取占用端口的进程ID(PID):在终端或命令提示符中运行以下命令以查找占用端口的进程ID: ①在 Unix/Linux/Mac 上:lsof -i :8888 ②在 Windows 上:netstat -ano | findstr …

C# OpenCvSharp DNN 部署FastestDet

目录 效果 模型信息 项目 代码 下载 C# OpenCvSharp DNN 部署FastestDet 效果 模型信息 Inputs ------------------------- name:input.1 tensor:Float[1, 3, 512, 512] --------------------------------------------------------------- Outpu…

Gateway

网关的作用: 可以对访问的用户进行身份认证和权限校验还可以服务路由,负载均衡还可以进行请求限流 网关本身也是微服务的一部分,所以需要使用nacos进行服务注册和发现 网关路由的配置 路由id:路由唯一标识uri:路由…

配电室无人值守方案

配电室无人值守方案是在高、低压配电柜、变压器实现智能化的基础上,通过移动互联网接入电易云,建设用户侧智慧供配电云管理系统。借助手机APP、电脑WEB或监控中心大屏,实现对供配电系统的智能化安全监控与运维管理。 配电室无人值守方案的特点…

【PyTorch】现代卷积神经网络

文章目录 1. 理论介绍1.1. 深度卷积神经网络(AlexNet)1.1.1. 概述1.1.2. 模型设计 1.2. 使用块的网络(VGG)1.3. 网络中的网络(NiN) 2. 实例解析2.1. 实例描述2.2. 代码实现2.2.1. 在FashionMNIST数据集上训…