kubernetes学习 数据管理 Volume (一)

一、Volume

为了持久化保存容器的数据,可以使用 Kubernetes Volume。

      Volume的生命周期独立于容器,Pod中的容器可能被销毁和重建,但Volume会被保存。

  本质上,Kubernetes Volume 是一个目录,这一点与 Docker Volume 类似。当 Volume mount Pod,Pod 中的所有容器都可以访问这个 Volume。

      Kubernetes 也支持多种 backend 类型, 包括 emptyDir、hostPath、GCEPersistent Disk、AWS Elastic Block Store、NFS、Ceph等。Volume提供了对各种 backend 的抽象,容器在使用 Volume 读写数据的时候不需要关心数据到底是存放在本地节点的文件系统中还是云硬盘中。对它来说,所有类型的 Volume 都只是一个目录。

二、emptyDir

  emptyDIr 是最基础的 Volume 类型。正如其名字所示,一个 emptyDir Volume 是 Host 上的一个空目录。

  empty Volume 对于容器来说是持久的,对于 Pod 则不是。当 Pod 从节点删除时,Volume 的内容也会被删除。但如果只是容器被销毁而 Pod 还在,则 Volume 不受影响。

  也就是说: emptyDir Volume 的生命周期与 Pod 一致。

  Pod 中所有的容器可以共享 Volume,他们可以制定各自的 mount 路径。

apiVersion: v1
kind: Pod
metadata:
  name: producer-consumer
spec:
  containers:
  - image: busybox
    name: producer-consumer
spec:
  containers:
  - image: busybox
    name: producer
    volumeMounts:
    - mountPath: /producer_dir
      name: shared-volume
    args:
    - /bin/sh
    - -c
    - echo "hello world" > /producer_dir/hello ; sleep 30000

  - image: busybox
    name: consumer
    volumeMounts:
    - mountPath: /consumer_dir
      name: shared-volume
    args:
    - /bin/sh
    - -c
    - cat /consumer_dir/hello ; sleep 30000

  volumes:
  - name: shared-volume
    emptyDir: {}

  模拟一个producer-consumer场景。Pod 有两个容器 producer 和 consumer,他们共享一个 Volume。producer 负责往 Volume中写数据, consumer 负责从 Volume 中读取数据。

    1) 文件最底部 volumes 定义一个 emptyDir 类型的 Volume shared-volume 

    2) producer 容器将 shared-volume mount /producer_dir 目录

    3) producer 通过 echo 将数据写到文件 hello

    4) consumer 容器将 shared-volume mount/consumer_dir 目录

    5) consumer 通过 cat 从文件 hello 读取数据

  执行创建 Pod:    

  

原文地址:https://www.cnblogs.com/Lyh1997/p/10290145.html

时间: 2024-08-30 14:01:44

kubernetes学习 数据管理 Volume (一)的相关文章

kubernetes学习14—Dashboard搭建和认证

原文:kubernetes学习14-Dashboard搭建和认证 本文收录在容器技术学习系列文章总目录 一.介绍 Kubernetes Dashboard是Kubernetes集群的基于Web的通用UI.它允许用户管理在群集中运行的应用程序并对其进行故障排除,以及管理群集本身. 二.搭建dashboard 1.编写yaml文件 借鉴GitHub,修改了image的下载地址和pod的一些配置 [root@master ~]# vim dashboard.yaml # Filename: dashb

kubernetes学习资源

参考文章: 1.kubernetes学习资源 1. <Kubernetes与云原生应用>系列之Kubernetes的系统架构与设计理念 2.[docker专业介绍的网站dockerinfo](DockerInfo-Docker容器技术教程,Docker信息传播和服务平台) 3.[docker专业介绍的网站dockone](DockOne.io) 4.[Stuq课程-从理论到生产环境实战:掌握Docker大规模部署和管理](从理论到生产环境实战:掌握Docker大规模部署和管理) 5.[kube

kubernetes 学习笔记4

kubernetes 存储问题 Pv:是集群中的某个网络存储中对应的一块存储,它是一种独立于计算资源而存在的一种实体资源,通常我们定义一个网络存储,然后从中划出一个网盘并挂载在虚拟机上 pv属于网络存储,不属于任何node,但可以在每个node上访问 Pv不是定义在pod上,而是独立于pod之外的 pvc:某个pod想申请某种条件的pv,需要定义它 volume和claim的生命周期 可以提供的 1.静态的 一个集群的管理者会生成很多pv,他们掌控一些存储的细节并将这些存储给集群用户用,这些pv

Kubernetes学习之路(十一)之资源清单定义

一.Kubernetes常用资源 以下列举的内容都是 kubernetes 中的 Object,这些对象都可以在 yaml 文件中作为一种 API 类型来配置. 类别 名称 工作负载型资源对象 Pod  Replicaset  ReplicationController  Deployments StatefulSets Daemonset Job CronJob 服务发现及负载均衡  Service  Ingress 配置与存储 Volume.Persistent Volume.CSl . c

Kubernetes 学习总结(3) Manifests

APIserver符合RESTful风格,支持GET/PUT/DELETE/POST等各种操作.所以也支持kubectl通过一系列命令对各处资源进行管理控制.常用的资源1).workLoad(工作负载型资源,运行APP,对外提供服务): Pod/ReplicaSet/Deployment/ StatefulSet/ DaemonSet/ Job/ Cronjob /2).service discovery and Load Balance(服务发现及均衡型资源):Service/ Ingress

Kubernetes学习之路(一)之Kubeadm部署K8S集群

一个星期会超过多少阅读量呢??发布一篇,看看是否重新在51上写学习博文,有老铁支持嘛?? 使用kubeadm部署集群 节点名称 ip地址 部署说明 Pod 网段 Service网段 系统说明 k8s-master 192.168.56.11 docker.kubeadm.kubectl.kubelet 10.244.0.0/16 10.96.0.0/12 Centos 7.4 k8s-node01 192.168.56.12 docker.kubeadm.kubelet 10.244.0.0/1

Kubernetes学习总结-基本概念

1. Master节点: Master作为集群控制节点,所有的控制命令都是发给他 -  提供了Http Rest接口,所有的资源操作入口,集群控制入口 - “大总管”:所有资源自动化控制中心-Controller Manager - “调度室”:负责资源调度-Scheduler 2. Node节点: 除了Master之外的其他节点(物理机/虚拟机) - Kublet:负责pod的创建和启停等任务 - kuber-proxy:负载均衡机制组件 - doctor:负责本机的容器创建和管理工作 3.P

Kubernetes 学习21 kubernetes高级调度方式

一.概述 1.上集讲了Scheduler在实现调度时分三步实现调度过程.首先是预选,即从所有节点中选择基本符合选择条件的节点.而后在基本符合条件的节点中使用优选函数计算他们各自的得分并加以比较.并从最高得分的节点中随机选择出一个运行pod的节点,这就是我们的控制平面中scheduler所实现负责的主要功用.同时如果在某些调度场景中我们期望能够通过自己的预设去影响他的一些调度方式,比如就是把我们的pod运行在某些特定的节点之上的时候可以通过自己的预设操作去影响他的预选和优选过程从而使得调度操作能符

谷歌生产级别开源容器调度和管理工具Kubernetes学习二

Batch Jobs Jobs 一个job创建一个或者更多的pods并确保指定数量的pods成功终止.当所有的pods成功结束,job会追踪这个过程.当成功结束数量达到指定数量,job本身结束. 参考文档: https://kubernetes.io/docs/user-guide/jobs/