Jump to section

쿠버네티스 기본 사항 학습

URL 복사

컨테이너는 개발자가 애플리케이션에 집중하고 운영팀은 인프라에 집중하도록 지원합니다. 컨테이너 오케스트레이션은 기업 전반에서 이러한 배포를 관리하는 방식입니다.

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

쿠버네티스는 컨테이너화, 레거시, 클라우드 네이티브 애플리케이션을 스케일에 따라 제공하고 관리할 수 있도록 지원하며 이러한 애플리케이션을 프라이빗 클라우드나 주요 퍼블릭 클라우드 제공업체인 Amazon Web Services(AWS), Google Cloud, IBM Cloud, Microsoft Azure 등 다양한 환경 전반에 마이크로서비스로 리팩토링합니다.

쿠버네티스를 통해 물리 서버 또는 가상 머신의 클러스터에서 컨테이너를 예약하고 실행할 수 있는 플랫폼을 제공하며, 쿠버네티스 아키텍처는 상호 연계된 구성 요소로 클러스터를 나누어 클러스터를 정의된 상태로 유지합니다.

쿠버네티스 클러스터는 컨테이너화된 애플리케이션을 실행하기 위한 일련의 노드 머신입니다. 쿠버네티스 클러스터는 컨트롤 플레인과 컴퓨팅 머신(또는 노드)의 2개 부분으로 시각화할 수 있습니다. 각 노드는 자체 Linux® 환경이며 물리 또는 가상 머신일 수 있습니다. 각 노드는 컨테이너로 이루어진 포드(Pod)를 실행합니다.

쿠버네티스 API(애플리케이션 프로그래밍 인터페이스)는 쿠버네티스 컨트롤 플레인의 프런트엔드이며, 사용자가 쿠버네티스 클러스터와 상호 작용하는 방식입니다. API 서버는 요청이 유효한지 여부를 판별한 후 유효한 요청을 처리합니다.

쿠버네티스 API는 쿠버네티스 클러스터를 관리, 생성, 설정하는 데 사용되는 인터페이스입니다. 이 인터페이스를 통해 사용자, 외부 구성 요소, 클러스터의 각 부분이 서로 통신합니다.

간단한 쿠버네티스 튜토리얼로 클러스터를 생성하고 애플리케이션을 배포하는 방법을 알아봅니다. 

노드:
컨트롤 플레인에서 할당된 요청 태스크를 수행하는 머신입니다.

포드:
단일 노드에 배포되는 하나 이상의 컨테이너 집합입니다. 포드는 가장 작고 단순한 쿠버네티스 오브젝트입니다.

서비스:
일련의 포드에서 네트워크 서비스로 실행 중인 애플리케이션을 노출하는 방식입니다. 이로 인해 작업 정의가 포드에서 분리됩니다.

Kubectl: 
쿠버네티스 클러스터를 관리할 수 있는 커맨드라인 인터페이스입니다. 초보자를 위한 기본 kubectl과 Helm 커맨드에 대해 알아보세요.

kubelet:
컨트롤 플레인과 통신하는 각 노드 내 위치한 아주 작은 애플리케이션입니다. kublet은 컨테이너가 포드에서 실행되게 합니다.

쿠버네티스를 시작할 준비가 되었다면 Minikube라는 오픈소스 툴이 로컬 쿠버네티스 클러스터를 설정하여 노트북에서 쿠버네티스를 시험해볼 수 있도록 해줍니다.

 쿠버네티스는 정의된 상태와 실제 상태를 기반으로 작동합니다. 쿠버네티스 오브젝트는 클러스터의 상태를 나타내며, 사용자가 바라는 워크로드 상태를 쿠버네티스에 알리는 역할을 합니다.

오브젝트가 생성 및 정의되면 쿠버네티스는 해당 오브젝트가 언제나 존재하도록 작동합니다. 

컨트롤러는 쿠버네티스 오브젝트의 상태를 적극적으로 관리하여 클러스터가 현재 상태에서 원하는 상태로 바뀔 수 있도록 변경 작업을 진행합니다. 

개발자 또는 시스템 관리자는 YAML 또는 JSON 파일을 사용하여 정의된 상태를 지정하고 쿠버네티스 API로 제출합니다. 쿠버네티스는 컨트롤러를 사용하여 새롭게 정의된 상태와 클러스터의 실제 상태의 차이점을 분석합니다.

