[kubernetes] 도커와 Containerd 런타임

vinca·2023년 10월 30일
0

☸️ kubernetes

목록 보기
4/35
post-thumbnail

Docker

Docker는 컨테이너 런타임을 포함한 종합적인 컨테이너 플랫폼으로, 컨테이너 생성, 관리, 배포, 저장소 관리 등의 기능을 통합적으로 제공한다.

containerd

containerd는 Docker에서 분리된 컨테이너 런타임이다.

컨테이너 런타임이란?

Docker의 핵심 컴포넌트 중 하나이며, 컨테이너 생애주기 관리와 이미지 관리를 담당한다.
containerd는 컨테이너를 시작하고 종료하는 데 필요한 핵심 동작을 담당하며, Docker외 다른 컨테이너 관리 도구에서도 사용할 수 있다.

즉, Kubernetes와 같은 오케스트레이션 시스템에서도 containerd컨테이너 런타임으로 사용할 수 있다.

k8s에서 런타임으로 사용될 때의 차이

직접적으로 도커자체를 k8s의 컨테이너 런타임으로 사용하는 것과 분리된 cotainerd만을 컨테이너 런타임으로 사용하는 것에는 차이가 있다.

containerd 컨테이너 런타임

containerd를 사용하는 경우는, containerd가 중지된 상태에서도 각 pods를 보는 명령어를 치면 다 볼 수 있다. (다른 삭제나 생성 등의 명령어도 잘 동작한다.)

즉, API 서버가 정상적으로 동작한다.

kubectl stop containerd
kubectl get pods

docker 컨테이너 런타임

하지만, 컨테이너 런타임으로 도커를 사용중이고, 도커를 중지시킨 경우 pods 명령어를 치더라도 API 서버로 명령어가 도달하지 못하기에 출력되지 않는다.

systemctl stop docker
kubectl get pods

결론

containerd는 도커를 컨테이너 런타임으로 사용할 때 보다 훨씬 안정적으로 사용할 수 있다!

하지만 쿠버시스템(kube-system)에 해당하는 컴포넌트(kubelet, 컨테이너 런타임, 스케쥴러 등)가 문제가 생겼을 때, 이를 인식하고 복구하는 것은 불가능하다.

왜냐면 컴포넌트가 없어도 "아직까지는" 정상적으로 잘 동작하기 때문이다. (자동 복구도 안됨)

이는 결국 스케쥴러의 중지를 막은 것 뿐, 어디서 문제가 터질지 모르는 시한폭탄과 같은 상황이다.

따라서 마스터 노드를 여러개 사용하여, 마스터 노드가 좀 더 안정적으로 동작할 수 있도록 하는것이 좋다.

profile
붉은 배 오색 딱다구리 개발자 🦃Cloud & DevOps

0개의 댓글