Skip to content

[Bug]: panic: we cant not find any cgroup driver of kubelet after requesting configz and default files #75

@Dongrc

Description

@Dongrc

这个问题是否已经存在?

部署环境

内核版本:Linux version 6.1.156-177.286.amzn2023.x86_64 (mockbuild@ip-10-0-50-14) (gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-5), GNU ld version 2.41-50.amzn2023.0.4) #1 SMP PREEMPT_DYNAMIC Tue Oct 21 22:16:56 UTC 2025
华佗版本:latest (20251201)

如何复现

config配置了es地址与
[Pod]
KubeletReadOnlyPort = 10255

k8s(AWS EKS)中启动失败,报错:
time="2025-12-01T12:21:00.669519347Z" level="info" msg="InitDefaultClients includes engines: elasticsearch, local-file" file="storage.go:133" func="huatuo-bamai/internal/storage.InitDefaultClients"
panic: we cant not find any cgroup driver of kubelet after requesting configz and default files
goroutine 1 [running]:
huatuo-bamai/internal/pod.kubeletCgroupDriverCacheUpdate(0xc000157180)
/go/huatuo-bamai/internal/pod/container_kubelet_sync.go:475 +0x405
huatuo-bamai/internal/pod.ContainerPodMgrInit(0xc000157180)
/go/huatuo-bamai/internal/pod/container_kubelet_sync.go:150 +0x5f0
main.mainAction(0xc000425540)
/go/huatuo-bamai/cmd/huatuo-bamai/main.go:102 +0xda5
github.com/urfave/cli/v2.(*Command).Run(0xc00048a840, 0xc000425540, {0xc00003e0a0, 0x5, 0x5})
/go/huatuo-bamai/vendor/github.com/urfave/cli/v2/command.go:276 +0x1062
github.com/urfave/cli/v2.(*App).RunContext(0xc0000c9600, {0x29a6be0, 0x3776560}, {0xc00003e0a0, 0x5, 0x5})
/go/huatuo-bamai/vendor/github.com/urfave/cli/v2/app.go:333 +0x2c5
github.com/urfave/cli/v2.(*App).Run(0xc0000c9600, {0xc00003e0a0, 0x5, 0x5})
/go/huatuo-bamai/vendor/github.com/urfave/cli/v2/app.go:307 +0x6b
main.main()
/go/huatuo-bamai/cmd/huatuo-bamai/main.go:302 +0x10c5

修复建议或方案

func kubeletCgroupDriverCacheUpdate(ctx *PodContainerInitCtx) error {
	var (
		config kubeletconfig.KubeletConfiguration
		err    error
	)

	config, err = kubeletConfigDoRequest(kubeletPodListClient, kubeletConfigAuthorizedURL(ctx.PodAuthorizedPort))
	if err == nil {
		kubeletPodCgroupDriver = config.CgroupDriver
		return nil
	}

	log.Debugf("kubelet config port is not available, try to read config files: %v", kubeletDefaultConfigPath)

	config, err = kubeletConfigDefault()
	if err != nil {
		panic("we cant not find any cgroup driver of kubelet after requesting configz and default files")
	}

问题1:kubeletConfigDoRequest这里是只尝试了authorized port,没有尝试无认证的(10255)吗?
问题2:接下来尝试去default位置读取 kubeletDefaultConfigPath = []string{"/var/lib/kubelet/config.yaml", "/var/lib/kubelet/ack-managed-config.yaml"} 但是我的主机上并没有这两个文件

/host # ls -l var/lib/kubelet/
total 28
drwx------    2 root     root             6 Nov 28 10:53 checkpoints
-rw-------    1 root     root            62 Nov 28 10:53 cpu_manager_state
drwxr-xr-x    2 root     root            26 Dec  1 02:34 device-plugins
-rw-r--r--    1 root     root           628 Dec  1 02:30 kubeconfig
-rw-------    1 root     root            61 Nov 28 10:53 memory_manager_state
drwxr-xr-x    2 root     root            86 Nov 28 10:54 pki
drwxr-x---    3 root     root            29 Nov 28 10:54 plugins
drwxr-x---    2 root     root            38 Nov 28 10:54 plugins_registry
drwxr-x---    2 root     root            26 Dec  1 02:34 pod-resources
drwxr-x---   15 root     root         16384 Dec  1 12:19 pods

kubelet的配置是在

/host # cat etc/kubernetes/kubelet/config.json |grep cgroup
    "cgroupDriver": "systemd",
    "cgroupRoot": "/",

其他

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions