쿠버네티스(Kubernetes, k8s)란?

URL 복사

쿠버네티스는 컨테이너화된 애플리케이션을 배포, 관리, 확장하는 데 필요한 대부분의 수동 프로세스를 자동화하는 오픈소스 컨테이너 오케스트레이션 플랫폼입니다.

쿠버네티스는 애플리케이션의 구성을 자동화하고 리소스 할당을 유지 관리 및 추적합니다. 클라우드 네이티브 컴퓨팅 재단(CNCF)의 프로젝트인 쿠버네티스는 2014년에 처음 도입되었고 분산된 애플리케이션과 서비스를 규모에 맞게 실행하기 위해 조직들 사이에서 널리 채택되어 왔습니다.

Red Hat TechTalks - Container Day

지금 Container Day에 등록하셔서 가상화, 미들웨어 그리고 AI까지 다양한 네이티브 환경을 위한 최적의 솔루션을 확인해 보세요!

일시 : 2025년 3월 11일 (화) 오후 2시

장소 : 양재동 엘타워 오르체홀 (5F)

지금 행사 등록하기 

쿠버네티스는 애플리케이션의 코드, 구성 및 종속성을 번들링하는 컨테이너를 관리하기 위한 플랫폼으로, 자체 리소스를 사용하여 격리된 프로세스로 실행될 수 있습니다. 애플리케이션마다 쿠버네티스 포드로 분류되는 컨테이너가 하나 또는 다수 제공됩니다.

쿠버네티스는 베어 메탈 서버, 가상 머신, 퍼블릭 클라우드 공급업체, 프라이빗 클라우드, 하이브리드 클라우드 환경 등에서 실행될 수 있습니다. 쿠버네티스의 주요 이점 중 하나는 다양한 종류의 인프라에서 작동한다는 것입니다.

쿠버네티스 클러스터는 쿠버네티스 구현 상세 정보에 설명된 대로 사용자가 3가지 핵심 설계 원칙을 따르도록 개발되었습니다. 쿠버네티스 배포 시 고려해야 할 사항은 다음과 같습니다.

  • 보안성: 최신 보안 모범 사례를 따라야 합니다.
  • 사용자 친화성: 몇 가지 간단한 명령으로 작동할 수 있어야 합니다.
  • 확장 가능성: 하나의 공급업체만을 선호해서는 안 되고 구성 파일을 통해 사용자 정의할 수 있어야 합니다.

Red Hat 리소스

쿠버네티스는 지루한 애플리케이션 배포 및 확장 작업을 상당 부분 자동화하고, 클라우드 네이티브 개발 방식을 원활히 도입하도록 지원하므로 시간을 절약하고 신규 소프트웨어의 시장 출시 시간을 앞당길 수 있습니다.  주요 장점은 다음과 같습니다.

복잡한 대규모 환경 지원: 여러 애플리케이션을 실행하는 프로덕션 환경에서는 다수의 컨테이너가 여러 호스트 전반에 배포되어 함께 작동해야 합니다. 쿠버네티스는 대규모 워크로드에 필요한 규모로 컨테이너를 배포하기 위한 오케스트레이션 및 관리 기능을 제공합니다.

확장성: 쿠버네티스는 조직의 요구 사항에 따라 자동으로 확장하며, 애플리케이션에 필요한 용량을 제공하는 동시에 리소스와 비용은 줄입니다.

이식성: 쿠버네티스는 자체 데이터센터에서 온사이트로, 퍼블릭 클라우드에서, 그리고 퍼블릭 및 프라이빗 인스턴스에 대한 하이브리드 구성에서 실행될 수 있습니다. 쿠버네티스를 이용하면 동일한 명령을 어디서나 사용할 수 있습니다.

배포의 일관성: 쿠버네티스는 인프라 전체에서 일관적으로 배포됩니다. 컨테이너는 변경 불가능한 인프라의 개념을 구현하며, 애플리케이션을 실행하는 데 필요한 모든 종속성과 설정 지침이 컨테이너와 함께 번들로 제공됩니다.

운영과 개발의 분리 및 자동화: 컨테이너를 통해 개발자는 시간을 절약할 수 있어 반복 주기가 가속화됩니다. 동시에 운영 팀의 경우 쿠버네티스를 사용하면 시스템의 안정성에 확신을 갖게 됩니다.

하이브리드 클라우드 전략 지원: 많은 조직이 온사이트 데이터센터와 퍼블릭 또는 프라이빗 클라우드 솔루션을 결합하고 여러 클라우드 공급업체에 워크로드를 분산하여 다양한 가격과 서비스 수준을 활용할 수 있습니다. 쿠버네티스의 일관성과 이식성 덕분에 이러한 하이브리드 전략을 지원할 수 있습니다.