쿠버네티스 클러스터의 원하는 상태는 실행해야 할 애플리케이션이나 워크로드, 사용하는 컨테이너 이미지, 사용 가능하도록 설정할 리소스 등과 같은 기타 설정 세부 사항을 정의합니다.

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

쿠버네티스는 원하는 상태에 부합하도록 자동으로 클러스터를 관리합니다. 컨트롤러는 일반적으로 변경이 필요한 API 서버로 메시지를 전송하여 이 작업을 수행하고, 일부 쿠버네티스 리소스에는 빌트인 컨트롤러가 있습니다.

쿠버네티스가 원하는 상태를 관리하는 방법의 예시로, 애플리케이션의 복제본 3개가 실행되어야 함을 뜻하는 "3"을 원하는 상태로 하여 애플리케이션을 배포한다고 가정해 보겠습니다.

이 컨테이너 중 하나가 충돌하면 쿠버네티스 복제본 세트는 복제본이 2개만 실행 중임을 확인하고 1개를 추가하여 원하는 상태를 충족합니다.

복제본 세트는 지정된 시간에 지정된 수의 포드가 실행되도록 하는 컨트롤러 유형입니다.

쿠버네티스 배포는 복제본 세트를 관리하는 데 권장되는 방식으로, 포드에 선언적 업데이트를 제공하기 때문에 사용자가 이를 직접 관리할 필요가 없어집니다. 

또한 쿠버네티스에서 자동 스케일링을 사용하여 사용자 요구에 따라 서비스 규모를 관리할 수도 있습니다. 애플리케이션 또는 서비스의 원하는 상태를 지정할 때는 수요 증가 시 사용 가능한 추가 포드가 있음을 컨트롤러에 알려야 합니다.

예를 들어, 사용량이 많은 시기에는 애플리케이션에서 원하는 복제본의 수를 평소와 같은 3개가 아닌 10개로 늘릴 수 있습니다.

쿠버네티스 배포는 애플리케이션에 선언적 업데이트를 제공하는 쿠버네티스 리소스 개체입니다.

배포를 통해 애플리케이션에 사용할 이미지, 있어야 할 포드의 수, 업데이트 방식과 같은 애플리케이션 라이프사이클을 설명할 수 있습니다. 

애플리케이션 컨테이너를 수동으로 업데이트하는 프로세스는 시간이 많이 걸리고 지루할 수 있습니다. 쿠버네티스 배포는 이러한 프로세스를 자동화하고 반복 가능하게 만들어 줍니다. 

배포는 쿠버네티스 백엔드에서 전적으로 관리되고, 전체 업데이트 프로세스는 클라이언트 상호 작용 없이 서버 측에서 수행됩니다.

쿠버네티스 배포 오브젝트를 사용해 다음과 같은 작업을 수행할 수 있습니다.

  • 복제본 세트 또는 포드 배포
  • 포드 및 복제본 세트 업데이트
  • 이전 배포 버전으로 롤백
  • 배포 스케일 조정
  • 배포 일시 중지 또는 계속

쿠버네티스 패턴은 컨테이너 기반 애플리케이션 및 서비스에 대한 설계 패턴입니다.  

쿠버네티스는 개발자가 클라우드 네이티브 애플리케이션을 작성할 수 있도록 지원하며 애플리케이션 구축을 위한 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API) 라이브러리와 툴을 제공합니다. 

그러나 쿠버네티스는 개발자와 아키텍트에게 이를 사용하여 비즈니스의 필요와 목표를 충족하는 완전한 시스템을 구축하는 방법에 대한 가이드라인은 제공하지 않습니다. 

패턴은 아키텍처를 재사용하는 방식입니다. 아키텍처를 직접 완전히 구축하는 대신, 기존 쿠버네티스 패턴을 사용할 수 있으며 이를 통해 모든 것을 의도한 대로 작동하게 할 수 있습니다.

패턴은 쿠버네티스 개발자가 필요로 하는 툴로서, 시스템을 구축하는 방법을 보여줍니다.

 쿠버네티스 오퍼레이터는 쿠버네티스 애플리케이션을 패키징, 배포 및 관리하는 방법입니다. 쿠버네티스 애플리케이션은 쿠버네티스에 배포되고 쿠버네티스 API 및 kubectl 툴링을 사용해 관리됩니다.

쿠버네티스 오퍼레이터는 쿠버네티스 API의 기능을 확장하여 쿠버네티스 사용자를 대신해 복잡한 애플리케이션의 인스턴스를 생성, 설정 및 관리하는 애플리케이션별 컨트롤러입니다.

