Java OpenResty Spring Spring Boot MySQL Redis MongoDB PostgreSQL Linux Android Nginx 面试 算法 小程序 Arthas JVM juc AQS Docker DevOps


Kubernetes 数据存储 EmptyDir

Kubernetes 大约 1479 字

概念

EmptyDir是最基础的Volume类型,一个EmptyDir就是宿主机上的一个空目录。

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

特点

  • 临时空间,例如用于某些应用程序运行时所需的临时目录,且无须永久保留。
  • 一个容器需要从另一个容器中获取数据的目录(多容器共享目录)。

示例 yml

volume-emptydir.yml

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: {} # 必须加 {}

查看 Pod

kubectl get pods -n dev -o wide

输出:

[root@localhost ~]# kubectl get pods -n dev -o wide
NAME              READY   STATUS    RESTARTS   AGE   IP           NODE                    NOMINATED NODE   READINESS GATES
volume-emptydir   2/2     Running   0          15s   10.42.0.44   localhost.localdomain   <none>           <none>

查看日志

另一个终端中访问Nginx

curl 10.42.0.44

查看日志:

kubectl logs -f volume-emptydir -c busybox -n dev 

输出:

[root@localhost ~]# kubectl logs -f volume-emptydir -n dev -c busybox
10.42.0.1 - - [04/Feb/2022:01:20:13 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"
阅读 94 · 发布于 2022-03-18

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb

扫描下方二维码关注公众号和小程序↓↓↓

扫描二维码关注我
昵称:
随便看看 换一批