본문 바로가기
IT Knowledge/Kubernetes

kubelet cgroup driver: "systemd" is different from docker cgroup driver: "cgroupfs" 오류 조치

by Seok. 2021. 12. 24.
반응형

Kubernetes cluster를 구성하다

kubeadm init을 통해 cluster를 구성하다보면 아래와 같은 오류를 받을 수 있다. 

 

[오류]

11월 22 17:17:11 k8s-master-1 kubelet[20952]: E1122 17:17:11.396342   20952 server.go:294] "Failed to run kubelet" err="failed to run Kubelet: misconfiguration: kubelet cgroup driver: \"systemd\" is different from docker cgroup driver: \"cgroupfs\""

[오류내용]

kubelet의 cgroup와 컨테이너런타임인 docker의 cgroup이 다르다. 

(컨테이너 런타임으로 docker를 사용한 Case)

kubelet은 "systemd"로 설정 

컨테이너런타임(docker)는 "cgroupfs"로 사용됨. 

 

[원인확인]

컨테이너 런타임과 kubelet에는 "cgroup driver"라는 속성이 있으며, linux 시스템에서 cgroup을 관리하는데 중요합니다. 

컨테이너 런타임과 kubelet의 cgroup 드라이버를 일치시켜야 합니다!

 

 

[조치방법]

kubelet의 cgroup을 "cgroupfs"로 변경해주어도 되지만, kubernetes 공식문서에서는 "cgroupfs"보다 "systemd"를 Recommended 한다고 나와있습니다. 

따라서, docker를 "cgroupfs"에서 "systemd"로 변경해서, kubelet과 동일하게 맞추어 주는것이 좋습니다. 

 

Docker cgroup "systemd" 설정하는 방법은 아래와 같습니다.

 

[참고자료]

https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/

Docker cgroup(systemd) 설정 방법 : https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker

Cgroup 설명 : https://tech.kakao.com/2020/06/29/cgroup-driver/

반응형

댓글