최상의 답변
OpenStack은 IaaS (Infrastructure as a Service) 클라우드입니다. 사용자에게 특정 OS (+ 기타 기능) 기반 이미지를 사용하여 특정 CPU / 메모리 / 디스크 / 네트워크의 시스템을 시작할 수있는 인터페이스를 제공합니다. 최종 사용자는 Openstack이 시스템 / vm을 생성 한 후 시스템 사용 방법을 결정할 수 있습니다. 그는 선택한 응용 프로그램 등을 설치하고 작업 부하를 실행할 수 있습니다. OpenStack은 여러 가상화 하이퍼 바이저를 지원합니다.
OpenShift는 PaaS (Platform as a Service) 클라우드입니다. 사용자에게 jboss / python과 같은 애플리케이션 플랫폼을 선택하고 실행할 애플리케이션 특정 코드 / 구성으로 워크로드를 직접 실행할 수있는 인터페이스를 제공합니다. 이것은 container / pods를 사용하여 구현됩니다. 테스트 / 인증 된 컨테이너에 Red Hat의 레지스트리를 사용하거나 도커 레지스터 또는 기타 타사 레지스트리를 사용할 수도 있습니다.
답변
대부분이 서로 다르기 때문에 비교할 방법이 없습니다. 다른 것들. 즉, 먼저 이들 각각의 필요성을 정의하고 함께 연결해 보겠습니다.
스택의 맨 아래부터 시작하겠습니다. 서버를 실행하려면 인프라가 필요합니다. 무엇을 가지고 갈 수 있습니까? DigitalOcean과 같은 VPS 공급자를 사용하거나 AWS를 사용할 수 있습니다.
기술적이지 않은 이유로 AWS를 사용할 수없는 경우 어떻게해야합니까? 예를 들어 내가 저장하는 데이터와 내가 운영하는 서버가 내가 서비스를 제공하는 고객과 동일한 지역에 있고 AWS에 동일한 지역이 없다는 규정 준수가 있습니까?
이것은 OpenStack 이 등장합니다. 인프라를 관리하기위한 플랫폼입니다. 베어 메탈 데이터 센터에서 실행할 수있는 AWS의 오픈 소스 구현이라고 생각하십시오.
다음으로 스택 위로 이동합니다. 우리는 앱을 패키징하고 배송하는 효율적인 방법을 원합니다. 고정 된 양의 자동차, 석탄, 면화를 A 지점에서 B 지점으로 옮기려는 실제 사례를 생각해보십시오. 우리는 배에 모든 것을 쌓아서 보내지 않습니다. 우리는 용기를 사용합니다. 컨테이너는 상품을 적절하게 격리하고 포장하여 효율적으로 이동할 수 있도록하는 표준화 된 단위입니다.
출처 : Containers on a cargo ship photo by Axel Ahoi (@axelahoi) on Unsplash
Docker 는 물리적 컨테이너에 해당하는 소프트웨어입니다. 앱에 대한 격리 및 패키징을 제공합니다. 쉽게 확장 할 수 있습니다. 많은 컨테이너화 기술이 있지만 Docker가 지배적 인 기술입니다.
Docker가 많은 이점을 제공하고 더 많은 것을 사용하기 시작합니다. 애플리케이션을 “컨테이너화”하여 프로덕션에 제공합니다. 곧 새로운 문제에 직면하게됩니다. 이러한 모든 컨테이너를 효율적으로 관리하는 방법은 무엇입니까? 컨테이너를 오케스트레이션 하려면 어떻게해야합니까?
소스 : Unsplash에서 Manuel Nägeli (@gwundrig)의 오케스트라 리허설 사진
컨테이너가 애초에 오케스트레이션이 필요한 이유는 무엇입니까? OS를 실행하는 데스크톱 컴퓨터에서이 답변을 읽고있을 가능성이 있습니다. 브라우저를 열면 OS가 브라우저 프로세스를 위해 메모리 및 컴퓨팅 성능과 같은 리소스를 할당합니다. 잠시 후 브라우저 탭을 전환하고 잠시 후 새 프로그램을 엽니 다. OS는 모든 프로세스가 필요한 컴퓨팅 리소스를 공정하게 공유 할 수 있도록 뒤에서 많은 노력을 기울입니다. 컨테이너 수준에서 OS와 같은 것이 필요합니다. 이것이 바로 Kubernetes 가 수행하는 역할입니다.
Kubernetes는 “이봐,”와 같은 컴퓨팅 리소스 (노드라고 함) 및 작업 부하를 제공합니다. 이 PHP 앱을 실행하기 위해 3 개의 컨테이너를 만들어주세요.”그리고 Kubernetes는 내 기존 컴퓨팅 리소스 위에 해당 컨테이너를 만들기 시작했습니다. Docker swarm 및 Mesos와 같은 다른 컨테이너 오케스트레이션 솔루션도 있습니다.
Kubernetes는 클러스터에 Linux 커널이 운영 체제에 미치는 영향입니다. 커널이 OS의 프로세스 만 관리하는 것처럼 Kubernetes는 컨테이너 만 관리합니다. 본격적인 OS를 실행하려면 사용자, 권한, 장치 드라이버 및 기타 항목과 같은 더 많은 것이 필요합니다. 비슷한 맥락에서 Kubernetes 자체는 유용성이 제한적입니다. 사양 또는 워크로드를 제공하면 컨테이너를 프로비저닝 할 수 있습니다. Kubernetes에 제공하기 전에 컨테이너를 어떻게 빌드합니까? 새 코드를 제공하면 새 Kubernetes 프로비저닝을 어떻게 자동으로 트리거 할 수 있습니까? 이를 위해 Kubernetes 위에 구축 된 많은 솔루션이 있습니다. 필요에 맞게 최적화하고 연결하거나 OpenShift 를 사용할 수 있습니다.
출처 : Present, bow, ribbon and christmas HD photo by Unsplash의 Ben White (@benwhitephotography)
OpenShift는 깔끔하게 패키지화 된 방식으로 베어 Kubernetes 위에 이러한 모든 장점을 결합한 Kubernetes 배포판입니다. OpenShift는 Kubernetes에 대한 것이고 Ubuntu는 Linux 커널에 대한 것입니다. 이는 Kubernetes의 “포크”가 아니라 그 위에 구축됩니다.
Kubernetes 위에 OpenShift가 구축하는 것에 대해 자세히 알아 보려면 다음에서 제 게시물을 확인하십시오. 주제, OpenShift 대 Kubernetes-코딩 기술