第九章 数据管理

9.1 Volume

  Pod是短暂的,Pod在销毁时,保存在容器内部的文件系统各种的数据会被清除。

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

  9.1.1 emptyDir

  emptyDir: 最基础的Volumne类型,是Host上的一个目录。

  emptyDIr Volume: 对于容器来说是持久的,对于Pod不是。当Pod从节点删除时,Volume的内容也会被删除。但是如果只是容器被销毁而Pod存在,则volume不受影响。也就是说:emptyDir Volume的生命周期与Pod一致。

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

  如下Pod有两个容器: producer 和 consumer,它们共享一个Volume. Producer 写, consumer 读。

apiVersion: v1
kind: Pod
metadata:
  name: producer-consumer
spec:
  containers:
  - image: busybox
    name: producer
    volumeMounts:                                    # 将shared-volume mount 到 producer_dir目录
    - mountPath: /producer_dir
      name: shared-volume
    args:                                            # 将数据写入到文件hello中
    - /bin/sh
    - -c
    - echo "hello world" > /producer_dir/hello ; sleep 30000
    
  - image: busybox
    name: consumer
    volumeMounts:                                    # 将shared-volume mount 到 /consumer_dir
    - mountPath: /consumer_dir
      name: shared-volume
    args:
    - /bin/sh
    - -c
    - cat /consumer_dir/hello ; sleep 30000           # 通过cat从文件hello读数据
    
  volumes:                                            # 定义了一个emptyDir类型的Volume,名字是shared-volume.
  - name: shared-volume
    emptyDir: {}   

 如下命令: consumer 容器成功的读到了hello world.

kubeusr@GalaxyKubernetesMaster:~$ kubectl logs producer-consumer consumer      # 指定Pod 和 容器   
hello world

  emptyDir是host上创建的临时目录,其优点是能够方便地为Pod中的容器提供共享存储,不需要额外的配置。它不具备持久性,如果Pod没有了,emptyDir也就没有了。所以emptyDir的使用场景是: 适合Pod中的容器需要临时共享存储空间的场景。

  

  

  

猜你喜欢

转载自www.cnblogs.com/liufei1983/p/10204850.html