도커 스웜, 쿠 버네 티스, 메 소스 및 코어 OS 함대
나는이 모든 것들에 대해 비교적 새로운 것이지만, 나열된 기술들 사이에서 명확한 그림을 얻는 데 어려움을 겪고있다.
그러나 이들 모두는 다른 문제를 해결하려고 노력하지만 공통점이 있습니다. 나는 공통점이 무엇이고 무엇이 다른지를 이해하고 싶습니다. 소수의 조합이 잘 맞을 것입니다. 그렇다면 무엇입니까?
나는 그들 중 몇 가지를 질문과 함께 나열하고 있지만 누군가가 그들 모두를 자세히 나열하고 질문에 대답하면 좋을 것입니다.
쿠 버네 티스 vs 메 소스 :
이 링크
차이점에 대한 좋은 통찰력을 제공하지만 Kubernetes가 Mesos 위에서 실행 해야하는 이유를 이해할 수 없습니다. 두 개의 오픈 소스 솔루션을 함께 사용하는 것과 관련이 있습니까?
쿠 버네 티스 vs 코어 -OS 함대 :
쿠 버네 티스를 사용하는 경우 함대가 필요합니까?
Docker-Swarm은 위의 모든 사항에 어떻게 적용됩니까?
공개 : 저는 Kubernetes의 수석 엔지니어입니다.
Mesos와 Kubernetes는 주로 클러스터 응용 프로그램 실행의 유사한 문제를 해결하는 데 목표를두고 있으며, 서로 다른 이력과 문제 해결 방법이 있습니다.
Mesos는 매우 일반적인 스케줄링에 초점을 맞추고 여러 스케줄러를 연결합니다. 이는 Hadoop 및 Marathon과 같은 시스템이 동일한 스케줄링 환경에서 공존 할 수 있음을 의미합니다. Mesos는 컨테이너 실행에 덜 집중합니다. 메소는 컨테이너에 대한 광범위한 관심 이전에 존재했으며 컨테이너를 지원하기 위해 부분적으로 리팩터링되었습니다.
이와 반대로 Kubernetes는 처음부터 컨테이너에서 분산 응용 프로그램을 구축하기위한 환경으로 설계되었습니다. 여기에는 핵심 프리미티브로 복제 및 서비스 검색을위한 프리미티브가 포함되어 있으며 Mesos의 프레임 워크를 통해 추가됩니다. Kubernetes의 주요 목표는 분산 시스템을 구축, 실행 및 관리하기위한 시스템입니다.
함대는 하위 수준의 작업 배포자입니다. 클러스터 시스템을 부트 스트랩하는 데 유용합니다. 예를 들어 CoreOS는이를 사용하여 kubernetes 에이전트 및 바이너리를 kubernetes 클러스터를 가동시키기 위해 클러스터의 시스템에 배포합니다. 실제로 동일한 분산 응용 프로그램 개발 문제를 해결하기위한 것이 아니며 클러스터의 systemd / init.d / upstart와 비슷하다고 생각하십시오. kubernetes를 실행하는 경우 필요하지 않으며 다른 도구 (예 : Salt, Puppet, Ansible, Chef 등)를 사용하여 동일한 이진 배포를 수행 할 수 있습니다.
Swarm은 Docker가 기존 Docker API를 확장하여 시스템 클러스터를 단일 Docker API처럼 보이도록하기위한 노력입니다. 기본적으로 Google 및 다른 곳에서의 경험은 노드 API가 클러스터 API에 충분하지 않다는 것을 나타냅니다. : 당신은 여기에 논의의 무리를 볼 수 있습니다 https://github.com/docker/docker/pull/8859 여기 : https://github.com/docker/docker/issues/8781
희망이 도움이됩니다! 더 이야기하고 싶다면 IRC @ # google-containers에 참여하십시오.
가장 간단한 대답은 간단한 대답이 없다는 것입니다. 컨테이너의 강력한 성능, 특히 Docker는 "컨테이너 스케줄링 및 오케스트레이션"에 대한 강력한 진공 상태를 유지했습니다. 실제로 이는 일부 수준에서 조화를 이룰 수 있지만 경쟁의 특정 측면에서 작동 할 수있는 많은 기술이 있다는 것을 의미합니다. 예를 들어 Kubernetes는 컴퓨팅 클러스터에서 컨테이너를 배포하고 관리하기위한 원 스톱 상점으로 사용할 수 있지만 (Google이 원래 설계 한대로) Fleet가 CoreOS에서 제공하는 탄력성 계층을 사용하여 함대 꼭대기에 앉을 수도 있습니다.
이 Google 비디오는 Kubernetes가 완벽한 컨테이너 컨테이너 스케일링 솔루션이 아니라 시작부터 좋은 진술이라고 말합니다 . 같은 방식으로 어떤 단계에서 Apache Mesos가 Marathon이 아닌 Kubernetes와 함께 작동 할 수 있지만 Marathon이 Kubernetes와 동일한 역할을 수행하는 것처럼 보일 수 있습니다. 내가 읽은 어딘가에서 이것들이 같은 노력의 일부가 될 수 있다고 생각하지만, 나는 그것에 대해 틀릴 수 있습니다-그것은 실제로 Mesosphere의 전략적 방향과 Kubernetes 원칙의 채택에 관한 것입니다.
DockerCon 기조 연설에서 Solomon Hykes는 Swarm이 많은 오케스트레이션 및 스케줄링 프레임 워크에 공통 인터페이스를 제공 할 수있는 계층이라고 제안했습니다. 내가 볼 수 있듯이 Swarm은 Deis와 같은 일부 기존 컨테이너 워크 플로 프레임 워크와 함께 작업하면서도 부드러운 Docker 배포 워크 플로를 제공하도록 설계되었지만 Mesos와 같은 "무거운"배포 및 리소스 관리를 수행 할 수있을만큼 유연합니다.
이것이 도움이되기를 바랍니다-이것은 거대한 게시물이 될 수 있습니다. 핵심은 이것이 젊고 진화하는 서비스이며 병합되어 상호 운용성이 될 것이지만, 향후 12 개월 동안 서비스가 어떻게 작동하는지 확인해야한다고 생각합니다. 문제에 대해 매우 영리한 사람들이 있으므로 미래는 매우 밝게 보입니다.
내가 이해하는 한 :
Mesos, Kubernetes 및 Fleet는 모두 매우 비슷한 문제를 해결하려고 노력하고 있습니다. 아이디어는 개발자가 모든 하드웨어를 추상화하고 '클러스터 관리 도구'가이를 모두 정리한다는 것입니다. 그런 다음 클러스터에 컨테이너를 제공하고 정보를 제공하고 (영구적으로 실행 상태를 유지하고, X가 발생하는 경우 확장) 클러스터 관리자가이를 수행하기 만하면됩니다.
Mesos를 사용하면 모든 클러스터 관리가 수행되지만 스케줄러는 포함되지 않습니다. 스케줄러는 비트입니다.이 프로세스에는 2 개의 procs와 512MB RAM이 필요합니다. 무료로 시스템을 가지고 있으므로 해당 시스템에서 실행할 것입니다. Mesos : Marathon 및 Chronos에 사용할 수있는 플러그인 스케줄러가 있으며 직접 작성할 수 있습니다. 이를 통해 리소스 배포 및 클러스터 확장 등의 많은 기능을 사용할 수 있습니다.
함대와 쿠 버네 티스는 이런 종류의 세부 사항을 추상화하는 것처럼 보입니다 (따라서 기본적으로 자신의 스케줄러를 작성할 필요가 없습니다). 즉, 작업을 정의하고 Fleet 또는 Kubernetes에서 정의한 형식 / 방법으로 제출 한 다음 작업 (컨테이너)을 대신하여 예약해야합니다.
따라서 Mesos를 사용하면 자체 스케줄러를 작성하는 데 약간의 작업이 필요할 수 있지만 필요한 경우 더 많은 유연성을 제공 할 수 있습니다.
Kubernetes를 Mesos에서 실행한다는 아이디어는 Kubernetes가 Mesos의 스케줄러 역할을한다는 것입니다. 개인적으로 이것은 이것이 다른 것을 스스로 실행하는 데 어떤 이점이 있는지 잘 모르겠습니다 (누군가가 뛰어 들어 설명 할 것입니다!)
MikeB가 말했듯이. 그것은 초창기이며, 모두 아마존의 ECS를 계속 지켜봐야하므로 경쟁 표준이 많고 중복이 많습니다!
나는 실제로 그것에 대해 많은 경험이 없기 때문에 Docker swarm에 대해서는 언급하지 않았습니다.
2017 년 이후에 오는 사람은 더 이상 사용되지 않습니다. 더 이상 사용하지 마십시오.
함대 문서에 따르면 "함대는 더 이상 CoreOS에서 적극적으로 개발하거나 유지 관리하지 않습니다"라고 말하고 컨테이너 오케스트레이션 : 집합 에서 Kubernetes로 이동 합니다. 함대는 컨테이너 Linux ( 이전의 CoreOS Linux ) 에서 제거 되어 Kubernetes kubelet (에이전트)으로 대체되었습니다. 이는 Tectonic (Kubernetes 배포판)을 주요 제품 으로 제공하려는 기업 의 선구자 와 일치했습니다 .
참고URL : https://stackoverflow.com/questions/27640633/docker-swarm-kubernetes-mesos-core-os-fleet
'IT story' 카테고리의 다른 글
생성자 함수가 Promise를 반환하도록하는 것은 나쁜 습관입니까? (0) | 2020.06.15 |
---|---|
데이터베이스와 스키마의 차이점 (0) | 2020.06.15 |
C #에서 동등한 Java Map (0) | 2020.06.15 |
Windows에서 makefile을 실행하는 방법은 무엇입니까? (0) | 2020.06.15 |
R 함수에서 선택적 인수를 지정하는 "올바른"방법 (0) | 2020.06.15 |