오퍼레이터 SDK를 사용해 10분 안에 쿠버네티스 오퍼레이터를 빌드하는 방법을 알아보세요.

기본 쿠버네티스 리소스 및 컨트롤러 개념에 기반을 두어 구축되지만 오퍼레이터가 관리하는 소프트웨어의 전체 라이프사이클을 자동화하는 데 필요한 도메인 또는 애플리케이션별 정보가 담겨 있습니다.

쿠버네티스 오퍼레이터에 대한 상세 정보와 쿠버네티스 오퍼레이터의 중요성을 알고 싶다면 여기에서 쿠버네티스 오퍼레이터를 쉽게 설명하는 방법을 살펴보세요. 

오퍼레이터를 사용하면 쿠버네티스에서 제공하는 기본적인 자동화 기능 외에도 코드 작성을 통해 태스크를 자동화할 수 있습니다. DevOps 또는 사이트 신뢰성 엔지니어링(SRE) 방식을 따르는 팀을 위해 오퍼레이터는 SRE 사례를 쿠버네티스에 적용할 수 있게 개발되었습니다. 

실제 사례와 함께 쿠버네티스 오퍼레이터의 작동 방식과 오퍼레이터 프레임워크 및 소프트웨어 개발 키트로 쿠버네티스 오퍼레이터를 구축하는 방법을 자세히 알아보세요.

Deploying Containerized Applications Tech Overview 

짧은 강의와 상세한 데모로 이루어진 이 온디맨드 시리즈에서는 Docker, 쿠버네티스, Red Hat® OpenShift® Container Platform을 사용한 Linux 컨테이너와 컨테이너 오케스트레이션 기술을 소개합니다.

 

Red Hat OpenShift Administration 

이 과정에서는 Red Hat OpenShift Container Platform을 설치하고 관리하는 방법을 익힐 수 있습니다. 이 핸즈온 랩 기반 교육 과정에서는 OpenShift 클러스터를 설치, 설정, 관리하고 샘플 애플리케이션을 배포하는 방법을 배우면서 개발자들이 이 플랫폼을 사용하는 방법을 보다 자세히 이해할 수 있습니다.

이 과정은 개발자를 위한 Red Hat OpenShift 애플리케이션 빌드, 배포, 확장, 트러블슈팅을 소개합니다. OpenShift와 쿠버네티스가 계속 널리 보급되면서 개발자는 컨테이너화된 애플리케이션 플랫폼에서 애플리케이션을 개발, 빌드, 배포하는 방법을 이해해야 합니다.

Red Hat OpenShift는 엔터프라이즈용 쿠버네티스입니다. 레지스트리, 네트워킹, 텔레메트리, 보안, 자동화, 서비스 등을 비롯한 부가 기술이 모두 내장되어 있어서 기업이 강력하고 실효성있는 쿠버네티스를 구축할 수 있습니다.

Red Hat OpenShift를 사용하면 개발자는 확장성, 제어, 오케스트레이션을 통해 컨테이너화된 새 애플케이션을 구축 및 호스팅하고 클라우드에 배포함으로써 우수한 아이디어를 새로운 비즈니스에 신속하게 연결할 수 있습니다.

무료 60일 평가판으로 Red Hat OpenShift를 사용해 컨테이너 운영을 자동화해보세요.

추가 자료

문서

컨테이너와 VM 비교

Linux 컨테이너 및 VM(가상 머신)은 다양한 IT 요소를 결합해 시스템의 나머지 부분으로 부터 격리하는 패키징된 컴퓨팅 환경입니다.

문서

컨테이너 오케스트레이션이란?

컨테이너 오케스트레이션은 컨테이너의 배포, 관리, 확장, 네트워킹을 자동화합니다.

문서

Linux 컨테이너란?

Linux 컨테이너는 시스템에서 격리된 프로세스로, 이러한 프로세스를 지원하는 데 필요한 모든 파일을 제공하는 고유한 이미지에서 실행됩니다.

컨테이너에 대한 자세한 내용

제품

선택한 인프라에서 애플리케이션 출시 테스트를 완료한 통합 서비스 세트를 포함하는 엔터프라이즈 애플리케이션 플랫폼입니다.

리소스

교육

무료 교육 과정

Running Containers with Red Hat Technical Overview

무료 교육 과정

Containers, Kubernetes and Red Hat OpenShift Technical Overview

무료 교육 과정

Developing Cloud-Native Applications with Microservices Architectures