该节点的条件:[DiskPressure]导致azure/aks中k8s中的pod逐出
我正在azure中运行K8S1.14 我在集群中的一些豆荚上不断收到豆荚驱逐 例如:该节点的条件:[DiskPressure]导致azure/aks中k8s中的pod逐出,azure,kubernetes,Azure,Kubernetes,我正在azure中运行K8S1.14 我在集群中的一些豆荚上不断收到豆荚驱逐 例如: $ kubectl describe pod kube-prometheus-stack-prometheus-node-exporter-j8nkd ... Events: Type Reason Age From Message ---- ------ ---- ----
$ kubectl describe pod kube-prometheus-stack-prometheus-node-exporter-j8nkd
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 3m22s default-scheduler Successfully assigned monitoring/kube-prometheus-stack-prometheus-node-exporter-j8nkd to aks-default-2678****
Warning Evicted 3m22s kubelet, aks-default-2678**** The node had condition: [DiskPressure].
我也可以通过以下方式确认:
$ kubectl describe node aks-default-2678****
...
Unschedulable: false
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
NetworkUnavailable False Wed, 27 Nov 2019 22:06:08 +0100 Wed, 27 Nov 2019 22:06:08 +0100 RouteCreated RouteController created a route
MemoryPressure False Fri, 23 Oct 2020 15:35:52 +0200 Mon, 25 May 2020 18:51:40 +0200 KubeletHasSufficientMemory kubelet has sufficient memory available
DiskPressure True Fri, 23 Oct 2020 15:35:52 +0200 Sat, 05 Sep 2020 14:36:59 +0200 KubeletHasDiskPressure kubelet has disk pressure
由于这是一个受管理的azure k8s群集,我无法访问节点或主节点上的kubelet。在没有SSH访问节点的情况下,我能做些什么来调查/调试这个问题吗
我还假设这来自节点上的存储,而不是安装在POD中的PV/PVC。那么,在没有SSH访问的情况下,如何获得工作节点上存储消耗的概览呢
那么,在没有SSH访问的情况下,如何获得工作节点上存储消耗的概览呢
您可以创建如下特权pod:
apiVersion: v1
kind: Pod
metadata:
labels:
run: privileged-pod
name: privileged-pod
spec:
hostIPC: true
hostNetwork: true
hostPID: true
containers:
- args:
- sleep
- "9999"
image: centos:7
name: privileged-pod
volumeMounts:
- name: host-root-volume
mountPath: /host
readOnly: true
volumes:
- name: host-root-volume
hostPath:
path: /
然后执行它:
kubectl exec -it privileged-pod -- chroot /host
然后就可以访问整个节点,就像使用ssh一样
注意:如果您的k8s用户已连接,您可能无法执行此操作,如果更改hostIPC
,hostNetwork
和hostPID
,则不允许执行此操作
您还需要确保pod被安排在您想要访问的特定节点上。使用
.spec.nodeName:
来实现它。创建集群时,为每个节点添加了多少容量?您是否有使用过多磁盘的播客?一种方法是将持久卷与使用过多磁盘的pod一起使用,这些pod不会从节点获取磁盘,而是创建一个安装在该pod中的磁盘。是的,所有pod都使用PVC,因此节点本身没有实际使用的磁盘空间。但更重要的是,如何识别节点上占用磁盘的内容,以及在必要时如何清理或扩展?