본문 바로가기
망각을위한노트

컨테이너, 쿠버네티스, 오픈시프트 차이점 (Container, Kubenetes, OpenShift differences)

by RNE21 2022. 12. 21.
반응형

컨테이너와, 쿠버네티스, 오픈시프트가 뭐가 다른지, 기초적인 수준에서 알아보겠습니다.


컨테이너란 ?

컨테이너는 격리된 애플리케이션 런타임 환경입니다. 오버헤드가 가상화 보다 더 적습니다.


컨테이너를 사용하는 이유는?

서버의 자원 활용 효율성을 높이려면, 하나의 서버에서 여러 애플리케이션을 실행하는 것이 좋습니다.
이때, 같은 서버에서 실행중인 애플리케이션들은 서로 영향을 주지 않도록 격리할 필요가 있겠죠.
컨테이너는 바로 격리된 런타임을 제공하는 기술입니다.


컨테이너의 장점은?

컨테이너는 (가상화 VM과는 달리), 별도의 OS를 구동하지 않기 때문에, 오버헤드가 적습니다.
오버헤드가 적은 만큼, 더 많은 애플리케이션을 구동할 수(도 있고 아닐 수)도 있습니다.


컨테이너의 단점은?

런타임의 수가 수백 수천 개로 늘어나면 관리의 복잡도가 증가합니다.
이런 단점을 해결하기 위해, 컨테이너 오케스트레이션 시스템이 필요합니다.
쿠버네티스가 바로, 컨테이너 오케스트레이션 시스템의 대표적인 사례입니다.


컨테이너에 애플리케이션을 배포하는 방법은?

먼저, 애플리케이션과 필요한 라이브러리를 함께 패키징 해서 이미지를 만듭니다.
그런 다음, 이 이미지를 '컨테이너 이미지 레지스트리'에 등록해 둡니다.
여러 다른 컨테이너 환경에서 이미지를 다운로드하고, 런타임을 통해 구동합니다.


'컨테이너 이미지'는 뭔가요?

컨테이너 이미지는, 애플리케이션을 실행하기 위해 필요한 모든 요소들을 포함한 패키지입니다.
여기에는 애플리케이션 소스 코드, 실행 파일, 라이브러리가 포함되어 있어서, 이동하거나 재사용하는 것이 간편합니다.


Kubenetes 가 뭐지?

Kubernetes는 오픈소스 컨테이너 오케스트레이션 시스템입니다.
Kubernetes는 컨테이너들을 쉽게 관리할 수 있게 도와주고, 애플리케이션을 스케일링하거나 재시작하고, 시스템 장애 상황에 대처할 수 있는 기능을 제공합니다.


쿠버네티스가 왜 필요하지?

운영 중인 컨테이너 수가 수백 수천 개가 되면, 관리하기가 매우 힘들어집니다.
이때 필요한 것이 '컨테이너 오케스트레이션 시스템'인데요.
쿠버네티스가 바로 컨테이너 오케스트레이션 시스템 중에 하나입니다.

그동안 여러 종류의 컨테이너 오케스트레이션 시스템들이 세상에 선 보였지만, 지금은 쿠버네티스로 대동단결 되었습니다.

반응형

그러면.. OpenShift는 뭐지?

OpenShift는 Red Hat에서 제공하는 컨테이너 오케스트레이션 솔루션 입니다.
OpenShift는 Kubernetes를 기반으로 하고 있고, 그 위에 여러 부가 기능을 추가했습니다.

좀 더 자세히 살펴보자면, Kubernetes + 멀티 테넌시 기능, 보안, CI/CD 기능이 추가되어 있습니다.
또한 셀프서비스 애플리케이션 배포, 애플리케이션 상태 모니터링, 소스 코드 관리를 위한 Git과의 통합 기능을 제공합니다.
UI로는 관리용 웹 콘솔과 명령줄 인터페이스를 제공합니다.

OpenShift는 확장성을 고려해서 설계되어 있습니다. 사용자가 직접 사용자 정의 로직을 추가하거나, 기본 동작을 재정의할 수 있습니다.


