飞天使-k8s知识点12-kubernetes资源对象5-Volume与ConfigMap等

本文主要是介绍飞天使-k8s知识点12-kubernetes资源对象5-Volume与ConfigMap等,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

      • 为什么需要volume
        • ConfigMap
        • Volume
        • nfs挂载volume
          • 持久卷的痛点

为什么需要volume

容器中的文件在磁盘上是临时存放的,这给容器中运行的特殊应用程序带来一些问题。 首先,当容器崩溃时,kubelet 将重新启动容器,容器中的文件将会丢失——因为容器会以干净的状态重建k8s支持很多类型的卷
awsElasticBlockStore、azureDisk、azureFile、cephfs、cinder、configMap、csi、downwardAPI、emptyDir、fc (fibre channel)、flexVolume、flockegcePersistentDisk、gitRepo (deprecated)、glusterfs、hostPath、iscsi、local、nfs、persistentVolumeClaim、projected、portworxVolume、quobyte、rbd、scaleIO、secret、storageos、vsphereVolumeK8s 支持的卷基本上可以分为三类:配置信息、临时存储、持久存储。无论何种类型的应用,都会用到配置文件或启动参数。而 K8s 将配置信息进行了抽象,定义成了几种资源,主要有以下三种:ConfigMapSecretDownwardAPI
ConfigMap
onfigMap 卷通常以一个或多个 key: value 形式存在,主要用来保存应用的配置数据。其中 value 可以是字面量或配置文件。
不过,因为ConfigMap 在设计上不是用来保存大量数据的,所以在 ConfigMap 中保存的数据不可超过 1 MiB(兆字节)。
ConfigMap 有两种创建方式:通过命令行创建通过 yaml 文件创建命令行创建的: [root@kubeadm-master1 ~]# kubectl create configmap c1 --from-literal=foo=bar --from-literal=bar=bra.txt
configmap/c1 created
[root@kubeadm-master1 ~]# ll
总用量 24
-rw-------. 1 root root 1259 12月 26 2022 anaconda-ks.cfg
-rw-r--r--  1 root root   71 12月 22 13:46 command.sh
-rw-r--r--. 1 root root   13 4月  26 2023 ifcfg-eth0
-rw-r--r--  1 root root 1127 12月 21 15:08 kubecfg.crt
-rw-r--r--  1 root root 1679 12月 21 15:08 kubecfg.key
-rw-r--r--  1 root root 2496 12月 21 15:08 kubecfg.p12
[root@kubeadm-master1 ~]# kubectl get configmap
NAME               DATA   AGE
c1                 2      18s
kube-root-ca.crt   1      25d
[root@kubeadm-master1 ~]# kubectl describe configmap c1
Name:         c1
Namespace:    default
Labels:       <none>
Annotations:  <none>Data
====
bar:
----
bra.txt
foo:
----
bar
Events:  <none>
[root@kubeadm-master1 ~]#通过configmap-demo.yaml  yaml 文件创建的
kind: ConfigMap
apiVersion: v1
metadata:name:c2namespace: default
data:foo:barbar:baz
Volume
Kubernetes(也称为K8s)是一个用于自动化部署、扩展和管理容器化应用程序的开源平台。在Kubernetes中,Volume(卷)是一种抽象概念,用于提供容器持久化存储的解决方案。它允许容器在生命周期中存储和访问持久化数据。下面是对Kubernetes Volume功能的理解:持久化存储:Volume提供了一种持久化存储数据的方式,使得容器在重新启动、重新调度或维护迁移等场景下仍然能够访问之前的数据。它解决了容器中的数据持久性问题。抽象化和标准化:Volume在Kubernetes中是一个抽象层,它隐藏了底层存储细节,使得应用程序可以以一个统一的方式来访问和管理不同类型的存储解决方案,如本地存储、网络存储和云存储等。插件化支持:Kubernetes提供了丰富的Volume插件,可以满足不同场景和需求的存储要求。这些插件包括EmptyDir、HostPath、PersistentVolumeClaim(PVC)、NFS、AWS EBS、Azure Disk等,每个插件都有不同的特点和适用范围。容器级别的访问控制:Volumes可以以容器级别进行访问控制,不同容器可以使用不同的Volume实例,并根据需要进行读取和写入操作。这使得容器之间的数据隔离、共享和管理变得更加灵活和可控。动态供给和自动管理:Kubernetes支持动态供给和自动管理Volume。通过PersistentVolume(PV)和PersistentVolumeClaim(PVC)的机制,管理员可以预先配置存储资源并将其提供给应用程序。而应用程序只需要声明自己的存储需求(PVC),Kubernetes会自动选择和绑定适合的PV,并将其动态分配给应用程序。通过使用Kubernetes Volume功能,应用程序开发者可以更方便地处理数据的持久性和生命周期管理。它提供了一种统一和标准化的方式来管理容器中的持久化存储,使得容器更具可移植性、可扩展性和可靠性。
nfs挂载volume
apiVersion: v1
kind: Pod
metadata:name: nfs-pd
spec:containers:- name: test-containerimage: reg.westos.org/k8s/nginxvolumeMounts:- mountPath: /usr/share/nginx/htmlname: test-volumevolumes:- name: test-volumenfs:server: 172.25.254.4path: /nfsdata
持久卷的痛点
虽然通过使用持久卷,可以解决临时卷数据易丢失的问题。但目前持久卷的使用方式还存在以下痛点:Pod 开发人员可能对存储不够了解,却要对接多种存储安全问题,有些存储可能需要账号密码,这些信息不应该暴露给 Pod因此为了解决这些不足,K8s 又针对持久化存储抽象出了三种资源 PV、PVC、StorageClass。三种资源定义如下:PV 描述的是持久化存储数据卷PVC 描述的是 Pod 想要使用的持久化存储属性,既存储卷申明StorageClass 作用是根据 PVC 的描述,申请创建对应的 PVPV 和 PVC 的概念可以对应编程语言中的面向对象思想,PVC 是接口,PV 是具体实现。
有了这三种资源类型后,Pod 就可以通过静态供应和动态供应这两种方式来使用持久卷。

