k8s存储卷与数据持久化(5)
时间:2020-09-23 15:52 来源:未知 作者:liangzh 点击:次
4、节点存储卷 hostPath
hostPath 类型的存储卷是指将工作节点上某文件系统的目录或文件挂载于 Pod 中的一种
存储卷,它可独立于 Pod 资源的生命周期,因而具有持久性 但它是 作节点本地的存储
间,仅适用于特定情况下的存储卷使用需求 ,例如,将工作节点上的文件系统关联为 Pod
的存储卷,从而使得容器访问节点文件系统上的数据 这一点在运行有管理任务的系统级
Pod 资源需要访问节点上的文件时尤为有用。
配置 hostPath 存储卷的嵌套宇段共有两个:一个是用于指定工作节点上的目录路径的
必选字段 path ;另一个是指定存储卷类型的 type ,它支持使用的卷类型包含如下几种
DirectoryOrCreate :指定的路径不存时自动将其创建为权限是 0755 的空目录,属主
属组均为 kubelet
Directory :必须存在的目录路径
FileOrCreate :指定的路径不存时自动将其创建为权限是 0644 文件,属主和属组
同是 kubelet
File :必须存在的文件路径
Socket :必须存在的 Socket 件路径
CharDevice :必须存在的字符设备文件路径
BlockDevice :必须存在的块设备文件路径
下面是定义在 vol-hos ath yaml 置文件中的 Pod 源,它运行着日志收集代理应用
filebeat ,负责收集工作节点及容器相关的日志信息发往 Redis 务器,它使用了三个 hostPath
类型的存储卷:
[root@zfb-jyhpt-bgcsjyh1 k8s]# cat vol-hostpath-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: vol-hostpath-pod
spec:
containers:
- name: filebeat
image: ikubernetes/filebeat:5.6.7-alpine
env:
- name: REDIS_HOST
value: redis.ilinux.io:6379
- name: LOG_LEVEL
value: info
volumeMounts:
- name: varlog
mountPath: /var/log
- name: socket
mountPath: /var/run/dockersock
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
terminationGracePeriodSeconds: 30
volumes:
- name: varlog
hostPath:
path: /var/log
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers
- name: socket
hostPath:
path: /var/run/docker.sock
[root@zfb-jyhpt-bgcsjyh1 k8s]# kubectl apply -f vol-hostpath-pod.yaml
[root@zfb-jyhpt-bgcsjyh1 k8s]# kubectl get pod vol-hostpath-pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
vol-hostpath-pod 1/1 Running 0 57s 10.244.4.12 172.19.33.2 <none> <none>
[root@zfb-jyhpt-bgcsjyh1 k8s]# kubectl logs -f vol-hostpath-pod
2020/09/24 14:15:23.716616 tcp.go:26: WARN DNS lookup failure "redis.ilinux.io": lookup redis.ilinux.io on 10.96.0.10:53: no such host
2020/09/24 14:15:23.716639 single.go:140: ERR Connecting error publishing events (retrying): lookup redis.ilinux.io on 10.96.0.10:53: no such host
Pod 资源通常受控于 daemonset 类型的 Pod 控制器,它运行于集群中的每个工作
之上 ,负责收集工作节点上系统 的相关数据,因此使用 hostPath 存储卷也是理所应当
读者在创建上述 Pod 资源时,如果有可用的 Redis 服务器,则可通过环境变量 REDIS
HOST 传递 Pod 资源,待其 Ready 之后即可通过 Redis 务器查看到由其发送的日志信息 (责任编辑:liangzh) |