OpenShift의 장점은?

  1. 사용 용이성
    OpenShift는 애플리케이션 관리를 위해, 웹 콘솔 및 명령줄 인터페이스를 제공합니다.
    미리 작성되어 있는 애플리케이션 템플릿과 배포 전략을 사용하여, 새 애플리케이션을 간편하게 시작시킬 수 있습니다.
  2. 확장성
    OpenShift는 부하 수준에 따라 애플리케이션을 자동으로 확장 또는 축소할 수 있습니다.
    개발자는 인프라에 대한 걱정 없이 애플리케이션 구축 및 개선에 집중할 수 있습니다.
  3. 보안
    OpenShift는 각 애플리케이션에게 안전하고 격리된 환경을 제공하고, 보안 취약성 및 데이터 침해로부터 보호합니다.
  4. 다른 도구와의 통합
    OpenShift는 Jenkins, Git, Docker 등, 다양한 도구를 사용하여, 기존 워크플로에 쉽게 통합할 수 있습니다.
  5. 고가용성(H/A)
    OpenShift는 애플리케이션을 여러 서버에 자동으로 복제하여, 고가용성을 제공합니다.
    서버 하나가 다운되더라도, 다른 서버에 복제된 애플리케이션들이 서비스를 제공할 수 있습니다.
  6. 여러 언어 및 프레임워크 지원
    OpenShift는 Java, .NET, Ruby 및 Python을 비롯한 여러 프로그래밍 언어와 프레임워크를 지원합니다.

OpenShift를 사용해 보려면 어떻게 하지?

RedHat에 개인 계정으로 등록하고, OpenShift를 학습, 데모를 사용해볼 수 있습니다.
온라인 트레이닝은 https://training-lms.redhat.com/ 에서 볼 수 있습니다.
학습 과정명은 'Red Hat OpenShift I: Containers & Kubernetes (DO180) v4.10'이며, 코스 ID는 DO180 입니다.
과정에 등록하면 Xeon Gold 1 core 환경을 제공해 주니까, 여기서 OpenShift를 사용해 보고 학습할 수 있습니다.


OpenShift Local 이라는 것을 데스크탑에 설치하면, 로컬 환경에서 테스트 해볼 수 있습니다.
Local 이라는 이름 때문에 가벼운 로컬 실행형이라고 생각했었는데, 직접 실행해 보니 생각보다 무겁네요.
OpenShift Local을 처음 구동 시켰을 때는 5GB 메모리를 소비하고 있다가, 시간이 지날수록 점점 늘어납니다.
약 3시간이 지난 시점에서, 7GB 까지 늘었습니다.
그냥 crc start 명령어 실행한 다음 아무것도 안 했는데 말입니다? (메모리 누수인가?)


OpenShift 관련 자격증은 뭐가 있지?

'Red Hat Certified Specialist in Containers and Kubernetes exam'이 있습니다.

이 자격증의 대상은 다음과 같습니다.
-애플리케이션을 컨테이너 화하려는 개발자
-컨테이너 기술 사용을 고려 중인 아키텍트
-Kubernetes 및 Red Hat OpenShift 사용을 고려 중인 SRE 엔지니어 등

이 시험은 직접 작업을 수행해야 하는 핸즈온 시험입니다.


그래서.. 컨테이너, 쿠버네티스, 오픈시프트 차이점이 뭐지?

컨테이너는 런타임 격리 기술 중에 하나입니다.
대표적인 컨테이너 기술 중에는 Docker가 있습니다.

쿠버네티스는, 수많은 컨테이너들을 조화롭게 조정할 수 있는 '컨테이너 오케스트레이션 도구'입니다.

오픈시프트는, 쿠버네티스 기반 위에 부가 기능들을 더해놓은, RedHat이 제공하는 서비스입니다.


세 줄 요약

  • 컨테이너는 격리 환경.
  • 쿠버네티스는 컨테이너를 더 쉽게 다루게 해 주는 도구.
  • 오픈시프트는, 쿠버네티스에 여러 가지 기능들을 덧붙인, RedHat의 제품.

EOF

반응형