기존 애플리케이션에 대한 지속적인 지원: 쿠버네티스는 컨테이너화된 레거시 애플리케이션 및 클라우드 네이티브 애플리케이션은 물론 마이크로서비스로 리팩토링되는 애플리케이션을 제공하고 관리하는 데 도움이 될 수 있습니다.

복잡한 환경의 관리: 컨테이너의 마이크로서비스를 통해 스토리지, 네트워킹, 보안 등 여러 서비스를 더욱 쉽게 오케스트레이션할 수 있지만 환경에 컨테이너 수가 크게 증가하므로 복잡성이 커지기도 합니다. 쿠버네티스는 컨테이너를 포드로 분류하므로 사용자가 워크로드를 예약하고 네트워킹과 스토리지 같은 필요한 서비스를 컨테이너에 제공하는 데 도움이 됩니다.

개선된 보안성: 쿠버네티스 보안 사례는 조직이 IT 보안 향상을 위한 효과적인 조치를 취하는 데 도움이 됩니다. 관리자는 보안 및 거버넌스를 위한 정책을 적용하고, 포드 또는 포드 그룹별로 정책을 나눌 수 있습니다. 개발 팀은 런타임에서 컨테이너의 보안 문제를 식별하고, 프로덕션 환경에서 컨테이너에 대해 업데이트 또는 패치 적용을 수행할 필요 없이 빌드 단계에서 문제를 해결할 수 있습니다. 역할 기반 액세스 제어(RBAC)는 사용자 계정과 서비스 계정에 특정 권한을 할당할 수 있습니다. 쿠버네티스 암호는 암호화 키와 같은 중요한 데이터를 보호할 수 있습니다.

DevOps 지원: 컨테이너에 일관된 인프라 기반을 제공함으로써 쿠버네티스는 개발 팀과 운영 팀 간 효율적 작업 관계를 촉진하는 DevOps 접근 방식을 지원할 수 있습니다. CI/CD, 즉 지속적 통합 및 지속적 제공/배포를 사용하면 소프트웨어 개발 라이프사이클을 간소화하고 가속화하는 데 도움이 됩니다. 그리고 DevOps가 진화한 개념인 DevSecOps는 소프트웨어 개발 라이프사이클 초기에 보안 제어와 취약점 관리를 변경합니다.

e-book: OpenShift를 통한 DevOps 문화 및 사례

작동 중인 쿠버네티스 배포를 클러스터라고 하며, 클러스터는 컨테이너를 실행하는 호스트 그룹입니다.

관리자는 실행해야 할 애플리케이션이나 기타 워크로드, 함께 사용하는 이미지, 사용 가능하도록 설정할 리소스, 기타 구성 세부 사항 등을 설명하여 원하는 쿠버네티스 클러스터 상태를 설정합니다.

쿠버네티스 클러스터는 컨트롤 플레인과 일련의 컴퓨터 노드(일반적으로 서버 또는 가상 서버) 등 두 가지 부분으로 시각화할 수 있습니다.

컨트롤 플레인은 어느 애플리케이션을 실행하고 애플리케이션이 어느 컨테이너 이미지를 사용할지와 같이 클러스터를 원하는 상태로 유지 관리합니다.

한편 노드는 컨트롤 플레인의 지침을 따르고 애플리케이션과 워크로드를 실행하는 실질적인 작업을 수행합니다. 각 노드는 자체 Linux® 환경이며 물리 또는 가상 머신일 수 있습니다. 쿠버네티스 클러스터에는 최소 1개 이상의 컴퓨팅 노드가 필요하지만 일반적으로 여러 개가 있습니다.

쿠버네티스 노드는 포드로 구성되며, 각 포드는 애플리케이션의 단일 인스턴스를 나타냅니다. 포드는 컨테이너 실행 방식을 제어하는 옵션과 함께 하나의 컨테이너 또는 긴밀히 결합된 일련의 컨테이너들로 구성되어 있습니다.

여러 쿠버네티스 서비스가 함께 작동하여 자동으로 각 태스크에 가장 적합한 노드를 식별하고, 리소스를 할당하며, 필요한 작업을 수행하기 위해 해당 노드에 포드를 할당합니다. 쿠버네티스는 포드가 클러스터에서 어디로 이동하는지 또는 교체되었는지에 관계없이 적절한 포드에 요청을 자동으로 전송합니다.

