• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    해결됨

컨테이너 런타임에 대한 질문이 있습니다.

23.11.14 00:49 작성 조회수 208

0

안녕하세요! 쉽배쿠부터 수업을 쭉 진행하고 있는데, 계속 의문점이 드는 부분이 있어 이것저것 시도해 보다가 질문드립니다..!

쉽배쿠 수업 당시, "컨테이너 런타임에 문제가 생겼다면?" 을 진행하면서 마스터 노드의 컨테이너 런타임인 containerd를 stop하는 테스트를 진행 했었습니다.

이를 통해 컨테이너 런타임을 지정할 때 containerd를 사용하는 것이 도커를 컨테이너 런타임으로 사용하는 것 보다, 더 안정성 있게 동작할 수 있다는 점도 알게 되었습니다.

당시 전체적인 구상도를 보며, VM의 마스터노드, 워커노드 그리고 파드와 컨테이너까지 "아 Docker는 사용되는 부분이 없구나" 라고 생각했습니다. (실제로 그림에도 도커는 없었으니까요 🙂 )

하지만, 이번 그배쿠 강의를 들으면서 환경 설정을 하는 쉘 스크립트에 도커를 설치하는 부분이 존재했고, 실제 docker --version / docker info 등의 명령어를 실행하니 도커가 동작 중이라는 것을 확인했습니다.

여기서 들게 된 의문점은 다음과 같습니다!

  1. 현재 그배쿠 강좌는 컨테이너 런타임으로 무엇을 사용하나요? 또한 쉽배쿠 강좌에서는 실제로 도커를 어디에도 사용하지 않았나요?

     

     

  2. 쿠버네티스가 현재 도커 지원 중단(컨테이너 런타임으로써의 중단)한 것으로 알고 있습니다.

    따라서 현재 그배쿠 강좌에서 컨테이너 런타임으로 "컨테이너디"를 사용하는 것이 맞다면 "컨테이너디"알아서 컨테이너를 관리해줄 것으로 생각되는데, 현재 설치된 도커는 어떤 역할을 수행하는 것인가요?

     

     

  3. 컨테이너의 관리를 위해서는 도커와 컨테이너디 둘 다 설치하는 것은 필수적인가요?

어느정도 쓰다보니까 이해가 된 것 같기도 한데,,, 아리송하여 질문을 드립니다. 감사합니다!

답변 1

답변을 작성해보세요.

1

안녕하세요

좋은 질문에 감사드립니다.

답변은 아래와 같습니다.

 

  1. 현재 그배쿠 강좌는 컨테이너 런타임으로 무엇을 사용하나요? 또한 쉽배쿠 강좌에서는 실제로 도커를 어디에도 사용하지 않았나요?

     

     

    시작할 때는 Docker (내부는 Containerd)를 사용하다가 1.24에서 Dockershim을 배제하기로 한 관계로 1.24부터 containerd로 변경되었습니다. 아마 강의 초반이 아니라 보강에서 살펴보시면 확인 가능하실꺼에요 docker ps, crictl ps

  2. 쿠버네티스가 현재 도커 지원 중단(컨테이너 런타임으로써의 중단)한 것으로 알고 있습니다.

    따라서 현재 그배쿠 강좌에서 컨테이너 런타임으로 "컨테이너디"를 사용하는 것이 맞다면 "컨테이너디"알아서 컨테이너를 관리해줄 것으로 생각되는데, 현재 설치된 도커는 어떤 역할을 수행하는 것인가요?

     

     

우선 도커 내부적으로 컨테이너 관리를 위해서 containerd를 사용합니다. 따라서 도커 시절에서도 containerd는 사용되고 있던거였고요.

쿠버네티스 처럼 매우 큰 범위의 인프라 시스템은 시대 변화와 상황에 따라 계속 시스템에 관련된 것들을 변경해야 할 필요가 있습니다. 1.24에서 dockershim을 제거했던게 그러한 큰 변화 중에 하나이고요.

현재 도커가 일부 유지되는 것은 컨테이너 빌드를 할 경우가 있을 때 이를 적용하기 위함이고, 향후에 제거할 가능성도 있습니다. 쿠버네티스만을 생각할 때는 굳이 필요하지 않아서요.

  1. 컨테이너의 관리를 위해서는 도커와 컨테이너디 둘 다 설치하는 것은 필수적인가요?

관리라는게 컨테이너 빌드를 해서 배포하는 것이라면 도커 (또는 다양한 컨테이너 빌드 도구)가 필요하고요. 순수하게 쿠버네티스(컨테이너 오케스트레이션) 관점이라면 필요하지 않습니다.

현재 구조 그리고 추가되는 보강들을(1.24, 1.27등) 이해하는데 도움이 되셨으면 좋겠네요.

참고로 현재 보강 B에 있는 구조에서 학습을 위해서라면 Docker를 제거하고 vagrant up 하도록 코드를 변경해 보시면 얻는게 있을 것 같다는 생각도 드네요.

위의 내용이 학습에 도움이 되시길 바랍니다.