原理:
    image.png

    一个emptyDir 第一次创建是在一个pod被指定到具体node的时候,并且会一直存在在pod的生命周期当中,正如它的名字一样,它初始化是一个空的目录,pod中的容器都可以读写这个目录,这个目录可以被挂在到各个容器相同或者不相同的的路径下,当一个pod因为任何原因被移除的时候,这些数据会被永久删除

    EmptyDir是最基础的Volume类型,一个EmptyDir就是Host上的一个空目录

    EmptyDir是在Pod被分配到Node时创建的,它的初始内容为空,并且无须指定宿主机上对应的目录文件,因为kubernetes会自动分配一个目录,当Pod销毁时, EmptyDir中的数据也会被永久删除

    注意:一个容器崩溃了不会导致数据的丢失,因为容器的崩溃并不移除pod

    作用:
    image.png

    1. 普通空间,基于磁盘的数据存储

    2. 作为从崩溃中恢复的备份点

    3. 存储那些那些需要长久保存的数据,例web服务中的数据

    4. 默认的emptyDir 磁盘会存储在主机所使用的媒介上,可能是SSD,或者网络硬盘,这主要取决于你的环境,当然,我们也可以将emptyDir.medium的值设置为Memory来告诉Kubernetes 来挂在一个基于内存的目录tmpfs,因为tmpfs速度会比硬盘块度了,但是,当主机重启的时候所有的数据都会丢失

    配置清单:
    image.png

    内容如下:

    apiVersion: v1
    kind: Pod
    metadata:
    name: volume-emptydir
    namespace: dev
    spec:
    containers:
    - name: nginx
    image: nginx:1.17.1
    ports:
    - containerPort: 80
    volumeMounts: # 将logs-volume挂在到nginx容器中,对应的目录为 /var/log/nginx
    - name: logs-volume
    mountPath: /var/log/nginx
    - name: busybox
    image: busybox:1.30
    command: [“/bin/sh”,”-c”,”tail -f /logs/access.log”] # 初始命令,动态读取指定文件中内容
    volumeMounts: # 将logs-volume 挂在到busybox容器中,对应的目录为 /logs
    - name: logs-volume
    mountPath: /logs
    volumes: # 声明volume, name为logs-volume,类型为emptyDir
    - name: logs-volume
    emptyDir: {}

    效果验证:
    image.png

    # 创建Pod
    [root@k8s-master01 ~]# kubectl create -f volume-emptydir.yaml
    pod/volume-emptydir created

    # 查看pod
    [root@k8s-master01 ~]# kubectl get pods volume-emptydir -n dev -o wide
    NAME READY STATUS RESTARTS AGE IP NODE ……
    volume-emptydir 2/2 Running 0 97s 10.42.2.9 node1 ……

    # 通过podIp访问nginx
    [root@k8s-master01 ~]# curl 10.42.2.9
    ……

    # 通过kubectl logs命令查看指定容器的标准输出
    [root@k8s-master01 ~]# kubectl logs -f volume-emptydir -n dev -c busybox
    10.42.1.0 - - [27/Jun/2021:15:08:54 +0000] “GET / HTTP/1.1” 200 612 “-“ “curl/7.29.0” “-“

    效果原理:因为共享了目录,所以作为busybox,同样也产生了nginx的访问日志,如果不共享,不会出现这种现象

    相关文档:https://blog.csdn.net/qq_27184497/article/details/121764723