k8s debug记录之kubelet user.slice container monitor failure

在kubernetes中,如果使用其自带的单机启动脚本./hack/local-up-cluster.sh来启动一个本地集群的话,会在kubelet的日志中观察到类似以下内容的日志:

Failed to get system container stats for "/user.slice/user-1000.slice/session-c2.scope": failed to get cgroup stats for "/user.slice/user-1000.slice/session-c2.scope": failed to get container info for "/user.slice/user-1000.slice/session-c2.scope": unknown container "/user.slice/user-1000.slice/session-c2.scope"

经过一番调查,问题的根源在:

    if cm.KubeletCgroupsName != "" {
        cont := newSystemCgroups(cm.KubeletCgroupsName)
        allowAllDevices := true
        manager := fs.Manager{
            Cgroups: &configs.Cgroup{
                Parent: "/",
                Name:   cm.KubeletCgroupsName,
                Resources: &configs.Resources{
                    AllowAllDevices: &allowAllDevices,
                },
            },
        }
        cont.ensureStateFunc = func(_ *fs.Manager) error {
            return ensureProcessInContainerWithOOMScore(os.Getpid(), qos.KubeletOOMScoreAdj, &manager)
        }
        systemContainers = append(systemContainers, cont)
    } else {
        cm.periodicTasks = append(cm.periodicTasks, func() {
            if err := ensureProcessInContainerWithOOMScore(os.Getpid(), qos.KubeletOOMScoreAdj, nil); err != nil {
                klog.Error(err)
                return
            }
            klog.V(1).Infof("jay the pid is %#v\n", os.Getpid())
            cont, err := getContainer(os.Getpid())
            if err != nil {
                klog.Errorf("failed to find cgroups of kubelet - %v", err)
                return
            }
            cm.Lock()
            defer cm.Unlock()

            cm.KubeletCgroupsName = cont
        })
    }

这里的核心代码是: cont, err := getContainer(os.Getpid())

理论上来说,该代码所执行的所在进程就应该是kubelet进程,因此它根据当前进程的pid找到自己所在的cgroup, 然后生成一个manager去监控kubelet进程所

消耗的资源。但是这里的问题是,使用./hack/local-up-cluster.sh脚本启动的本地集群是使用docker启动一个container,然后在这个container里面去运行这个kubelet进程的,因此

这里就会产生一些冲突。

原文地址:https://www.cnblogs.com/elnino/p/10095564.html

时间: 2024-08-30 18:04:11

k8s debug记录之kubelet user.slice container monitor failure的相关文章

【原创】k8s源码分析-----kubelet(4)imageManager

本文qq空间链接:http://user.qzone.qq.com/29185807/blog/1460429307 本文csdn博客链接:http://blog.csdn.net/screscent/article/details/51131261 源码为k8s v1.1.1稳定版本 2.3.imageManager 1.参数 代码在k8s.io\kubernetes\cmd\kubelet\app中 结构体变量 type KubeletServer struct { ... ImageGCH

【原创】k8s源码分析-----kubelet(3)ContainerGC

本人空间链接:http://user.qzone.qq.com/29185807/blog/1460080827 源码为k8s v1.1.1稳定版本 2.2 ContainerGC 1.参数 代码在k8s.io\kubernetes\cmd\kubelet\app中 结构体变量 type KubeletServer struct { ... MinimumGCAge                   time.Duration MaxContainerCount              in

【原创】k8s源码分析-----kubelet(5)diskSpaceManager

本文qq空间链接:http://user.qzone.qq.com/29185807/blog/1460448039 本文csdn博客链接:http://blog.csdn.net/screscent/article/details/51134293 源码为k8s v1.1.1稳定版本 2.4.diskSpaceManager 1.参数 代码在k8s.io\kubernetes\cmd\kubelet\app中 结构体变量 type KubeletServer struct { ... LowD

k8s debug

debug info 在实际使用中,通常通过kubectl来访问apiserver,也可以通过Kubernetes各个语言的client库来访问apiserver.在使用kubectl时,打开调试日志也可以看到每个API调用的格式,比如 $ kubectl --v=8 get pods I0216 16:55:39.336234 11813 round_trippers.go:383] GET http://localhost:8080/api [434/568]I0216 16:55:39.3

php debug记录程序执行时间和执行情况

/**  * debuging('dtrace'); //查看调用栈  * debuging($var); //打印$var(var_dump)  * debuging($var, 'php'); //打印$var(var_export)  * debuging($var, $echo, 2); //以json格式输出$var  * debuging(__LINE__.__CLASS);//常用于大量if语句体定位, 或者寻找程序结束点  */ function debuging($var = 

Debug记录:vCenter6.5突然不能访问并报错“503 Service Unavailable”

当您欣喜地使用着vCenter6.5对自己心爱的数据中心进行管理的时候,不知某一时刻突然在界面上出现了如下画面: 503 Service Unavailable (Failed to connect to endpoint: [N7Vmacore4Http20NamedPipeServiceSpecE:0x7f0782fb55f0] _serverNamespace = / _isRedirect = false _pipeName =/var/run/vmware/vpxd-webserver

Debug记录:vCenter6.5突然不能访问并报错“503 Service Unavailabl

当您欣喜地使用着vCenter6.5对自己心爱的数据中心进行管理的时候,不知某一时刻突然在界面上出现了如下画面: 503 Service Unavailable (Failed to connect to endpoint: [N7Vmacore4Http20NamedPipeServiceSpecE:0x7f0782fb55f0] _serverNamespace = / _isRedirect = false _pipeName =/var/run/vmware/vpxd-webserver

Debug 记录:从Workspace One portal打开Horizon桌面时SSO到Horizon失败

现象: 通过Workspace One portal打开Horizon桌面,应该直接进入到桌面里,但是却碰到了下面需要登录的界面: 可能的原因:Horizon Connection Server上配置的authenticator不是enable状态: 解决方法:将Horizon Connection Server上配置的authenticator设置成enable状态:

jsp 错误码debug记录与总结

500 编码错误: 无法向cookie中写入中文字符串 需要使用URLEncoder.Encode()在写入处进行转码,使用URLDecoder.decoder()在读取处进行解码