飞天使-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

相关文章

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

k8s部署MongDB全过程

《k8s部署MongDB全过程》文章介绍了如何在Kubernetes集群中部署MongoDB,包括环境准备、创建Secret、创建服务和Deployment,并通过Robo3T工具测试连接... 目录一、环境准备1.1 环境说明1.2 创建 namespace1.3 创建mongdb账号/密码二、创建Sec

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

java中VO PO DTO POJO BO DO对象的应用场景及使用方式

《java中VOPODTOPOJOBODO对象的应用场景及使用方式》文章介绍了Java开发中常用的几种对象类型及其应用场景,包括VO、PO、DTO、POJO、BO和DO等,并通过示例说明了它... 目录Java中VO PO DTO POJO BO DO对象的应用VO (View Object) - 视图对象

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE