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


Kubernetes 数据存储 HostPath

Kubernetes 大约 1388 字

概念

HostPath就是将Node主机中一个实际目录挂载到Pod中,以供容器使用。

特点

Pod销毁,但是数据依然可以存在于Node主机上。

示例 yml

volume-hostpath.yml

apiVersion: v1
kind: Pod
metadata:
  name: volume-hostpath
  namespace: dev
spec:
  containers:
  - name: nginx
    image: nginx:1.17.1
    ports:
    - containerPort: 80
    volumeMounts:
    - name: logs-volume
      mountPath: /var/log/nginx
  - name: busybox
    image: busybox:1.30
    command: ["/bin/sh","-c","tail -f /logs/access.log"]
    volumeMounts:
    - name: logs-volume
      mountPath: /logs
  volumes:
  - name: logs-volume
    hostPath: 
      path: /root/logs
      type: DirectoryOrCreate  # 目录存在就使用,不存在就先创建后使用

hostPathtype说明:

  • DirectoryOrCreate:目录存在就使用,不存在就先创建后使用
  • Directory:目录必须存在
  • FileOrCreate:文件存在就使用,不存在就先创建后使用
  • File:文件必须存在
  • SocketUnix套接字必须存在
  • CharDevice:字符设备必须存在
  • BlockDevice:块设备必须存在

查看 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-hostpath   2/2     Running   0          14s   10.42.0.45   localhost.localdomain   <none>           <none>

查看日志

另一个终端中访问Nginx

curl 10.42.0.45

查看日志:(宿主机/root/logs目录)

tail -f /root/logs/access.log

输出:

[root@localhost ~]# tail -f /root/logs/access.log 
10.42.0.1 - - [04/Feb/2022:01:30:28 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"
阅读 436 · 发布于 2022-03-19

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb

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

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