展开

关键词

Kubelet PLEG源码分析

我们经常能看到PLEG的异常日志。 通过对PLEG的源码分析,希望能让大家了解PLEG是干什么的,以及它是如何工作的、它与什么模块有交互等问题。 A: 同其他Manager类似,PLEG在kubelet调用NewMainKubelet进行初始化时创建的。 的创建,那么合适启动的PLEG呢? A: kubelet Run方法中会启动大量managers,PLEG的启动也在此时。

1.9K80

Kublet PLEG不健康问题排障

现象:某个Node频繁出现“PLEG is not healthy: pleg was last seen active 3m46.752815514s ago; threshold is 3m0s”错误 E0218 01:21:30.654433 10311 generic.go:271] PLEG: pod istio-ingressgateway-6bbdd58f8c-nlgndistio-system

4.1K20
  • 广告
    关闭

    90+款云产品免费体验

    提供包括云服务器,云数据库在内的90+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PLEG is not healthy?幕后黑手居然是它!

    现象:某个Node频繁NotReady,kubectl describe该Node,出现“PLEG is not healthy: pleg was last seen active 3m46.752815514s 我们首先要明白PLEG是什么?PLEG 全称叫 Pod Lifecycle Event Generator,即 Pod 生命周期事件生成器。 整体的工作流程如下图所示,虚线部分是 PLEG 的工作内容。 以默认情况为准,PLEG检查会间隔一秒,换句话说,每一次检查过程执行之后,PLEG会等待一秒钟,然后进行下一次检查;而每一次检查的超时时间是三分钟,如果一次PLEG检查操作不能在三分钟内完成,那么这个状况 而这里的 PLEG,指的是 pod lifecycle event generator。PLEG 是 kubelet 用来检查 runtime 的健康检查机制。

    28930

    Kubelet 中的 “PLEG is not healthy” 到底是个什么鬼?

    01 PLEG 是个啥?PLEG 全称叫 Pod Lifecycle Event Generator,即 Pod 生命周期事件生成器。 先来聊聊 PLEG 的出现背景。在 Kubernetes 中,每个节点上都运行着一个守护进程 Kubelet 来管理节点上的容器,调整容器的实际状态以匹配 spec 中定义的状态。 整体的工作流程如下图所示,虚线部分是 PLEG 的工作内容。?02 PLEG is not healthy 是如何发生的? Healthy() 函数会检查 relist 进程(PLEG 的关键任务)是否在 3 分钟内完成。 如果 relist 进程的完成时间超过了 3 分钟,就会报告 PLEG is not healthy。?

    4.9K30

    从源码看kubernetes与CNI Plugin的集成

    RuntimeConf) (types.Result, error) DelNetwork(net *NetworkConfig, rt *RuntimeConf) error}CNI Plugin在kubelet管理的PLEG events from 4. houseKeepingCh: a channel to read housekeeping events from 5. plegCh: a channel to read PLEG

    65170

    Kubernetes之Kubelet组件解析

    核心功能模块 PLEG ? PLEG全称为PodLifecycleEvent,PLEG会一直调用container runtime获取本节点的pods,之后比较本模块中之前缓存的pods信息,比较最新的pods中的容器的状态是否发生改变

    1.1K40

    Kubelet源码走读(一)—— Pod如何被创建

    这其实是kubelet中PLEG这个组件去干的事。image.png我们再看一下这张图,pleg watch到数据传入了syncLoopIteration。 pleg是用来在pod生命周期中生成事件的,它周期性地去监听容器状态。 If an error occurs during the inspection, we want PLEG to retry again in the next relist. = nil { glog.Errorf(PLEG: Ignoring events for pod %s%s: %v, pod.Name, pod.Namespace, err) make sure 这下就明白了:syncLoopIteration中回去watch pleg的eventchannel,而pleg周期性地发现pod(或container)的变化,生成事件,写入eventchannel中

    1.8K01

    k8s|一次故障排查

    什么是PLEG这个报错很清楚的告诉我们,容器runtime是不工作的,且PLEG是不健康的。这里容器runtime指的就是docker daemon。 而这里的PLEG,指的是pod lifecycle event generator。PLEG是kubelet用来检查容器runtime的健康检查机制。 但是polling有其成本上的缺陷,所以PLEG应用而生。PLEG尝试以一种“中断”的形式,来实现对容器runtime的健康检查,虽然实际上,它同时用了polling和”中断”两种机制。? 在这个问题中,既然PLEG认为容器运行是出了问题,我们需要先从docker daemon进程看起。

    1.6K30

    kubernetes 从懵圈到熟练:读懂此文,集群节点不下线!

    什么是PLEG?这个报错清楚地告诉我们,容器 runtime 是不工作的,且 PLEG 是不健康的。这里容器 runtime 指的就是 docker daemon 。 而这里的 PLEG,指的是 pod lifecycle event generator。PLEG 是 kubelet 用来检查 runtime 的健康检查机制。 但是 polling 有其高成本的缺陷,所以 PLEG 应用而生。 PLEG 尝试以一种“中断”的形式,来实现对容器 runtime 的健康检查,虽然实际上,它同时用了 polling 和”中断”这样折中的方案。? 在这个问题中,既然 PLEG 认为容器 runtime 出了问题,我们需要从 docker daemon 进程看起。

    25831

    kubelet 架构浅析

    1、PLEG(Pod Lifecycle Event Generator)PLEG 是 kubelet 的核心模块,PLEG 会一直调用 container runtime 获取本节点 containerssandboxes

    1.3K00

    kubelet 架构浅析

    1、PLEG(Pod Lifecycle Event Generator)PLEG 是 kubelet 的核心模块,PLEG 会一直调用 container runtime 获取本节点 containerssandboxes

    28230

    深入分析Kubernetes Critical Pod(二)

    Kubelet Eviction Manager Admitkubelet在syncLoop中每个1s会循环调用syncLoopIteration,从config change channel | pleg

    67730

    浅谈 K8s 网络模型CNI协议

    Pod 创建删除 K8s 中 Pod 的调谐采用 channel 生产者-消费者模型实现,具体通过 PLEG(Pod Lifecycle Event Generator) 进行 Pod 生命周期事件管理 kubernetespkgkubeletplegpleg.go 通过 PLEG 进行 Pod 生命周期事件管理type PodLifecycleEventGenerator interface { Start

    11930

    K8S线上集群排查,实测排查Node节点NotReady异常状态

    五,Pod 健康检测 PLEG根据我们最后面分析的情形,似乎是 node 状态再也没有收到上报,导致 node 节点不可用,这就引申出关于 Pod 的生命健康周期。 PLEG全称为:Pod Lifecycle Event Generator:Pod 生命周期事件生成器。 PLEG去检测运行容器的状态,而 kubelet 是通过轮询机制去检测的。

    37960

    Kubelet 创建 pod 工作流程

    我们主要来看下 syncLoop 层的几个重要组件:PLEG:调用容器运行时的接口来获取本节点 containerssandboxes 的信息,与本地维护的 pod cache 进行对比,生成对应的 PodLifecycleEvent

    21251

    Kubernetes 源码分析之 kubelet(一)

    - nodestatus 定义了很多节点状态更新用的 setter- pleg pod lifecycle event generator- pod pod manager- preemption 优先级抢占相关

    56920

    (二)Kubernetes核心组件解读(下)

    12、创建PLEG ( pod lifecycle event generator )。 为了改变这个现状,Kubernetes在v 1.2.0中引入了PLEG,专门进行pod变化的监控,避免了并发的pod worker来进行轮询工作。 13、创建镜像垃圾回收对象containerGC。

    34230

    kubelet 启动流程分析

    ,启动一个goroutine 负责 kill 掉 pod;11、启动 statusManager;12、启动 probeManager;13、启动 runtimeClassManager;14、启动 pleg

    61021

    Kubernetes 常见问题排查与解决方案!(纯干货)

    原因: 宿主机上面跑的容器太多,导致 pod 无法在 3m 钟内完成生命周期检查解决: PLEG(Pod Lifecycle Event Generator) 用于 kublet 同步 pod 生命周期 所以只得优化容器的调度情况.参考: https:developers.redhat.comblog20191113pod-lifecycle-event-generator-understanding-the-pleg-is-not-healthy-issue-in-kubernetesmetrics-server

    3.3K20

    一些kubernetes的开发实现使用技巧-2

    events from 4. housekeepingCh: a channel to read housekeeping events from 5. plegCh: a channel to read PLEG

    1.1K211

    扫码关注云+社区

    领取腾讯云代金券