쿠버네티스는 이를 모두 제어하며 클러스터를 관리, 생성, 구성할 통합 애플리케이션 프로그래밍 인터페이스(API)를 제공합니다. 

쿠버네티스 클러스터가 실제로 어떻게 작동하는지 좀 더 자세히 살펴보겠습니다.

컨트롤 플레인은 클러스터를 제어하는 구성 요소가 클러스터의 상태 및 구성에 관한 데이터와 함께 위치하는 중추부입니다. 핵심 쿠버네티스 구성 요소의 역할은 충분한 수의 컨테이너가 필요한 리소스를 갖고 실행되도록 하는 것입니다.

쿠버네티스 API(kube-apiserver)는 쿠버네티스 컨트롤 플레인의 프론트엔드로, 내부 및 외부 요청을 처리합니다. API 서버는 요청이 유효한지 판별하고 유효한 요청을 처리합니다. REST 호출이나 kubectl 커맨드라인 인터페이스 또는 kubeadm과 같은 기타 CLI(command-line interface)를 통해 API에 액세스할 수 있습니다.

쿠버네티스 스케줄러(kube-scheduler)는 CPU 또는 메모리와 같은 포드의 리소스 요구 사항과 함께 클러스터의 상태를 고려합니다. 그런 다음 포드를 적절한 컴퓨팅 노드에 예약합니다.

컨트롤러(kube-controller-manager)는 실제로 클러스터를 실행하며, 쿠버네티스 controller-manager에는 여러 컨트롤러 기능이 하나로 통합되어 있습니다. 하나의 컨트롤러는 스케줄러를 참고하여 정확한 수의 포드가 실행되게 합니다. 포드에 문제가 생기면 또 다른 컨트롤러가 이를 감지하고 대응합니다.

클러스터의 상태에 대한 구성 데이터 및 정보는 키-값 저장소 데이터베이스인 etcd에 존재합니다. 내결함성을 갖춘 분산형 etcd는 클러스터에 관한 궁극적 정보 소스(Source Of Truth, SOT)가 되도록 설계되었습니다.

컨테이너 실행을 위해 노드마다 컨테이너 런타임 엔진이 있습니다.그중 한 가지 예가 Docker입니다. 하지만 쿠버네티스는 rkt, CRI-O와 같은 다른 Open Container Initiative 호환 런타임도 지원합니다.

각 컴퓨팅 노드에는 컨트롤 플레인과 통신하는 매우 작은 애플리케이션인 kubelet이 있습니다. kubelet의 역할은 컨테이너가 포드에서 실행되게 하는 것입니다. 컨트롤 플레인에서 노드에 작업을 요청하는 경우 kubelet이 이 작업을 실행합니다.

각 노드에는 쿠버네티스 네트워킹 서비스를 용이하게 하기 위한 네트워크 프록시인 kube-proxy도 있습니다. kube-proxy는 운영 체제의 패킷 필터링 계층에 의존하거나 트래픽 자체를 전달하여 클러스터 내부 또는 외부의 네트워크 통신을 처리합니다.

쿠버네티스는 애플리케이션을 실행하는 컨테이너를 관리할 뿐만 아니라 클러스터에 연결된 애플리케이션 데이터도 관리할 수 있습니다. 쿠버네티스를 사용하면 사용자가 기본 스토리지 인프라에 관한 상세 정보를 알지 못해도 스토리지 리소스를 요청할 수 있습니다. 퍼시스턴트 볼륨은 포드가 아닌 클러스터에 따라 다르므로 포드보다 수명이 오래 지속될 수 있습니다.

쿠버네티스가 의존하는 컨테이너 이미지는 컨테이너 레지스트리에 저장됩니다. 이러한 레지스트리를 직접 구성하거나 제3사가 구성할 수 있습니다.

쿠버네티스 아키텍처에 대해 자세히 알아보기

서버리스란 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있는 클라우드 네이티브 개발 모델입니다. 서버리스 모델에도 서버가 존재하긴 하지만, 애플리케이션 개발에서와 달리 추상화되어 있습니다. 개발자는 배포를 위해 코드를 컨테이너에 패키징하기만 하면 됩니다.

서버리스 애플리케이션은 배포되고 나면 수요에 대응하여 필요에 따라 자동으로 스케일 업되거나 스케일 다운됩니다. 퍼블릭 클라우드 제공업체의 서버리스 오퍼링은 일반적으로 이벤트 기반 실행 모델을 통해 온디맨드로 미터링됩니다. 그러므로 서버리스 기능이 유휴 상태일 때는 아무런 비용도 들지 않습니다.

