쿠버네티스, 도커 런타임 지원 안 한다?

내년말 컨테이너 실행환경에서 제외

컴퓨팅입력 :2020/12/04 13:33    수정: 2020/12/04 13:35

쿠버네티스 1.20 베타버전이 발표된 가운데, 도커 지원 모듈을 없앤다는 계획이 공개됐다. 도커 컨테이너를 쿠버네티스에서 쓸 수 없게 된다는 해석이 퍼지면서 구글이 긴급히 해명에 나섰다.

3일(현지시간) 미국 지디넷에 따르면, 향후 출시되는 쿠버네티스 1.20 버전에서 큐브렛(kubelet)의 '도커심(dockershim)' 모듈을 없앨 계획이라는 내용이 공개됐다.(☞쿠버네티스 릴리스 노트)

도커심 모듈은 쿠버네티스에서 도커를 지원하기 위한 '컨테이너 런타임 인터페이스(CRI)'다.

쿠버네티스.

도커심을 제거한다는 건 도커를 쿠버네티스의 컨테이너용 런타임으로 쓰지 않겠다는 의미다.

도커 컨테이너 이미지를 쿠버네티스에서 쓸 수 없게 되는 것으로 해석될 수 있다.

이에 구글클라우드플랫폼의 켈시 하이타워는 트위터에 커뮤니티의 혼선을 차단하는 내용의 글을 올렸다. 그는 도커로 컨테이너 이미지를 생성하고 작동할 수 있지만, 도커가 여러 런타임 중 하나이며, 컨테이너를 실행하는 프로세스의 주도권은 리눅스 운영체제에 있다고 적었다.

구글클라우드플랫폼의 여러 개발자들은 2일 블로그에 '혼란스러워하지 말라: 쿠버네티스와 도커'란 글을 게시했다. 쿠버네티스의 컨테이너 런타임으로서 도커를 제거하는 의미를 설명한 글이다.(☞블로그 바로가기)

이 글에 따르면, 쿠버네티스 런타임에서 도커를 제거하더라도 도커에서 생성한 컨테이너 이미지를 등록하고 실행하는 게 가능하다. 쿠버네티스에서 컨테이너를 쓸 수 없게 되는 건 아니란 얘기다.

컨테이너를 생성하고 실행하기 위한 런타임은 도커 외에도 여러가지다.

도커는 여러 런타임 중 택할 수 있는 선택지 중 하나일 뿐이다. 도커는 쿠버네티스 내부에 포함되도록 설계되지 않았기 때문에 두 소프트웨어 간에 여러 충돌을 만들어낼 수 있다.

블로그 작성자들은 "우리가 부르는 도커는 단 한가지가 아니고, 전체 기술 스택을 일컫는다"고 설명했다. 도커는 개발자를 위한 여러 사용자 개선사항을 포함한다. 쿠버네티스가 도커의 모든 기능을 필요로 하지 않는다. 도커심은 도커에서 런타임만 추출하는 작업만 한다. 나머지 도커 요소는 쿠버네티스에 불필요한 코드를 담고 있으며, 이는 쿠버네티스 클러스터 관리에서 취약점공격의 표면을 넓힐 수 있다.

또한 도커가 쿠버네티스의 CRI를 준수하지 않는다. 쿠버네티스가 도커와 수평을 맞추기 위한 쐐기(Shim)를 필요로 하지 않았다면 별 문제가 없었을 것이다. 인터페이스 유지가 쉽지 않은 상태를 계속 유지하면 앞으로도 지속적으로 문제가 벌어질 것이란 설명이다.

개발자는 쿠버네티스에서 컨테이너 런타임을 도커에서 다른 런타임으로 변경하면 된다. 구글쿠버네티스엔진(GKE), 아마존 엘라스틱쿠버네티스서비스(EKS), 마이크로소프트 애저쿠버네티스서비스(AKS) 등을 사용중이라면 쿠버네티스 향후 버전에서 도커 지원을 삭제하기 전 워커노드에서 사용가능한 런타임을 변경하면 된다.

쿠버네티스는 향후 버전에서 도커 런타임 지원을 완전히 제거한다. 예정대로라면 내년말 나올 쿠버네티스 1.22 버전부터다. 'containerd'나 'CRI-O' 같은 컨테이너 런타임 중 하나로 교체하게 된다. 이 런타임에서 도커 데몬 설정을 통해 현재처럼 도커를 혼용할 수 있다. 도커의 자체 개방형 런타임인 'runc'도 계속 쓸 수 있다.

쿠버네티스 개발팀 측은 "도커는 여전히 컨테이너 구축에 매우 유용한 툴이며 도커 이미지는 쿠버네티스 클러스터에서 계속 작동한다"고 강조했다.

하이타워는 "변하는 건 없으며, 도커 사용을 유지하라"며 "쿠버네티스는 단지 런타임에서 도커의 역량 중 일부를 레버러지하는 것"이라고 설명했다.

그는 "사실 둘다 아랫단의 프로세스를 관리하기 위해  containerd와 runc를 레버리지할 수 있다"며 "컨테이너 이미지는 이동가능하므로, 어떻게 그들을 구축하고 실행할 것인지는 당신에게 달렸다"고 덧붙였다.

도커 측도 쿠버네티스 측의 설명에 동의했다. 도커의 듀 카오 제품관리 수석디렉터는 "당신이 도커를 사용하고 있다면, 이미 containerd를 쓰고 있는 것"이라고 밝혔다. 그는 "도커는 containerd 프로젝트를 구글, IBM과 2016년에 만들었고, 이런 변화를 목적으로 했다"며 "도커심과 런타임으로서 도커엔진을 제거하는 건 쿠버네티스용 현대적 런타임을 제공하려는 장기적 헌신의 완성"이라고 강조했다.

그에 의하면, 도커의 툴을 사용해 생성하는 컨테이너 이미지는 쿠버네티스에서 작동한다. 도커의 차세대 구축 인프라인 빌드킷은 더 유연한 아키텍처를 갖고 있기 때문에 도커와 함께 사용가능하고, containerd나 runc와 직접 소통할 수 있다.

관련기사

도커심은 일단 내년말 나올 쿠버네티스 1.23 버전까지는 남아있다. 1.20 버전의 경우 큐브렛을 시작할 때 런타임으로 도커를 사용하면 경고 로그를 보여준다.

쿠버네티스 측은 "모든 사람과 긴밀히 협력해 모두 준비될 때까지 토커심을 유지할 것"이라고 밝혔다.