参考文档:
作者:又拍云
链接:https://juejin.cn/post/7186925237592653884
来源:稀土掘金

这篇关于飞天使-k8s知识点12-kubernetes资源对象5-Volume与ConfigMap等的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

Java实现将byte[]转换为File对象

《Java实现将byte[]转换为File对象》这篇文章将通过一个简单的例子为大家演示Java如何实现byte[]转换为File对象,并将其上传到外部服务器,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言1. 问题背景2. 环境准备3. 实现步骤3.1 从 URL 获取图片字节数据3.2 将字节数组

Javascript访问Promise对象返回值的操作方法

《Javascript访问Promise对象返回值的操作方法》这篇文章介绍了如何在JavaScript中使用Promise对象来处理异步操作,通过使用fetch()方法和Promise对象,我们可以从... 目录在Javascript中,什么是Promise1- then() 链式操作2- 在之后的代码中使

MyBatis的配置对象Configuration作用及说明

《MyBatis的配置对象Configuration作用及说明》MyBatis的Configuration对象是MyBatis的核心配置对象,它包含了MyBatis运行时所需的几乎所有配置信息,这个对... 目录MyBATis配置对象Configuration作用Configuration 对象的主要作用C

SpringBoot实现导出复杂对象到Excel文件

《SpringBoot实现导出复杂对象到Excel文件》这篇文章主要为大家详细介绍了如何使用Hutool和EasyExcel两种方式来实现在SpringBoot项目中导出复杂对象到Excel文件,需要... 在Spring Boot项目中导出复杂对象到Excel文件,可以利用Hutool或EasyExcel

Springboot控制反转与Bean对象的方法

《Springboot控制反转与Bean对象的方法》文章介绍了SpringBoot中的控制反转(IoC)概念,描述了IoC容器如何管理Bean的生命周期和依赖关系,它详细讲解了Bean的注册过程,包括... 目录1 控制反转1.1 什么是控制反转1.2 SpringBoot中的控制反转2 Ioc容器对Bea

Java对象和JSON字符串之间的转换方法(全网最清晰)

《Java对象和JSON字符串之间的转换方法(全网最清晰)》:本文主要介绍如何在Java中使用Jackson库将对象转换为JSON字符串,并提供了一个简单的工具类示例,该工具类支持基本的转换功能,... 目录前言1. 引入 Jackson 依赖2. 创建 jsON 工具类3. 使用示例转换 Java 对象为

前端知识点之Javascript选择输入框confirm用法

《前端知识点之Javascript选择输入框confirm用法》:本文主要介绍JavaScript中的confirm方法的基本用法、功能特点、注意事项及常见用途,文中通过代码介绍的非常详细,对大家... 目录1. 基本用法2. 功能特点①阻塞行为:confirm 对话框会阻塞脚本的执行,直到用户作出选择。②

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