Kubernetes 节点磁盘故障排查
通过本文,您将了解有关Kubernetes节点遇到磁盘压力时的正确处理方式,包括磁盘压力的原因以及故障排除的每一个步骤。
什么是Node Disk Pressure
Node disk pressure
,顾名思义,就是连接到节点的磁盘处于压力之下。您不太可能遇到Node disk pressure
,因为 Kubernetes 内置了一些措施来避免它,但它确实会不时发生。虽然有多种因素会导致Node disk pressure
,但您可能会遇到两个主要原因。Node disk pressure
的第一个原因是 Kubernetes 没有及时清理未使用的镜像。默认情况下,这不应该发生,因为 Kubernetes 会定期检查是否有未使用的镜像,然后进行删除。这不太可能是节点磁盘压力的来源;但是,应该牢记这一点。节点磁盘压力故障排除
部署和理解 DaemonSet
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: disk-checker
labels:
app: disk-checker
spec:
selector:
matchLabels:
app: disk-checker
template:
metadata:
labels:
app: disk-checker
spec:
hostPID: true
hostIPC: true
hostNetwork: true
containers:
- resources:
requests:
cpu: 0.15
securityContext:
privileged: true
image: busybox
imagePullPolicy: IfNotPresent
name: disk-checked
command: ["/bin/sh"]
args: ["-c", "du -a /host | sort -n -r | head -n 20"]
volumeMounts:
- name: host
mountPath: "/host"
volumes:
- name: host
hostPath:
path: "/"
$ kubectl apply -f https://gist.githubusercontent.com/omerlh/cc5724ffeea17917eb06843dbff987b7/raw/1e58c8850aeeb6d22d8061338f09e5e1534ab638/daemonset.yaml
使用 DaemonSet
kubectl get pods -l app=disk-checker
来完成。这应该产生和输出如下:$ kubectl get pods -l app=disk-checker
NAME READY STATUS RESTARTS AGE
disk-checker-bwkbj 1/1 Running 0 2s
kubectl logs -l app=disk-checker
开始查看正在运行的 pod 的日志。这可能需要一些时间,但最后您应该会看到一个文件列表及其大小,这将使您更深入地了解哪些内容占用了节点上的空间。您接下来要做什么取决于占用空间的文件——您需要查看 DaemonSet 的输出并了解正在发生的事情,以及它是否是日志文件、应用程序文件或其他正在使用您的磁盘空间的文件。可能的解决方案
最后
点👇分享
戳👇在看
微信扫码关注该文公众号作者
戳这里提交新闻线索和高质量文章给我们。
来源: qq
点击查看作者最近其他文章