IT/CLOUD(AWS,Azure,GCP,Docker)

쿠버네티스 : KUBERNETES 1.20 부터 DOCKER 사용을 중단합니다.

알콩달콩아빠 2023. 8. 10. 10:42
728x90
반응형

쿠버네티스 ( Kubernetes ) 프로젝트는 2020 년 12 월 8 일 (미국 시간) “Kubernetes v1.20 ‘을 공개하기 앞서 공식 블로그에서 “Do not Panic : Kubernetes and Docker “이라는 게시물을 게시하고 컨테이너 런타임으로  도커 사용을 중지 한다는 내용에 대해 설명하였습니다.

KUBERNETES IS DEPRECATING DOCKER AS A CONTAINER RUNTIME AFTER V1.20

 

쿠버네티스 는 버전 v1.20 이후 Docker 에 대해  컨테이너 런타임 으로  사용 중지를 알렸습니다.

GKE 및 EKS 등의 관리 Kubernetes 서비스를 사용하는 경우 오퍼레이터에서 지원되는 버전의 런타임을 사용하는 것을 확인하고 쿠버네티스 릴리스에서 도커 지원이 만료되기 전에 변경 해야합니다.

KUBERNETES 1.20 에서 DOCKER 사용 중지(DEPRECATION)

 

쿠버네티스와 도커 등 컨테이너 기술 관련하여 2020년 12 월 초 GitHub와 공식 Slack, Twitter 등을 뒤흔든 사건이 바로  Docker 에 대한 향후 사용 중지에 대한 것이였습니다. 공식 릴리즈 노트는 다음과 같습니다.

Deprecation

