[kubelet 상태 점검]
$ systemctl status kubelet
kubelet.service: Unit entered failed state.
kubelet.service: Failed with result 'exit-code'.
[kubelet log 출력]
$ journalctl -a -f
"Failed to run kubelet" err="failed to run Kubelet: misconfiguration: kubelet cgroup driver: \"cgroupfs\" is different from docker cgroup driver: \"systemd\""
⚠️ kubelet의 cgroup driver는 cgroupfs이고, docker의 cgroup driver는 systemd이기 때문에 cgroup driver가 일치하지 않아서 발생하는 오류이다.
해결 방법
[방법1] kubelet ConfigMap 변경하기 (only master node)
✅ master node에서는 kubectl 명령어를 이용해 configMap을 변경할 수 있다.
1. kubelet ConfigMap 이름을 찾기
$ kubectl get cm -n kube-system | grep kubelet-config
kubelet-config-1.20 1 20h
kubelet-config-1.21 1 88m
kubelet-config-1.22 1 77m
2. kubelet-config 파일 편집하기 (replace x.yy with the Kubernetes version)
$ kubectl edit cm kubelet-config-x.yy -n kube-system
3. 기존 cgroupDriver값을 수정하거나 다음과 같은 새 필드를 추가한다.
cgroupDriver: systemd
[방법2] 모든 노드에서 cgroup 드라이버 업데이트
1. 해당 노드 drain하기
$ kubectl drain <node-name> --ignore-daemonsets
2. kubelet 중지하기
$ systemctl stop kubelet
3. container runtime 중지하기
$ systemctl stop docker.service
4. container runtime cgroup driver를 systemd로 변경
$ docker info | grep -i cgroup
$ cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": { "max-size": "100m" },
"storage-driver": "overlay2"
}
EOF
6. /var/lib/kubelet/config.yaml을 cgroupDriver: systemd로 설정하기
$ vi /var/lib/kubelet/config.yaml
7. container runtime start
$ systemctl daemon-reload
$ systemctl restart docker
8. kubelet start
$ systemctl restart kubelet
9. uncorden node
kubectl uncordon <node-name>
kubelet 정상 작동 확인~😀
https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/
반응형
'Kubernetes' 카테고리의 다른 글
Deployment를 이용해 Container 실행하기 (0) | 2022.02.05 |
---|---|
kubeconfig에 대해서 알아보자 (0) | 2022.02.05 |
How to completely uninstall kubernetes & install kubeadm, kubelet, kubectl (0) | 2022.02.03 |
Controller [2] - ReplicaSet (0) | 2022.01.29 |
Controller [1] - Replication Controller (0) | 2022.01.29 |