POD如何使用节点磁盘
K8S中,容器container在运行过程中,会产生一些日志,临时文件,如果没有任何限制的话,会写满POD所在节点磁盘空间,从而会影响对应节点 已经节点上其他POD应用,
容器的临时存储,例如 emptyDir,位于目录/var/lib/kubelet/pods 下
通过如下命令可以查询到集群POD所对应的POD_ID
kubectl get pods -o custom-columns=podName:.metadata.name,podIP:.status.podIP,podStatus:.status.phase,nodeIP:.status.hostIP,Pod_ID:.metadata.uid
[root@VM-249-47-tlinux /var/lib/kubelet/pods]# kubectl get pods -o custom-columns=podName:.metadata.name,podIP:.status.podIP,podStatus:.status.phase,nodeIP:.status.hostIP,Pod_ID:.metadata.uid
podName podIP podStatus nodeIP Pod_ID
centos-74cd685986-rcfqk 10.200.0.5 Running 172.30.249.47 9ad30306-f6cd-49eb-a279-cd58201be8c3
[root@VM-249-47-tlinux /var/lib/kubelet/pods]#
[root@VM-249-47-tlinux /var/lib/kubelet/pods]# tree 9ad30306-f6cd-49eb-a279-cd58201be8c3
9ad30306-f6cd-49eb-a279-cd58201be8c3 #pod的 uid
├── containers # pod 里面的container 容器
│ ├── busybox #容器1
│ │ └── 21efdec2
│ └── centos #容器2
│ └── 64bbf490
├── etc-hosts # 命名空间的Host文件
├── plugins
│ └── kubernetes.io~empty-dir
│ ├── wrapped_cm
│ │ └── ready
│ ├── wrapped_default-token-7llnd
│ │ └── ready
│ └── wrapped_secret
│ └── ready
└── volumes # Pod的卷
├── kubernetes.io~configmap # ConfigMap类型的卷
│ └── cm
│ └── app -> ..data/app
├── kubernetes.io~qcloud-cbs #CBS类型的数据卷
│ └── pvc-137607ae-974d-4c25-90dc-efc3c2a6c5a8 #PV名称,对应POD里面挂载点
│ └── lost+found
└── kubernetes.io~secret #Secret类型的卷
├── default-token-7llnd
│ ├── ca.crt -> ..data/ca.crt
│ ├── namespace -> ..data/namespace
│ └── token -> ..data/token
└── secret
└── password -> ..data/password
17 directories, 11 files
持久卷的挂载点也位于/var/lib/kubelet/pods 下,但是不会导致存储空间的消耗。
容器的日志,存放在/var/log/pods 目录下
[root@VM-249-47-tlinux /var/log/pods]# ls -lrt | grep centos
drwxr-xr-x 4 root root 4096 Aug 7 18:23 default_centos-74cd685986-rcfqk_9ad30306-f6cd-49eb-a279-cd58201be8c3

目录命名方式是:命名空间_POD名称_POD-UID
9ad30306-f6cd-49eb-a279-cd58201be8c3 这个指的就是POD的uid
日志是软链接到/var/lib/docker/containers/容器ID/容器ID-json.log

使用 Docker 时,容器的 rootfs位于/var/lib/docker 下,具体位置取决于存储驱动。