Kubernetes("CUBE-A-NET-IS"로 발음)는 Docker와 같은 컨테이너 애플리케이션을 관리하는 데 도움이 되는 오픈 소스 플랫폼입니다. 여러 호스트에서 이러한 컨테이너를 자동화하거나 확장하려는 경우 Kubernetes는 배포 속도를 높일 수 있습니다. 이를 위해 Kubernetes API 또는 Kubernetes에서 실행되는 타사 확장과 같은 내부 구성 요소를 사용할 수 있습니다.
이 문서는 Kubernetes의 기본 개념과 Kubernetes 서비스를 제공하는 공급업체 및 클라우드 제공업체(예:Azure 및 Google Cloud)를 통해 서버 시장에서 왜 그렇게 큰 변화를 일으키는지 이해하는 데 도움이 될 것입니다.
Kubernetes:간략한 역사
Kubernetes는 오픈 소스 커뮤니티에 대한 Google의 선물 중 하나입니다. 컨테이너 플랫폼은 10년 넘게 Google 내부 프로젝트인 Borg의 일부였습니다. Borg를 사용하면 Google에서 클러스터 전반의 다양한 애플리케이션에서 수백, 수천 개의 작업("Borglet"이라고 함)을 관리할 수 있습니다. 그 목표는 런타임 기능의 고가용성을 보장하면서 머신(및 가상 머신)을 효율적으로 활용하는 것이었습니다.
동일한 아키텍처가 고가용성을 효율적으로 보장하는 방법을 찾는 다른 회사들에게 인기가 있었습니다. 2015년 어딘가에서 Kubernetes 1.0이 나오자 마자 Google은 기술에 대한 통제권을 포기했습니다. Kubernetes는 이제 Linux Foundation의 일부인 CNCF(Cloud Native Computing Foundation)라는 기반과 함께 합니다.
Kubernetes 작동 방식
Borg 프로젝트의 아이디어를 차용하여 "Borglets"는 컨테이너를 수용하는 스케줄러 단위인 "포드"로 바뀌었습니다. 기본적으로 컨테이너에 CPU, 메모리 또는 스토리지가 필요할 때마다 그림에 나타나는 개별 IP 주소가 있습니다.
포드는 트래픽을 라운드 로빈 형식으로 로드 밸런싱하여 고가용성을 보장합니다. 또한, 이들은 "미니언"이라고도 하는 "작업자 노드"라는 머신(또는 가상 머신) 내부에 있습니다. 이 시점부터 "마스터 노드"는 Kubernetes API를 사용하여 컨테이너화를 조정하여 전체 클러스터를 제어합니다. Docker는 이미지를 다운로드하고 컨테이너를 시작할 수 있는 각 작업자 노드에서 실행할 수 있습니다.
Kubernetes 클러스터에서 API 연결을 얻으려면 kubectl
이라는 CLI 구문 사용. 이것은 마스터 노드가 작업자 노드에 제공하는 모든 명령을 단독으로 실행하기 때문에 매우 중요한 명령입니다. kubectl을 마스터하려면 약간의 학습이 필요하지만 일단 배우면 Kubernetes 클러스터 활용을 시작할 수 있습니다. Kubernetes와 Docker는 Go 프로그래밍 언어로 작성되었습니다.
응용 프로그램
Kubernetes는 기계 사용의 효율성이 높기 때문에 서버 및 데이터 센터 비용을 크게 낮출 수 있습니다. Kubernetes의 일반적인 애플리케이션은 다음과 같습니다.
- 애플리케이션 서버 관리 . 대부분의 애플리케이션 서버에는 Kubernetes를 사용하여 실행할 수 있는 보안, 구성 관리, 업데이트 등이 필요합니다.
- 자동 출시 및 롤백 . Kubernetes를 사용하면 여러 엔드 노드에서 제품 롤아웃 또는 롤백에 대해 걱정할 필요가 없습니다.
- 상태 비저장 앱 배포 . 이제 웹 애플리케이션을 원격으로 제어할 수 있습니다. 예를 들어 Kubernetes는 상태 비저장 애플리케이션 배포를 사용하여 Nginx 서버를 실행하는 데 도움이 될 수 있습니다.
- 상태 저장 앱 배포 . Kubernetes는 MySQL 데이터베이스를 실행할 수 있습니다.
- API 객체 저장 . 다양한 스토리지 요구 사항에 대해 Kubernetes는 컨테이너 원칙을 사용하기 때문에 이상적인 스토리지를 보장합니다.
- 즉시 사용 가능 . Kubernetes는 서비스 검색, 로깅, 모니터링 및 인증과 같은 즉시 사용 가능한 애플리케이션에 매우 유용합니다.
- IoT 애플리케이션 . Kubernetes는 대규모 확장 기능으로 인해 IoT에서 점점 더 많이 사용되고 있습니다.
- 어디서나 실행 . 여행 가방 내부를 포함하여 어디에서나 Kubernetes를 실행할 수 있습니다.
요약
Kubernetes의 목표는 컴퓨팅 리소스를 최대한 활용하는 것입니다. 여러 호스트에서 컨테이너를 오케스트레이션할 수 있으므로 최종 노드에는 리소스 문제나 장애가 발생하지 않습니다. 마스터 노드에서 한 번만 명령을 내리면 되기 때문에 자동으로 확장하는 데 도움이 되며 애플리케이션을 확장하는 것은 혁신적입니다.
Kubernetes에 대해 자세히 알아보려면 자습서가 포함된 공식 웹사이트를 방문하세요.