Kubernetes를 사용해야하는 4 가지 이유

Sirish Raghuram은 Platform9 Systems의 공동 창립자이자 CEO입니다.

대부분의 최신 소프트웨어 개발자가 증명할 수 있듯이 컨테이너는 물리적 및 가상 인프라에서 클라우드 네이티브 애플리케이션을 실행할 수있는 훨씬 더 많은 유연성을 제공했습니다. 컨테이너는 애플리케이션을 구성하는 서비스를 패키징하고 개발 / 테스트 및 프로덕션 사용을 위해 다양한 컴퓨팅 환경에서 이식 가능하도록합니다. 컨테이너를 사용하면 수요 급증에 맞춰 애플리케이션 인스턴스를 빠르게 늘리는 것이 쉽습니다. 컨테이너는 호스트 OS의 리소스를 사용하기 때문에 가상 머신보다 훨씬 가볍습니다. 즉, 컨테이너는 기본 서버 인프라를 매우 효율적으로 사용합니다.

여태까지는 그런대로 잘됐다. 그러나 컨테이너 런타임 API는 개별 컨테이너를 관리하는 데 적합하지만 여러 호스트에 분산 된 수백 개의 컨테이너를 구성 할 수있는 애플리케이션을 관리하는 데는 매우 부적절합니다. 예약,로드 밸런싱 및 배포와 같은 작업을 위해 컨테이너를 관리하고 외부 세계와 연결해야합니다. 여기에서 Kubernetes와 같은 컨테이너 오케스트레이션 도구가 자체적으로 제공됩니다.

컨테이너화 된 애플리케이션을 배포, 확장 및 관리하기위한 오픈 소스 시스템 인 Kubernetes는 컴퓨팅 클러스터에 대한 컨테이너 예약 작업을 처리하고 사용자가 의도 한대로 실행되도록 워크로드를 관리합니다. 쿠 버네 티스는 사후 고려 사항으로 운영에 추가하는 대신 소프트웨어 개발 및 운영을 설계에 따라 통합합니다. 선언적 인프라에 구애받지 않는 구조를 사용하여 애플리케이션이 구성되는 방식, 상호 작용하는 방식, 관리되는 방식을 설명함으로써 Kubernetes는 최신 소프트웨어 시스템의 운영 성을 대폭 향상시킬 수 있습니다.

Kubernetes는 프로덕션 환경에서 컨테이너를 실행 한 자체 경험을 기반으로 Google이 구축했으며, Google의 참여 덕분에 많은 성공을 거두었습니다. Google은 지구상에서 가장 재능있는 소프트웨어 개발자를 보유하고 있으며 규모에 따라 가장 큰 소프트웨어 서비스를 실행합니다. 이 조합을 통해 Kubernetes는 거의 모든 조직의 확장 요구 사항을 충족 할 수있는 견고한 플랫폼이되었습니다. 이 기사에서는 Kubernetes가 중요한 이유와 이것이 DevOps 팀에게 중요한 진전을 이루는 이유를 설명합니다.

관련 비디오 : Kubernetes 란 무엇입니까?

90 초 분량의이 동영상에서는 기술 발명가 중 한 명인 Heptio의 창립자이자 CTO 인 Joe Beda로부터 컨테이너 식 애플리케이션 자동화를위한 오픈 소스 시스템 인 Kubernetes에 대해 알아 봅니다.

오늘날을위한 인프라 프레임 워크

요즘 개발자들은 전용 온 프레미스 서버, 가상화 된 프라이빗 클라우드, AWS 및 Azure와 같은 퍼블릭 클라우드를 비롯한 여러 운영 환경에서 실행되는 애플리케이션을 작성해야합니다. 전통적으로 애플리케이션과이를 지원하는 도구는 기본 인프라와 밀접하게 연결되어 있으므로 잠재적 인 이점에도 불구하고 다른 배포 모델을 사용하는 데 비용이 많이 들었습니다. 이는 애플리케이션이 특정 네트워크 아키텍처와 관련된 성능 문제를 포함하여 여러 측면에서 특정 환경에 종속됨을 의미합니다. 독점적 오케스트레이션 기술과 같은 클라우드 공급자 별 구성 준수 특정 백엔드 스토리지 시스템에 대한 종속성.