Docker support in the kubelet is now deprecated and will be removed in a future release. The kubelet uses a module called “dockershim” which implements CRI support for Docker and it has seen maintenance issues in the Kubernetes community. We encourage you to evaluate moving to a container runtime that is a full-fledged implementation of CRI (v1alpha1 or v1 compliant) as they become available. (#94624@dims) [SIG Node]

쿠버네티스는  컨테이너 런타임과 통신 할 때 CRI라는 표준 인터페이스 API 를 사용하지만  Docker는 이를  지원하지 않습니다.

이런 이유로 쿠버네티스는  “dockershim”라는 브리지 용 서비스로 Docker API와 CRI의 변환을 해주었으나 , 이것이 deprecation 되면서 앞으로 마이너 릴리스 된 후에 삭제 예정입니다.

쿠버네티스에서 Dockershim가 사용 중지 되면서 자동으로  Docker할 수 없게 되었습니다. 이제 쿠버네티스에서는 CRI를 지원하는 컨테이너 런타임만  사용하게 됩니다.

CRI에 지원하는 한 컨테이너 런타임은 cri-o 와  containerd 가 있습니다.

쿠버네티스와 도커 FAQ

 

Question – 쿠버네티스는 왜 도커 지원을 중단한 것인가요?

 

가장 큰 이유는 도커는 CRI (Container Runtime Interface) 와 호환성이 없다는 것 입니다.

Docker는 Kubernetes에 통합되도록 설계되어 있지 않기 때문에 많은 문제가 있습니다.

쿠버네티스에서 도커를 사용하기 위해 필요한 Dockershim 은 유지 보수 비용이 높다는 지적이 있습니다.

도커는 쿠버네티스에서는 사용하지 않는 많은 기능들이 포함되어 있어 자원의 오버 헤드가 높다는 문제가 있습니다.

Question – 도커를 사용하던 사용자에게 어떤 영향을 미치는 걸까요?

 

개발용으로 Docker 를 사용하는 것은 쿠버네티스 클러스터의 런타임과는 아무 상관이 없습니다.

또한 OCI 표준을 준수하는 이미지는 도구에 관계없이 쿠버네티스에서 동일하게 사용할 수 있습니다. containerd 와 CRI-O는 기존 도커 이미지와 호환성이 뛰어납니다.

이것이 바로 컨테이너 표준이 만들어진 이유입니다.

Question – Dockershim 은 어떤 역할을 하는 것인가요?

 

Dockershim는 Docker과 Kubernetes API를 잇는 다리 역할을 합니다.

Kubernetes가 만들어진 당시에는 Docker 가 가장 범용적으로 사용되고 있었기 때문에 Dockershim을 폭녋게 사용하였습니다.

그러나 Docker 사는 Kubernetes 공개 직후 자신의 오케스트레이션 도구 인 Docker Swarm을 발표했,  그 외에도 레드햇 ( 구 CoreOS )는 rkt와  Rancher 사의 Cattle 컨테이너 관리를위한 도구들을 출시하였기 때문에 Kubernetes있어서의 Docker 의존할 수 뿐이 없었습니다.

쿠버네티스 CRI 하이레벨 런타임

 

CRI 런타임은 하이레벨 런타임으로 도커 와 같이 쿠버네티스에서 컨테이너를 관리하는 기능을 제공합니다. 2021 년 4 월 현재, CRI 런타임에는 “containerd”며 “CRI-O”라는 두 가지 구현체가 있습니다.

CRI-O 런타임

 

CRI-O 는 레드햇에서 주도적으로 개발하고 있는 오픈소스 프로젝트로  쿠버네티스에서 CRI 구현을 목적으로 만들었기 때문에 “쿠버네티스 전용 런타임”라고 부르기도 합니다.

레드햇의 주력 제품 중 하나 인 ‘Red Hat OpenShift “의 컴포넌트로서 도입되어 Docker 대신 컨테이너를 운영하기 위한 도구로 다양한 환경에서 사용할 수 있습니다.

쿠버네티스 컨테이너 런타임으로 비교되는 containerd 와의 가장 큰 차이점은 그 구현 배경에 있습니다. 이름에서 부터 강조하는 것처럼 “CRI 위한 런타임 ‘ 으로 가볍고 최적화된  런타임으로 강조하고 있습니다.

containerd 런타임

 

containerd 는 Kubernetes와 같이 CNCF 프로젝트 하나로 CRI 를 준수하면서  Docker 의 다양한 기능을 제공합니다. 런타임은 Docker 동작에 필요한 기능을 제공합니다.

지금까지 Kubernetes에서 런타임에 Docker를 사용해 온 이용자들에게는 큰 변화 없이 도커에서 전환 할 수 있습니다.

쿠버네티스 표준 컨테이너 런타임

 

Docker 에서 표준 컨테이너 런타임 인터페이스로 전환 시 고려해야 하는 쿠버네티스 에서 사용가능한 컨테이너 런타임  CRI (Container Runtime Interface) 와 OCI (Open Container Initiative)  개요에 대해 설명합니다.

Kubernetes 는 kubectl 명령을 사용하여 Pod를 만듭니다. 이때 Kubernetes 내부에서는 etcd에 Pod를 만들기 위한 정보를 기록합니다.

이후 스케줄러 등의 처리를 거쳐 특정 노드의 kubelet 에서 새로 생성할 Pod 정보를 가져옵니다.

kubelet는 가져온 Pod 정보를 CRI 통해 하이 레벨 런타임에 전달합니다. CRI 런타임은 그것을 JSON 구성 파일로 변환합니다.

마지막으로 OCI 에서 로우 레벨 런타임을 실행하여 컨테이너를 만듭니다.

이 때 Linux 커널과의 커뮤니케이션은 OCI 런타임이 맡으며, CRI 런타임은 관리를 위한 인터페이스 역할을 합니다.

High-level Container Runtime

  • CRI 런타임
  • 외부 (kubelet)에서 CRI 인터페이스에서 명령을 받아
  • 컨테이너 이미지 관리를 담당하고, Low-level에 지시를 내린다
  • containerd, CRI-O

Low-level Container Runtime

  • OCI 런타임
  • 표준 사양 OCI 준수하여 High / Low 다른 런타임간에 연계 가능
  • High-level의 지시에 따라 컨테이너의 시작 / 정지 등 직접적인 제어를 할
  • runC, crun, gVisor (runsc) , Kata Containers Runtime

클라우드 개념 뽀개기와 데모 그리고 원격 실습까지 무료 체험

 

컨테이너 기술 도입을 검토하지만 컨테이너 엔진에서 부터 레지스트리, 오케스트레이션 , 보안, 네트워크,스토리지,  애플리케이션 관리까지 다양한 기술이 뒤섞여 혼란스러운 상황입니다.

클라우드 네이티브 기술은 컨테이너, 서비스 메시, 마이크로서비스, 불변의 인프라스트럭처, 그리고 선언적 API 를 통해 클라우드의 이점을 최대한 활용하여 애플리케이션을 개발, 운영 할 수 있는 방식입니다.

고객 직접 대면이 어려운 지금, 비대면으로 고객들이 PoC(Proof of Concept)를 체험할 수 있도록 그 활용 가이드를 제안해드립니다.

준비만 하다, 계획만 세우다, 교육만 받다 끝나는 POC 가 아닙니다.

 

세계 시장 점유율 1위의 오픈소스 PaaS 제품은 OpenShift 를 사무실에서 직접 무료로 체험하실 수 있는 기회를 드립니다.

  • 2주간 최신 클라우드 기술과 전문가의 가이드를 경험하실 수 있습니다.
  • POC 에는 OpenShift 기술지원이 포함되어 있습니다.

100% 온라인으로 진행하는 PaaS 무료 체험!

  • 비대면 Cloud native & Hybrid Cloud 세미나
  • 맞춤형 Cloud  관련 데모
  • 원격 접속을 통한 클라우드 기술 검증
  • 유튜브 원격 세미나

OpenShift 설치 부터 운영까지 직접 경험해 보세요.

  • 운영환경과 동일한 구축 경험을 하실 수 있습니다.
  • 2주간 서버룸과 테스트룸 무료 제공
 

 

References & Related Links

 

출처 : 쿠버네티스 1.20 부터 도커 사용을 중단합니다. - OPENMARU APM

728x90
반응형