쿠버네티스는 서버리스 환경 실행에 널리 사용되고 있습니다. 그러나 쿠버네티스 자체만으로는 기본적으로 서버리스 애플리케이션을 구동할 수 없습니다. Knative는 쿠버네티스에서 서버리스 애플리케이션을 배포, 실행, 관리하기 위해 구성 요소를 추가하는 오픈소스 커뮤니티 프로젝트입니다.

Knative를 통해 코드를 컨테이너 이미지로 패키징하고 이를 시스템으로 전달하여 서비스를 생성합니다. Knative가 인스턴스를 자동으로 시작하고 중단하므로 코드는 필요한 경우에만 실행하게 됩니다.

서버리스에 대해 자세히 알아보기

쿠버네티스 오퍼레이터는 쿠버네티스 API의 기능을 확장하여 쿠버네티스 사용자 대신 복잡한 애플리케이션의 인스턴스를 생성, 구성, 관리하고 기타 애플리케이션 기능을 추가하는 애플리케이션별 컨트롤러입니다. 기본 쿠버네티스 리소스 및 컨트롤러 개념에 기반을 두어 구축되지만 오퍼레이터가 관리하는 소프트웨어의 전체 라이프사이클을 자동화하는 데 필요한 도메인 또는 애플리케이션별 정보가 담겨 있습니다.

쿠버네티스 오퍼레이터는 거의 모든 쿠버네티스 동작을 수행하도록 개발될 수 있습니다. 즉, 복잡한 애플리케이션의 스케일을 조정하고 애플리케이션 버전을 업그레이드할 수 있을 뿐 아니라 특수 하드웨어로 연산 클러스터 내 노드의 커널 모듈을 관리할 수도 있습니다. 쿠버네티스 오퍼레이터로 배포되는 소프트웨어와 툴의 예시로는 모니터링을 위한 Prometheus Operator와 검색 자동화를 위한 Elastic Kubernetes Operator가 있습니다.

쿠버네티스 오퍼레이터에 대해 알아보기

쿠버네티스 자체는 컨테이너의 배포, 관리, 확장을 위한 오픈소스 소프트웨어입니다. 그런데 실질적인 의미에서 쿠버네티스를 작동하려면 상당히 많은 작업이 필요합니다. 대부분의 조직은 자동화, 모니터링, 로그 분석, 서비스 메쉬, 서버리스, 개발자 생산자 툴 등과 같은 기능을 통합하려고 합니다. 또한 네트워킹, 인그레스, 부하 분산, 스토리지, 모니터링, 로깅, 멀티 클러스터 관리, 지속적 통합 및 지속적 제공(CI/CD)을 위해 다른 툴을 추가해야 할 수도 있습니다. 즉, 대부분의 활용 사례에서 쿠버네티스 하나만으론 충분하지 않습니다.

많은 소프트웨어 벤더들이 자체 관리형 배포, 호스팅된 서비스, 설치 프로그램, 서비스로서의 플랫폼(PaaS) 오퍼링을 포함한 자체 쿠버네티스 버전을 제공합니다. CNCF에서는 수십 개의 인증된 쿠버네티스 오퍼링으로 구성된 목록을 유지 관리합니다.

Red Hat® OpenShift®는 CNCF에서 제공하는 인증된 쿠버네티스 오퍼링이지만 훨씬 더 많은 기능을 포함하고 있습니다. Red Hat OpenShift는 쿠버네티스를 하이브리드 클라우드 환경 전반에서 일관된 방식으로 클라우드 네이티브 애플리케이션을 제공하기 위한 완전한 플랫폼의 기반으로 사용합니다.

쿠버네티스가 컨테이너 오케스트레이션 엔진으로 작동하는 Red Hat OpenShift는 CNCF 오픈소스 에코시스템이 제공하고 Red Hat이 검증, 패키징, 지원하는 다수의 추가 기능을 통합합니다. Red Hat OpenShift는 AWS, Microsoft Azure, Google, IBM과 같은 주요 클라우드 공급업체에서 퍼블릭 클라우드 서비스로 사용하거나 데이터센터, 퍼블릭 클라우드, 엣지 전반의 베어 메탈 및 가상 인프라에서 자체 관리형 소프트웨어로 사용할 수 있습니다.

OpenShift와 쿠버네티스 비교 보기