PaaS는 이러한 문제를 해결하려고하지만 종종 프로그래밍 언어 및 애플리케이션 프레임 워크와 같은 영역에서 엄격한 요구 사항을 부과하는 대가를 치릅니다. 따라서 PaaS는 많은 개발 팀에게 제한이 없습니다.

Kubernetes는 제한없이 컨테이너에 핵심 기능을 제공하여 인프라 종속을 제거합니다. 포드 및 서비스를 포함한 Kubernetes 플랫폼 내의 기능 조합을 통해이를 달성합니다.

모듈화를 통한 더 나은 관리

컨테이너를 사용하면 문제를 명확하게 구분하여 애플리케이션을 더 작은 부분으로 분해 할 수 있습니다. 개별 컨테이너 이미지에 대해 제공되는 추상화 계층을 통해 분산 애플리케이션이 구축되는 방식을 근본적으로 재고 할 수 있습니다. 이 모듈 식 접근 방식을 사용하면 각각 특정 컨테이너를 담당하는 더 작고 집중적 인 팀이 더 빠르게 개발할 수 있습니다. 또한 종속성을 격리하고 잘 조정 된 작은 구성 요소를 더 많이 사용할 수 있습니다.

그러나 이것은 컨테이너만으로는 달성 할 수 없습니다. 이러한 모듈 식 부품을 통합하고 조정하기위한 시스템이 필요합니다. Kubernetes는 부분적으로 Pod (일반적으로 단일 애플리케이션으로 제어되는 컨테이너 모음)를 사용하여이를 달성합니다. 컨테이너는 파일 시스템, 커널 네임 스페이스 및 IP 주소와 같은 리소스를 공유합니다. 이러한 방식으로 컨테이너를 배치 할 수 있도록 허용함으로써 Kubernetes는 너무 많은 기능을 단일 컨테이너 이미지에 넣는 유혹을 제거합니다.

Kubernetes의 서비스 개념은 유사한 기능을 수행하는 포드 모음을 그룹화하는 데 사용됩니다. 검색 가능성, 관찰 가능성, 수평 적 확장 및 부하 분산을 위해 서비스를 쉽게 구성 할 수 있습니다.

대규모 소프트웨어 배포 및 업데이트

Devops는 소프트웨어 빌드, 테스트 및 릴리스 프로세스를 가속화하는 방법으로 등장했습니다. 그 결과 인프라 관리에서 소프트웨어를 대규모로 배포하고 업데이트하는 방법을 관리하는 데 중점을 두었습니다. 대부분의 인프라 프레임 워크는이 모델을 지원하지 않지만 Kubernetes는 부분적으로 Kubernetes 컨트롤러를 통해 지원합니다. 컨트롤러 덕분에 인프라를 사용하여 애플리케이션 수명주기를 쉽게 관리 할 수 ​​있습니다.

Deployment Controller는 여러 복잡한 관리 작업을 단순화합니다. 예를 들면 :

  • 확장 성. 소프트웨어는 처음으로 Pod 전체에서 수평 확장 방식으로 배포 할 수 있으며 배포는 언제든지 확장 또는 축소 할 수 있습니다.
  • 시계. 상태 쿼리 기능을 사용하여 완료, 진행 중 및 실패한 배포를 식별합니다.
  • 시간 절약. 언제든지 배포를 일시 중지하고 나중에 다시 시작합니다.
  • 버전 관리. 최신 버전의 애플리케이션 이미지를 사용하여 배포 된 포드를 업데이트하고 현재 버전이 안정적이지 않은 경우 이전 배포로 롤백합니다.

