IT袋

当前位置:主页 > 经验教程 > 建站编程 >

Kubernetes

Kubernetes Pod被驱逐故障排除过程

时间:2023-11-03 09:11:21 来源:IT袋 作者:马勇
导读:Kubernetes,全面的为您讲解Kubernetes的教程内容,请看下面详细的介绍。 设想一个场景:有三个工作节点的Kubernetes 集群,版本为 v1.19.0。发现在 worker 1 上运行的一些 pod 被驱逐了 P

Kubernetes

全面的为您讲解Kubernetes的教程内容,请看下面详细的介绍。

设想一个场景:有三个工作节点的Kubernetes 集群,版本为 v1.19.0。发现在 worker 1 上运行的一些 pod 被驱逐了

Kubernetes

Pod被驱逐的日志

从上图可以看出有很多pod被驱逐了,报错信息也很清楚。由于节点上存储资源不足,导致kubelet触发驱逐过程。

方法1:启用auto-scaler

  • 向集群添加工作节点,要么部署cluster-autoscaler以根据配置的条件自动扩缩容。
  • 只增加worker的本地存储空间,这涉及到虚拟机的扩容,会导致worker节点暂时不可用。

方法2:保护关键Pod

在资源清单中指定资源请求和限制,配置QoS (Quality of Service)。当kubelet触发驱逐时,将至少保证这些 pod 不受影响。

这种施在一定程度上保证了一些关键Pod的可用性。如果节点出现问题时 Pod 没有被驱逐,这将需要执行更多步骤来查找故障。

运行命令 kubectl get pods 结果显示很多 pod 处于 evicted 状态。检查结果将保存在节点的kubelet日志中。查找对应日志使用 cat /var/paas/sys/log/kubernetes/kubelet.log | grep -i Evicted -C3。

检查思路

查看Pod容忍度

当Pod故障无法连接或节点无法响应时,可以使用 tolerationSeconds 配置对应时长长短

tolerations:
  - key: "node.kubernetes.io/unreachable"
    operator: "Exists"
    effect: "NoExecute"
    tolerationSeconds: 6000

如果集群中的节点数小于50,并且故障节点数超过总节点数的55%,则暂停 Pod 驱逐。在这种情况下,Kubernetes 将尝试驱逐故障节点的工作负载(运行在kubernetes中的APP)。

下属json描述了一个健康的节点

"conditions": [
    {
        "type": "Ready",
        "status": "True",
        "reason": "KubeletReady",
        "message": "kubelet is posting ready status",
        "lastHearbeatTime": "2023-10-23T18:38:35Z",
        "lastTransitionTime": "2023-10-23T11:41:27Z"
    }
]

如果就绪条件为 Unknown 或 False 的时间超过了 pod-eviction-timeout,node controller 将对分配给该节点上的所有 Pod 执行 API-initiated 类型驱逐。

检查Pod的已分配资源

Pod会根据节点的资源使用情况被逐出。被逐出的Pod将会根据分配给Pod的节点资源进行调度。

管理驱逐”和“调度”的条件由不同的规则组成。这种结果会导致,被逐出的容器可能会被重新安排到原始节点。

因此,要合理分配资源给每个容器。

检查Pod 是否定期失败

Pod 可以被驱逐多次。即如果在 Pod 被驱逐并调度到新节点后该节点中的 Pod 也被驱逐,则该 Pod 将再次被驱逐。

相关阅读

  • 免费歌曲网站推荐大全 背景音乐素材网站推荐

    免费歌曲网站推荐大全 背景音乐素材网站推荐

    为网友们解答免费歌曲网站推荐大全和背景音乐素材网站推荐的IT小经验,请看下面详细的介绍。 Jamendo 网站音乐由各个独立音乐人创作上传,需要注册登录下载。网站内音乐可免费用于个人使

  • 网络管理知识:DHCP释放地址命令详解

    网络管理知识:DHCP释放地址命令详解

    一篇方法教程,与您分享网络管理知识方面的讲解,一起来了解了解吧。 DHCP(动态主机配置协议)在网络管理中起着重要的作用,主要用于动态分配IP地址。 当你的设备不再需要DHCP服务提供

  • ping是哪个端口号 Ping命令用的是ICMP协议不是端口号

    ping是哪个端口号 Ping命令用的是ICMP协议不是端口号

    有很多网友在问: ping是哪个端口号?ping命令用的是什么端口? 下面IT袋小编就给大家解答下这个问题,帮助大家解疑! 疑问解答: Ping命令使用的是ICMP协议,不是端口号。 ICMP不像http、htt

  • web服务器怎么配置 免费个人web服务器推荐

    web服务器怎么配置 免费个人web服务器推荐

    对于许多网友来说web服务器怎么配置和免费个人web服务器推荐方面的内容,具体详情如下: 回想一下一个http请求的过程,你在浏览器输入xxx.com,经过域名解析 发起tcp的3次握手 建立tcp连接后