OKD는 쿠버네티스를 실행하는 데 필요한 패키지 소프트웨어 구성 요소의 커뮤니티 프로젝트입니다. OKD는 쿠버네티스 외에도 팀이 애플리케이션 개발 속도를 높이고 효율적으로 배포 및 확장하며 장기간의 라이프사이클을 유지 관리하는 데 도움이 되는 개발자 및 운영 중심 툴을 제공합니다. OKD를 사용하면 개발자가 클라우드에서 애플리케이션을 생성, 검증, 배포할 수 있으며, Go, Node.js, Ruby, Python, PHP, Perl, Java를 비롯한 다양한 프로그래밍 언어도 지원됩니다.

OKD는 Red Hat OpenShift의 업스트림 프로젝트로, 지속적인 애플리케이션 개발 및 배포에 최적화되었습니다. OKD에서 커뮤니티 업데이트가 가장 먼저 이루어지고 이를 엔터프라이즈용으로 시험 사용하므로 OKD는 일반적으로 기능 측면에서 OpenShift보다 몇 릴리스 앞서 있습니다.

OKD와 OpenShift의 주요 차이점은 Red Hat OpenShift는 Red Hat이 검증 및 테스트하며 기업 운영의 요구 사항에 부합하기 위해 서브스크립션 혜택과 함께 제공된다는 데 있습니다. Red Hat OpenShift 서브스크립션에는 기술 지원, 보안 대응 팀, 장기 지원 옵션, 검증된 제3사 오퍼레이터, 인증된 데이터베이스 및 미들웨어 등이 포함되어 있습니다.

OpenShift와 OKD 비교 보기

Red Hat은 쿠버네티스를 비롯한 오픈소스 컨테이너 기술을 선도하며 활발히 구축하는 기업으로서 컨테이너 인프라의 보안, 간소화, 자동 업데이트를 위한 필수 툴을 개발합니다.

개발자는 Red Hat OpenShift의 확장성, 제어, 오케스트레이션 기능을 활용하여 컨테이너화된 새 애플리케이션을 구축 및 호스팅하고 클라우드에 배포함으로써 멋진 아이디어를 빠르고 쉽게 새로운 비즈니스로 만들어 낼 수 있습니다. 쿠버네티스 워크로드를 관리형 클라우드 서비스로 배포하거나 이동하고자 한다면 OpenShift를 AWS(Amazon Web Services), Microsoft AzureGoogle CloudIBM Cloud 및 기타 공급업체를 기반으로 한 클라우드 네이티브 서비스로 사용할 수도 있습니다.

OpenShift 기반으로 구축되어 있으며, Red Hat Advanced Cluster Management와 Red Hat Ansible® Automation Platform을 함께 활용하여 퍼블릭 클라우드, 온프레미스 환경, 엣지 환경을 포함한 다양한 위치에서 여러 쿠버네티스 클러스터를 효율적으로 배포하고 관리할 수 있습니다.

허브

레드햇 공식 블로그

레드햇 공식 블로그에서 고객, 파트너, 커뮤니티 에코시스템 등 현재 화제가 되는 최신 정보를 살펴 보세요.

모든 Red Hat 제품 체험판

무료 제품 체험판을 통해 핸즈온 경험을 얻고, 자격증 시험에 대비하거나 해당 제품이 조직에 적합한지 평가할 수 있습니다.

추가 자료

서버리스 아키텍처 비교: 레드햇 오픈시프트 서버리스 소개

레드햇 오픈시프트 서버리스는 쿠버네티스를 기반으로 서버리스 워크로드를 배포하고 관리하도록 지원합니다. 서버리스 아키텍처의 차별성과 활용 방법을 알아보세요.

쿠버네티스 Java 클라이언트란?

쿠버네티스 Java 클라이언트는 쿠버네티스와 상호 작용할 수 있도록 Java 프로그래밍 언어 사용을 지원하는 클라이언트 라이브러리입니다.

AWS의 쿠버네티스: 자체 관리형 vs 관리형 애플리케이션 플랫폼

쿠버네티스는 컨테이너화된 애플리케이션을 배포, 관리, 확장하는 데 필요한 대부분의 수동 프로세스를 자동화하는 오픈소스 컨테이너 오케스트레이션 플랫폼입니다. 컨테이너화된 애플리케이션, 레거시 애플리케이션, 그리고 클라우드 네이티브 애플리케이션을 제공하고 관리하는 데 도움이 됩니다.

컨테이너 리소스

주요 제품

  • Red Hat OpenShift

    선택한 하이브리드 클라우드 인프라에 맞게 애플리케이션을 대규모로 구축, 현대화 및 배포할 수 있는 통합 애플리케이션 개발 플랫폼입니다.

관련 기사