쿠버네티스 클러스터(K8s Cluster)란?
Linux® 컨테이너를 실행하는 호스트 그룹을 함께 클러스터링할 수 있으며 쿠버네티스를 통해 이러한 클러스터를 쉽고 효율적으로 관리할 수 있습니다.
쿠버네티스 클러스터는 온프레미스, 퍼블릭, 프라이빗 또는 하이브리드 클라우드 전체로 호스트를 확장할 수 있습니다. 이러한 이유로 쿠버네티스는 Apache Kafka를 통한 실시간 데이터 스트리밍과 같이 신속한 확장을 요하는 클라우드 네이티브 애플리케이션을 호스팅하는 데 이상적인 플랫폼입니다.
쿠버네티스 기여자
쿠버네티스는 원래 Google 엔지니어들이 개발하고 설계한 플랫폼입니다. Google은 초창기에 Linux 컨테이너 기술에 기여했으며 Google 제품이 컨테이너에서 작동하는 방식을 대중에게 공개했습니다. (이는 Google의 클라우드 서비스를 구동하는 기술이기도 합니다.)
Google은 내부 플랫폼인 Borg를 통해 일주일에 20억 개 이상의 컨테이너 배포를 생성합니다. Borg는 쿠버네티스의 전신이었으며 수년 동안 Borg를 개발하는 과정에서 축적된 경험은 쿠버네티스 기술의 주요 원동력이 되었습니다.
쿠버네티스 로고에 있는 7개의 손잡이는 프로젝트의 원래 이름인 'Project Seven of Nine'을 의미합니다.
Red Hat은 쿠버네티스가 출시되기 전부터 Google과 협력하여 개발에 참여한 초기 기업 중 하나였으며 쿠버네티스 업스트림 프로젝트에서 두 번째 주요 기여자가 되었습니다. 2015년에 Google은 새로 설립된 클라우드 네이티브 컴퓨팅 재단(Cloud Native Computing Foundation, CNCF)에 쿠버네티스 프로젝트를 기부했습니다.
향후 쿠버네티스를 사용할 계획이신가요? 여기에서 시작하세요.
쿠버네티스 장점 및 패턴
사용자의 환경에서 쿠버네티스를 사용할 경우 얻을 수 있는 주요 장점은, 특히 클라우드를 위해 애플리케이션 개발을 최적화하는 경우 쿠버네티스를 통해 물리 또는 가상 머신(VM)의 클러스터에서 컨테이너를 예약하고 실행할 수 있는 플랫폼이 확보된다는 것입니다.
더 넓게 보면, 프로덕션 환경에 컨테이너 기반 인프라를 완전히 구현해서 사용할 수 있습니다. 또한 쿠버네티스는 운영 작업 자동화와 관련이 있으므로 다른 애플리케이션 플랫폼 또는 관리 시스템에서 가능한 작업의 상당수를 컨테이너를 사용해 수행할 수 있습니다.
또한 개발자는 쿠버네티스 패턴을 사용하면 쿠버네티스를 런타임 플랫폼으로 사용해 클라우드 네이티브 애플리케이션을 제작할 수 있습니다. 패턴은 쿠버네티스 개발자가 컨테이너 기반 애플리케이션 및 서비스를 빌드하는 데 필요한 툴입니다.
쿠버네티스를 사용하여 수행할 수 있는 작업은 다음과 같습니다.
- 여러 호스트 전반에서 컨테이너를 오케스트레이션합니다.
- 하드웨어를 더욱 효과적으로 활용하여 엔터프라이즈 애플리케이션을 실행하는 데 필요한 리소스를 극대화합니다.
- 애플리케이션 배포 및 업데이트를 제어하고 자동화합니다.
- 스토리지를 마운트 및 추가하여 스테이트풀(stateful) 애플리케이션을 실행합니다.
- 컨테이너화된 애플리케이션과 해당 리소스를 즉시 확장합니다.
- 서비스를 선언적으로 관리함으로써, 배포한 애플리케이션이 항상 의도한 대로 실행되도록 보장합니다.
- 자동 배치, 자동 재시작, 자동 복제, 자동 스케일링 기능으로 애플리케이션 상태를 점검하고 자가 치유(Self-healing)할 수 있습니다.
그러나 쿠버네티스는 다른 프로젝트를 사용해 이러한 오케스트레이션된 서비스 전체를 제공합니다. 다른 오픈소스 프로젝트를 추가하면 쿠버네티스의 기능을 완전히 실현할 수 있습니다. 이를 위해서는 다음과 같은 요소가 필요합니다.
- Docker 레지스트리와 같은 프로젝트를 통한 레지스트리
- OpenvSwitch 및 지능형 엣지 라우팅과 같은 프로젝트를 통한 네트워킹
- Kibana, Hawkular, Elastic과 같은 프로젝트를 통한 텔레메트리
- 멀티테넌시 계층을 갖춘 LDAP, SELinux, RBAC, OAUTH와 같은 프로젝트를 통한 보안
- 설치 및 클러스터 라이프사이클 관리를 위한 Ansible 플레이북이 추가된 자동화
- 인기 있는 애플리케이션 패턴으로 구성된 풍부한 카탈로그를 통한 서비스
Linux 컨테이너 및 컨테이너 오케스트레이션 기술에 대한 소개 과정을 수강하세요. 이 온디맨드 교육 과정을 통해 애플리케이션과 서비스를 컨테이너화한 다음 Docker를 사용하여 테스트하고, Red Hat® OpenShift®를 사용하여 쿠버네티스 클러스터에 배포하는 방법을 알아볼 수 있습니다.
쿠버네티스 사용법
대부분의 기술과 마찬가지로 쿠버네티스 기술은 알맞은 초보자 가이드를 필요로 합니다. 쿠버네티스를 쉽게 이해할 수 있도록 더 일반적인 용어로 분류하여 설명해보겠습니다.
컨트롤 플레인: 쿠버네티스 노드를 제어하는 프로세스의 컬렉션입니다. 여기에서 모든 태스크 할당이 시작됩니다.
노드: 컨트롤 플레인에서 할당된 요청 태스크를 수행하는 머신입니다.
포드: 단일 노드에 배포된 하나 이상의 컨테이너 그룹입니다. 포드에 있는 모든 컨테이너는 IP 주소, IPC, 호스트 이름, 기타 리소스를 공유합니다. 포드는 기본 컨테이너에서 네트워크와 스토리지를 추상화합니다. 이렇게 하면 클러스터에서 컨테이너를 더 쉽게 이동할 수 있습니다.
복제 컨트롤러: 이 컨트롤러는 클러스터에서 실행되어야 하는 동일한 포드 복사본의 개수를 제어합니다.
서비스: 포드에서 작업 정의를 분리합니다. 쿠버네티스 서비스 프록시는 클러스터에서 다른 위치로 이동된 경우나 교체된 경우에 상관없이 서비스 요청을 적절한 포드로 자동 수신합니다.
Kubelet: 이 서비스는 노드에서 실행되며 컨테이너 매니페스트를 읽고, 정의된 컨테이너가 시작되어 실행 중인지 확인합니다.
kubectl: 쿠버네티스의 커맨드 라인 구성 툴입니다.
쿠버네티스의 작동 방식
작동 중인 쿠버네티스 배포를 클러스터라고 합니다. 쿠버네티스 클러스터는 두 부분인 컨트롤 플레인과 컴퓨팅 머신(또는 노드)으로 시각화할 수 있습니다.
각 노드는 자체 Linux® 환경이며 물리 또는 가상 머신일 수 있습니다. 각 노드는 컨테이너로 이루어진 포드(Pod)를 실행합니다.
컨트롤 플레인은 어느 애플리케이션을 실행하고 애플리케이션이 어느 컨테이너 이미지를 사용할지와 같이 클러스터를 원하는 상태로 유지 관리합니다. 컴퓨팅 머신은 애플리케이션과 워크로드를 실제로 실행합니다.
쿠버네티스는 운영 체제(예: Red Hat® Enterprise Linux®)를 기반으로 실행되며, 노드에서 실행되는 컨테이너의 포드와 상호 작용합니다.
쿠버네티스 컨트롤 플레인은 관리자(또는 DevOps팀)로부터 명령을 전달받고 해당 지침을 컴퓨팅 머신에 전달합니다.
이 전달은 여러 서비스와 연계하여 태스크에 가장 적합한 노드를 자동으로 결정합니다. 그런 다음 요청된 작업을 수행하기 위해 해당 노드에 리소스를 할당하고 포드를 할당합니다.
쿠버네티스 클러스터의 원하는 상태는 실행해야 할 애플리케이션이나 워크로드, 함께 사용하는 이미지, 사용 가능하도록 설정할 리소스, 기타 구성 세부 사항을 정의합니다.
인프라 측면에서 보면 컨테이너를 관리하는 방식에는 거의 변화가 없습니다. 컨테이너를 더 높은 수준에서 제어하므로 각각의 개별 컨테이너 또는 노드를 세분화하여 관리하지 않고도 더 효과적으로 제어할 수 있습니다.
작업에는 쿠버네티스 구성, 노드, 포드, 그 안의 컨테이너에 대한 정의가 포함됩니다. 쿠버네티스는 컨테이너 오케스트레이션을 처리합니다.
쿠버네티스를 원하는 곳에서 실행할 수 있습니다. 즉, 베어 메탈 서버, 가상 머신, 퍼블릭 클라우드 제공업체, 프라이빗 클라우드, 하이브리드 클라우드 환경 등에서 실행할 수 있습니다. 쿠버네티스의 주요 장점 중 하나는 다양한 종류의 인프라에서 작동한다는 것입니다.
쿠버네티스 도커(Kubernetes Docker) 차이
Docker는 쿠버네티스가 오케스트레이션하는 컨테이너 런타임으로 사용할 수 있습니다. 쿠버네티스가 노드에 대해 포드를 예약하면 해당 노드의 kubelet이 지정된 컨테이너를 실행하도록 Docker에 명령합니다.
그런 다음 kubelet은 Docker에서 해당 컨테이너의 상태를 지속적으로 수집하고 해당 정보를 컨트롤 플레인에 집계합니다. Docker는 컨테이너를 해당 노드로 가져와서 해당 컨테이너를 시작하고 중지합니다.
Docker와 함께 쿠버네티스를 사용할 때 차이가 있다면 관리자가 모든 컨테이너의 모든 노드에서 작업을 직접 수행하는 것이 아니라 자동화된 시스템이 이러한 작업을 Docker에 요청한다는 것입니다.
쿠버네티스 네이티브 인프라란?
오늘날 대부분의 온프레미스 쿠버네티스 배포는 기존 가상 인프라에서 실행되며, 베어 메탈 서버에서 배포되는 사례가 증가하고 있습니다. 이는 데이터센터가 진화하면서 자연스러운 현상입니다. 쿠버네티스는 컨테이너화된 애플리케이션을 위한 배포 및 라이프사이클 관리 툴 역할을 하며, 인프라 리소스를 관리하는 데는 별도의 툴이 사용됩니다.
하지만 인프라 계층 등 컨테이너를 지원하기 위해 처음부터 데이터센터를 설계했다면 어떨까요?
먼저 베어 메탈 서버와 소프트웨어 정의 스토리지(쿠버네티스에서 배포 및 관리됨)로 직접 시작하여 컨테이너에서와 같은 자가 설치, 자가 확장, 자가 치유(Self-healing)의 장점을 인프라에 제공할 수 있습니다. 이것이 쿠버네티스 네이티브 인프라의 비전입니다.
쿠버네티스 네이티브 인프라의 장점
개발자와 IT 운영팀 간의 마찰을 줄이기 위한 퍼블릭 클라우드 민첩성과 온프레미스 간편성
VM 실행을 위한 별도의 하이퍼바이저 계층이 필요하지 않으므로 비용 효율성 개선
쿠버네티스에서 컨테이너, 서버리스 애플리케이션, VM을 배포하여 애플리케이션과 인프라를 모두 확장할 수 있는 할 수 있는 개발자 유연성
쿠버네티스를 온프레미스 및 퍼블릭 클라우드 전반에 공통 계층으로 사용하는 하이브리드 클라우드 확장성
Red Hat의 쿠버네티스 네이티브 인프라 실현 방식
Red Hat OpenShift
Red Hat OpenShift는 쿠버네티스 오퍼레이터와 함께 전체 스택 자동화 기능을 제공하여 비쿠버네티스 네이티브 인프라의 설치 및 라이프사이클 관리를 자동화합니다.
Red Hat OpenShift Data Foundation
Red Hat OpenShift Data Foundation은 쿠버네티스용 Rook 스토리지 오퍼레이터를 사용하여 동적으로 프로비저닝된 스토리지를 제공합니다.
컨테이너 네이티브 가상화
Red Hat OpenShift의 컨테이너 네이티브 가상화는 쿠버네티스에서 VM을 지원합니다. 이는 KubeVirt라고 하는 업스트림 오픈소스 커뮤니티 프로젝트를 기반으로 합니다.
Metal3
Metal3는 쿠버네티스를 사용하는 베어 메탈 서버의 완전 자동화된 배포 및 라이프사이클 관리를 위한 업스트림 프로젝트입니다.
쿠버네티스가 필요한 이유는 무엇일까요?
쿠버네티스는 컨테이너화된 레거시 및 클라우드 네이티브 애플리케이션은 물론 마이크로서비스로 리팩토링되는 애플리케이션을 제공하고 관리하는 데 도움이 될 수 있습니다.
개발팀이 변화하는 비즈니스 요구 사항을 충족하려면 새로운 애플리케이션과 서비스를 신속하게 구축할 수 있어야 합니다. 클라우드 네이티브 개발은 컨테이너의 마이크로서비스에서부터 시작하는데, 이 때문에 개발 속도가 더 빨라지고 기존 애플리케이션을 더 쉽게 변환하고 최적화할 수 있습니다.
이 웨비나 시리즈를 통해 애플리케이션을 구축, 실행, 배포 및 현대화하는 데 필요한 엔터프라이즈 쿠버네티스에서 데이터 플랫폼을 구축하는 방법과 관련한 전문가의 관점을 확인해 보세요.
프로덕션 애플리케이션은 멀티플 컨테이너에 걸쳐 있으며, 이러한 컨테이너는 멀티플 서버 호스트에 배포되어야 합니다. 쿠버네티스는 이러한 워크로드를 위해 규모에 맞는 컨테이너를 배포하는 데 필요한 오케스트레이션 및 관리 기능을 제공합니다.
쿠버네티스 오케스트레이션을 사용하면 여러 컨테이너에 걸쳐 애플리케이션 서비스를 구축하고 클러스터 전체에서 컨테이너의 일정을 계획하고 이러한 컨테이너를 확장하여 컨테이너의 상태를 지속적으로 관리할 수 있습니다. 쿠버네티스를 활용하면 IT 보안을 한층 강화할 수 있습니다.
쿠버네티스는 종합적인 컨테이너 인프라를 제공할 수 있도록 네트워킹, 스토리지, 보안, 텔레메트리, 기타 서비스와 통합해야 합니다.
이를 프로덕션 환경과 멀티플 애플리케이션으로 확장하면 개별 서비스를 제공하기 위해 공동 배치된 멀티플 컨테이너가 함께 작동해야 합니다.
Linux 컨테이너는 마이크로서비스 기반 애플리케이션에 이상적인 애플리케이션 배포 유닛 및 독립적인 실행 환경을 제공합니다. 컨테이너에 마이크로서비스를 구현하면 스토리지, 네트워킹, 보안과 같은 서비스를 간편하게 오케스트레이션할 수 있습니다.
따라서 환경에서 컨테이너 수가 크게 증가하며 컨테이너가 누적됨에 따라 복잡성도 증가합니다.
쿠버네티스는 컨테이너를 "포드(pod)"로 분류하여 컨테이너 급증과 관련된 여러 가지 문제를 해결합니다. 포드는 그룹화된 컨테이너에 추상화 계층을 추가하므로 사용자가 워크로드를 예약하고 네트워킹 및 스토리지와 같은 필수 서비스를 컨테이너에 제공할 수 있습니다.
쿠버네티스의 또 다른 부분을 사용해 이러한 포드 전체에서 부하를 분산하고 적합한 수의 컨테이너를 실행하여 워크로드를 지원할 수 있습니다.
쿠버네티스를 올바르게 구현하고 Open vSwitch, OAuth, SELinux와 같은 다른 오픈소스 프로젝트를 이용해 컨테이너 인프라의 모든 부분을 오케스트레이션할 수 있습니다.
활용 사례: 혁신적인 뱅킹 서비스를 제공하기 위한 클라우드 플랫폼 구축
아랍에미리트(UAE)의 최대 은행 중 하나인 Emirates NBD는 디지털 혁신을 위한 확장 가능하고 탄력적인 기반이 필요했습니다. Emirates NBD는 프로비저닝 속도가 느리고 복잡한 IT 환경으로 인해 어려움을 겪고 있었습니다. 서버 구축에는 2개월이 걸릴 수 있지만, 대규모 모놀리식 애플리케이션을 변경하는 데는 6개월 이상이 걸릴 수 있습니다.
컨테이너 오케스트레이션, 통합, 관리를 위해 Red Hat OpenShift Container Platform을 사용하여 중동 지역 최초로 은행에서 운영하는 규모에 따른 프라이빗 클라우드인 Sahab을 만들었습니다. Sahab은 프로비저닝에서 프로덕션에 이르는 서비스형 모델을 통해 엔드 투 엔드 개발을 위한 애플리케이션, 시스템 및 기타 리소스를 제공합니다.
Emirates NBD는 새로운 플랫폼을 통해 애플리케이션 프로그래밍 인터페이스(API)와 마이크로서비스를 사용하여 내부 팀 간 협업뿐 아니라 파트너와의 협업도 개선했습니다. 또한 애자일 및 DevOps 개발 사례를 도입하여 애플리케이션 시작 및 업데이트 주기를 단축했습니다.
컨테이너의 더 큰 가능성을 살펴보세요.
쿠버네티스로 DevOps 방식 지원
현대적인 애플리케이션을 개발하려면 과거의 접근 방식과는 다른 프로세스가 필요합니다. DevOps는 아이디어 개발에서 배포에 이르는 프로세스를 가속화합니다.
그 중심에서 DevOps는 애플리케이션 라이프사이클 전반에서 일상적인 운영 태스크 자동화와 환경 표준화를 사용합니다. 컨테이너는 개발, 제공, 자동화를 위한 통합 환경을 지원하며 개발, 테스트, 프로덕션 환경 간에 애플리케이션을 더 쉽게 이동할 수 있게 해줍니다.
DevOps 구현의 주요 성과는 지속적인 통합 및 지속적인 배포(CI/CD) 파이프라인입니다. CI/CD를 통해 고객에 대한 애플리케이션 제공 주기를 단축하고 인적 개입을 최소화하여 소프트웨어의 품질을 검증할 수 있습니다.
DevOps 접근 방식과 함께 쿠버네티스로 컨테이너 라이프사이클을 관리하면 소프트웨어 개발 및 IT 운영을 조율하여 CI/CD 파이프라인을 지원할 수 있습니다.
컨테이너 안팎에서 적절한 플랫폼을 보유한 기업은 DevOps 문화와 프로세스 변경에 따르는 장점을 최대한 활용할 수 있습니다.
프로덕션 환경에서 쿠버네티스 사용
쿠버네티스는 오픈소스이므로 기업에서 일반적으로 사용할 수 있는, 이 기술을 지원하는 정형화된 구조는 없습니다.
프로덕션을 실행하는 단계에서 쿠버네티스를 구현하는 데 문제가 발생한다면 곤란해지며 고객도 같은 상황에 처할 것입니다.
쿠버네티스를 자동차 엔진처럼 생각하세요. 엔진은 자체적으로도 작동하지만 변속기와 차축 및 바퀴에 연결되면 차를 움직일 수 있습니다. 쿠버네티스를 설치하는 것만으로는 프로덕션 수준의 플랫폼을 갖출 수는 없습니다.
쿠버네티스가 완전히 작동하려면 추가 구성 요소가 필요합니다. 인증, 네트워킹, 보안, 모니터링, 로그 관리 및 기타 툴을 추가해야 합니다.
이때 완전한 차량인 Red Hat OpenShift를 사용할 수 있습니다.
Red Hat OpenShift는 엔터프라이즈용 쿠버네티스입니다. 레지스트리, 네트워킹, 텔레메트리, 보안, 자동화, 서비스 등의 부가 기술이 모두 내장되어 있어 기업에서 강력하고 실효성 있는 쿠버네티스를 구축할 수 있습니다.
Red Hat OpenShift는 쿠버네티스를 플랫폼의 중심 구성 요소로 포함하고 있으며 CNCF에서 인증한 쿠버네티스 오퍼링입니다.
개발자는 Red Hat OpenShift Container Platform의 확장성, 제어, 오케스트레이션 기능을 활용하여 컨테이너화된 새 애플리케이션을 구축 및 호스팅하고 클라우드에 배포함으로써 멋진 아이디어를 빠르고 쉽게 새로운 비즈니스로 만들어 낼 수 있습니다.
무료 60일 체험판으로 Red Hat OpenShift를 사용해 컨테이너 운영을 자동화해보세요.