다른 가능성 중에서 Kubernetes는 현대 애플리케이션 개발자에게 특히 중요한 몇 가지 특정 배포 작업을 단순화합니다. 여기에는 다음이 포함됩니다.

  • 수평 적 자동 확장. Kubernetes 자동 확장 처리는 지정된 리소스 사용량에 따라 (정의 된 한도 내에서) 배포의 포드 수를 자동으로 조정합니다.
  • 지속적 업데이트. Kubernetes 배포에 대한 업데이트는 배포의 포드 전체에서 "롤링 방식"으로 조정됩니다. 이러한 지속적 업데이트는 사용할 수없는 Pod 수와 임시로 존재할 수있는 예비 Pod 수에 대해 사전 정의 된 선택적인 제한으로 작업하는 동안 조정됩니다.
  • 카나리아 배포. 새 배포 버전을 배포 할 때 유용한 패턴은 먼저 이전 버전과 병렬로 프로덕션에서 새 배포를 테스트하고 새 배포를 확장하는 동시에 이전 배포를 축소하는 것입니다.

기존의 모든 기능이 포함 된 PaaS 제품과 달리 Kubernetes는 지원되는 애플리케이션 유형에 대해 넓은 범위를 제공합니다. 애플리케이션 프레임 워크 (예 : Wildfly)를 지시하거나 지원되는 언어 런타임 (Java, Python, Ruby)을 제한하거나 12 단계 애플리케이션 만 제공하거나 '앱'과 '서비스'를 구분하지 않습니다. Kubernetes는 상태 비 저장, 상태 저장 및 데이터 처리 워크로드를 비롯한 다양한 워크로드를 지원합니다. 애플리케이션이 컨테이너에서 실행될 수 있다면 Kubernetes에서 잘 실행되어야합니다.

클라우드 네이티브 앱의 기반 마련

컨테이너, 기타 관리 및 오케스트레이션 도구에 대한 관심을 감안할 때 놀라운 일이 아닙니다. 인기있는 대안으로는 Apache Mesos with Marathon, Docker Swarm, AWS EC2 Container Service (ECS) 및 HashiCorp의 Nomad가 있습니다.

각각 장점이 있습니다. Docker Swarm은 Docker 런타임과 긴밀하게 번들로 제공되므로 사용자는 Docker에서 Swarm으로 쉽게 전환 할 수 있습니다. Mesos with Marathon은 컨테이너에 국한되지 않고 모든 종류의 애플리케이션을 배포 할 수 있습니다. AWS ECS는 현재 AWS 사용자가 더 쉽게 액세스 할 수 있습니다. 그러나 Kubernetes 클러스터는 EC2에서 실행되고 Amazon Elastic Block Storage, Elastic Load Balancing, Auto Scaling 그룹 등과 같은 서비스와 통합 될 수 있습니다.

이러한 프레임 워크는 특징과 기능면에서 서로 복제되기 시작했지만 Kubernetes는 아키텍처, 혁신 및 주변의 대규모 오픈 소스 커뮤니티로 인해 여전히 매우 인기가 있습니다.

Kubernetes는 팀이 최신 소프트웨어 개발 요구 사항에 보조를 맞출 수 있기 때문에 devops의 획기적인 발전을 보여줍니다. Kubernetes가없는 상황에서 팀은 종종 자체 소프트웨어 배포, 확장 및 업데이트 워크 플로를 스크립팅해야했습니다. 일부 조직은 이러한 작업을 혼자 처리하기 위해 대규모 팀을 고용합니다. Kubernetes를 사용하면 컨테이너에서 최대한의 유틸리티를 도출하고 클라우드 별 요구 사항과 관계없이 어디서나 실행할 수있는 클라우드 네이티브 애플리케이션을 구축 할 수 있습니다. 이것은 우리가 기다려 왔던 애플리케이션 개발 및 운영을위한 효율적인 모델입니다.

New Tech Forum은 새로운 엔터프라이즈 기술을 전례없이 깊이 있고 폭넓게 탐구하고 논의 할 수있는 장을 제공합니다. 선택은 우리가 중요하고 독자들에게 가장 큰 관심을 가지고 있다고 생각하는 기술을 선택하여 주관적입니다. 는 게시를위한 마케팅 자료를 허용하지 않으며 제공되는 모든 콘텐츠를 편집 할 권리를 보유합니다. 모든 문의 사항은 [email protected]으로 보내주십시오.