본문 바로가기

삽질

kubeadm init 후 kubelet이 죽는 현상

unbuntu 24 버전에서 kubeadm으로 k8s 클러스터를 설치했다.

설치 방식은 공식문서에 따라 진행했다.

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

 

설치 직후 문제가 없는지 확인하기 위해 핵심 pod가 존재하는 kube-system 네임스페이스를 확인해봤다.

$ kubectl get pods -n kube-system -w
NAME                                READY   STATUS              RESTARTS         AGE
coredns-674b8bbfcf-8cmh5            0/1     ContainerCreating   0                4m29s
coredns-674b8bbfcf-94qb8            0/1     ContainerCreating   0                4m29s
etcd-lmd-mas01                      1/1     Running             23 (5m17s ago)   5m25s
kube-apiserver-lmd-mas01            1/1     Running             23 (4m54s ago)   4m51s
kube-controller-manager-lmd-mas01   1/1     Running             5 (5m24s ago)    4m51s
kube-proxy-qrfq7                    0/1     CrashLoopBackOff    4 (37s ago)      4m29s
kube-scheduler-lmd-mas01            1/1     Running             25 (5m24s ago)   4m51s

 

Pod가 계속 죽었다 살았다 하다가 결국 api-server가 끊기는 문제가 발생했다.

 

CKA 자격증 취득을 위해 공부했을 때, api-server가 끊기면 kubelet을 확인하라고 공부한 기억이 있어 kubelet을 확인해보니, 아니나 다를까 kubelet이 죽어있었다.

$ systemctl status kubelet
    Active: dead

 

journalctl 명령어로 로그를 확인해도 에러가 보였다.

 

리서치결과 이 문제는 k8s의 cgroup 방식과 containerd의 cgroup 방식의 불일치 때문이었다.

kubeadm으로 init을 하면 기본적으로 systemd 방식을 사용한다.

 

하지만, containerd는 기본적으로 cgroupfs 방식을 사용한다.

 

공식문서에서 해결 방법의 힌트를 얻을 수 있었는데, containerd의 cgroup 방식을 변경하면 된다.

https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/

 

컨테이너 런타임

참고: Dockershim은 쿠버네티스 릴리스 1.24부터 쿠버네티스 프로젝트에서 제거되었다. 더 자세한 내용은 Dockershim 제거 FAQ를 참고한다. 파드가 노드에서 실행될 수 있도록 클러스터의 각 노드에 컨

kubernetes.io

$ sudo mkdir -p /etc/containerd

$ sudo containerd config default | sudo tee /etc/containerd/config.toml > /dev/null

$ vim /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
  ...
  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
    SystemdCgroup = true

$ systemctl restart containerd

 

'삽질' 카테고리의 다른 글

Jenkins 플러그인 수동 설치  (0) 2025.05.18
Service Mesh  (0) 2024.09.15
도커 없이 컨테이너 만들기 - 9  (0) 2024.08.23
도커 없이 컨테이너 만들기 - 8  (0) 2024.08.23
도커 없이 컨테이너 만들기 - 7  (0) 2024.08.23