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

这篇具有很好参考价值的文章主要介绍了飞天使-k8s知识点12-kubernetes资源对象5-Volume与ConfigMap等。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

为什么需要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、vsphereVolume


K8s 支持的卷基本上可以分为三类:配置信息、临时存储、持久存储。
 
 无论何种类型的应用,都会用到配置文件或启动参数。而 K8s 将配置信息进行了抽象,定义成了几种资源,主要有以下三种:

ConfigMap

Secret

DownwardAPI

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:c2
  namespace: default
data:
  foo:bar
  bar: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-container
    image: reg.westos.org/k8s/nginx
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: test-volume
  volumes:
  - name: test-volume
    nfs:
      server: 172.25.254.4
      path: /nfsdata

持久卷的痛点
虽然通过使用持久卷,可以解决临时卷数据易丢失的问题。但目前持久卷的使用方式还存在以下痛点:


Pod 开发人员可能对存储不够了解,却要对接多种存储


安全问题,有些存储可能需要账号密码,这些信息不应该暴露给 Pod


因此为了解决这些不足,K8s 又针对持久化存储抽象出了三种资源 PV、PVC、StorageClass。三种资源定义如下:


PV 描述的是持久化存储数据卷


PVC 描述的是 Pod 想要使用的持久化存储属性,既存储卷申明


StorageClass 作用是根据 PVC 的描述,申请创建对应的 PV


PV 和 PVC 的概念可以对应编程语言中的面向对象思想,PVC 是接口,PV 是具体实现。
有了这三种资源类型后,Pod 就可以通过静态供应和动态供应这两种方式来使用持久卷。
 

参考文档:
作者:又拍云
链接:https://juejin.cn/post/7186925237592653884
来源:稀土掘金文章来源地址https://www.toymoban.com/news/detail-802751.html

到了这里,关于飞天使-k8s知识点12-kubernetes资源对象5-Volume与ConfigMap等的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 飞天使-k8s知识点18-kubernetes实操3-pod的生命周期

    探针的生命周期 docker 创建:在创建阶段,你需要选择一个镜像来运行你的应用。这个镜像可以是公开的,如 Docker Hub 上的镜像,也可以是你自己创建的自定义镜像。创建自己的镜像通常需要编写一个 Dockerfile,这个文件定义了创建镜像所需的所有步骤,包括基础镜像、需要安

    2024年02月20日
    浏览(58)
  • 飞天使-k8s知识点20-kubernetes实操5-pod更新与暂停-statefulset

    资源调度 Deployment:扩缩容 资源调度 Deployment:更新的暂停与恢复 资源调度 StatefulSet:定义一个有状态服务 headless service 金丝雀发布 参考文档:https://support.huaweicloud.com/basics-cce/kubernetes_0015.html

    2024年02月20日
    浏览(48)
  • K8S知识点(二)

    K8S是通过控制pod来控制容器进而控制程序的  service是沟通Pod和外键的桥梁,可以实现负载均衡的效果,加权负载的效果 使用虚拟机,来虚拟三台服务器    点击创建新的虚拟机:自定义,下一步 下一步  下一步: 稍后安装操作系统,下一步 修改名称:存储地址 cpu选择2:

    2024年02月05日
    浏览(35)
  • K8S知识点(三)

    Centos的版本是有要求的必须是7.5或以上,否则安装出来的集群是有问题的Node节点可能加入不到集群中来        详细步骤  1.同时连接三台服务器:查看一下版本 是否正确 2.主机名解析,方便节点之间的调用,这里是测试环境中的用法,在企业中真实环境推荐使用内部DNS服务

    2024年02月05日
    浏览(42)
  • K8S知识点(四)

      查看所需镜像  定义下载镜像  循环下载镜像:  下载完成之后:查看一下镜像,名字也已经改成了k8s的名字     集群初始化只在master节点上运行, 出现sucessfully表示成功,提示要运行几条命令: 在集群中加入一些工作节点,可以查看一下现在有哪些节点: 在node节点上执

    2024年02月05日
    浏览(48)
  • 轻松掌握k8s(使用docker)安装知识点

    kubernetes具有以下特性: 服务发现和负载均衡 Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果进入容器的流量很大, Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。 存储编排 Kubernetes 允许你自动挂载你选择的存储系统,例如本地存储、公共云提供商等。

    2023年04月22日
    浏览(44)
  • 轻松掌握K8S目录持久卷PV/PVC的kubectl操作知识点04

    1、介绍 在docker中可以将容器中的目录挂载出来,在k8s中pod可以部署在不同节点,假如该节点的机器宕机了,k8s可能就会将此Pod转移到其他机器,就不是原先的机器了。k8s有自己的一套挂载方案,如下图所示, 原理为将所有节点的挂载的目录统一抽象管理为叫做 存储层的概念

    2024年02月12日
    浏览(44)
  • 轻松掌握K8S使用kubectl操作配置文件挂载ConfigMap和密钥Secret知识点05

    1、挂载应用配置文件配置集ConfigMap 当有许多应用如redis、mysql,希望将它的配置文件挂载出去,以便随时修改,可以用ConfigMap配置集 具体用法查看使用命令行操作里的 3、ConfigMap配置集实战 2、挂载应用配置文件的敏感信息Secret Secret 对象类型用来保存敏感信息,例如使用ya

    2024年02月16日
    浏览(90)
  • 飞天使-docker知识点4-harbor

    Harbor 安装完成harbor 官方建议方式之后查看 images 配置docker 使用harbor 仓库上传下载镜像 docker 镜像结合harbor 运行 参考文档: https://www.cnblogs.com/quqibinggan/p/16880549.html 马哥

    2024年02月04日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包