Q: Kubernetes 클러스터란 무엇인가요?

Kubernetes(K8s) 클러스터는 컨테이너화된 애플리케이션을 실행하는 컴퓨팅 노드 또는 작업자 머신 그룹입니다. 컨테이너화는 애플리케이션의 코드를 모든 인프라에서 실행하는 데 필요한 모든 파일 및 라이브러리와 함께 번들로 제공하는 소프트웨어 배포 및 런타임 프로세스입니다. Kubernetes는 대규모 컨테이너를 관리, 조정 및 스케줄링할 수 있는 오픈 소스 컨테이너 오케스트레이션 소프트웨어입니다. Kubernetes는 컨테이너를 포드에 배치하고 노드에서 실행합니다. Kubernetes 클러스터에는 최소한 컨테이너 포드를 실행하는 프라이머리 노드와 클러스터를 관리하는 컨트롤 플레인이 있습니다. Kubernetes를 배포하면 기본적으로 Kubernetes 클러스터가 실행됩니다.

Kubernetes 기초란 무엇인가요?

Kubernetes 클러스터를 이해하려면 먼저 Kubernetes를 사용한 컨테이너화의 기초를 이해해야 합니다. 

컨테이너는 종속성과 함께 패키징된 단일 애플리케이션 또는 마이크로서비스로, 독립형 환경 및 애플리케이션을 하나로 통합하여 실행할 수 있습니다. 최신 애플리케이션은 모든 애플리케이션이 독립적으로 실행되는 수백 또는 수천 개의 개별 소프트웨어 구성 요소를 포함하는 분산 마이크로서비스 아키텍처를 채택했습니다. 모든 구성 요소(또는 마이크로서비스)는 코드 모듈성을 향상시키기 위해 단일 독립 기능을 수행합니다. 각 서비스에 대해 독립적인 컨테이너를 생성하여 애플리케이션을 여러 머신에 배포하고 배포할 수 있습니다. 개별 마이크로서비스 워크로드 및 컴퓨팅 기능을 확장하거나 축소하여 애플리케이션 효율성을 극대화할 수 있습니다.

Kubernetes는 대규모 컨테이너 관리를 간소화하는 오픈 소스 컨테이너 오케스트레이션 소프트웨어입니다. 컨테이너를 스케줄링, 실행, 시작 및 종료하고 관리 기능을 자동화할 수 있습니다. 개발자는 관리 오버헤드 없이 대규모 컨테이너화의 이점을 누릴 수 있습니다.

그 다음에 Kubernetes는 몇 가지 핵심을 살펴보겠습니다.

포드

포드는 Kubernetes에서 배포할 수 있는 표준 유닛입니다. 포드는 하나 이상의 컨테이너를 포함하며, 포드 내에서 컨테이너는 스토리지 및 네트워킹과 같은 동일한 시스템 리소스를 공유합니다. 각 포드에는 고유한 IP 주소가 있습니다. 

포드 내의 컨테이너는 격리되지 않습니다. 포드는 VM에서 실행되는 애플리케이션과 비슷한 컨테이너를 장착한 가상 머신(VM)과 비슷하다고 생각하면 됩니다. 환경 유형에 대해 'dev' 또는 'prod' 레이블을 지정하는 등 속성 레이블을 첨부하여 포드 및 포드 그룹을 구성할 수 있습니다. 

노드

노드는 포드를 실행하는 머신입니다. Amazon EC2 인스턴스와 같은 물리적 또는 가상 서버일 수 있습니다. 노드의 구성 요소에는 다음이 포함됩니다.

  • 노드 및 컨테이너 관리를 위한 Kubelet
  • 네트워크 프록시를 위한 Kube 프록시
  • 컨테이너 런타임

컨테이너를 실행하려면 호환 가능한 컨테이너 런타임을 노드에 설치해야 합니다. Kubernetes는 Kubernetes 컨테이너 런타임 인터페이스 및 컨테이너와 같은 여러 컨테이너 런타임을 지원합니다. 

복제본 세트 및 배포

포드는 독립형 아티팩트이며 노드가 다운되어도 자동으로 재시작하지 않습니다. 포드를 복제본 세트로 그룹화한 경우, Kubernetes에서 노드 전체에서 항상 실행되는 복제본 세트를 지정할 수 있다. 이는 확장 및 축소하고 앱과 서비스의 연속성을 보장하는 데 매우 중요합니다. 

배포는 애플리케이션을 배포하고 앱을 오프라인으로 전환하지 않고 업데이트하거나 롤백하기 위한 Kubernetes 관리 객체입니다.

서비스 및 인그레스

Kubernetes 서비스를 사용하여 표준 네트워크 통신 규칙을 따르는 상호 작용을 실행하기 위해 엔드포인트를 통해 네트워크의 포드 또는 포드 그룹을 노출합니다. 퍼블릭 인터넷 트래픽 액세스의 경우 Kubernetes 인그레스가 서비스에 연결되고, 이 인그레스는 포드에 연결됩니다.

Kubernetes 클러스터 구성 요소란 무엇인가요?

Kubernetes 클러스터는 실행 중인 포드가 있는 하나 이상의 노드 그룹입니다. 클러스터 내에서 Kubernetes 컨트롤 플레인은 노드와 포드를 관리합니다.

컨트롤 플레인 구성 요소에는 다음이 포함됩니다.

  • 클러스터 내부 및 클러스터 간의 통신을 관리하는 Kubernetes API 서버(kube-apiserver)
  • 클러스터의 영구 상태를 기록하기 위한 스토리지(etcd)
    노드 및 후속 포드 Kubernetes 리소스를 관리하기 위한 스케줄러(kube-scheduler) 

다른 구성 요소로는 노드 및 작업 제어를 위한 컨트롤러 관리자(kube-controller-manager)와 제공자별 퍼블릭 클라우드 인프라와의 통합을 위한 클라우드 컨트롤러 관리자(cloud-controller-manager)가 있습니다.

컨테이너에는 영구 스토리지가 없으므로 애플리케이션은 영구 데이터를 저장해야 합니다. 또한 포드에는 공유 데이터에 대한 액세스가 필요할 수 있습니다. 영구 볼륨은 클러스터에 스토리지로 추가할 수 있으며, 이는 노드와 마찬가지로 클러스터 내에서 참조됩니다.

개발자는 Kubernetes 클러스터를 어떻게 사용하나요?

개발자는 먼저 프라이머리 노드와 해당 워커 노드에 Kubernetes를 다운로드하여 설치해야 합니다. 그런 다음 물리적 또는 가상 머신, 로컬, 데이터 센터 또는 클라우드에 클러스터를 배포할 수 있습니다.

설치

Linux 가상 머신을 간단하게 시작하려면 선택한 프라이머리 노드(가상 머신)에 먼저 다음을 설치해야 합니다.

  • Docker 또는 기타 컨테이너화 소프트웨어.
  • Kubernetes의 리포지토리 키 및 코드 리포지토리.
  • 클러스터 부트스트래핑을 위한 패키지 kubeadm.
  • 노드 코디네이션을 위한 패키지 kubelet.
  • 클러스터 명령줄을 위한 패키지 kubectl.

지정된 다른 작업자 노드 각각에서 프로세스를 수행합니다.

클러스터 초기화

클러스터를 초기화하려면 프라이머리 노드에서 kubeadm init 명령을 실행합니다. 클러스터를 사용할 준비를 하기 전에 kube 구성 파일을 추가하고 일반적으로 YAML 파일을 사용하여 포드 네트워킹을 배포해야 합니다. kubeadm init 명령은 join 명령을 출력하며, 이 명령은 다른 가상 시스템 워커 노드의 명령줄에 복사하여 붙여넣을 수 있습니다. 이렇게 하면 각 워커 노드가 클러스터에 참여할 수 있습니다. 

Kubernetes로 작업하기

배포자는 Kubernetes UI 대시보드를 사용하여 클러스터에서 애플리케이션을 생성하고 배포할 수 있습니다. Kubernetes UI 대시보드의 경우, 마스터 머신에서 kubectl proxy 명령을 실행합니다. 그러면 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/에서 UI를 사용할 수 있습니다.

Kubernetes 클러스터 관리란 무엇인가요?

Kubernetes 클러스터 관리는 여러 Kubernetes 클러스터를 대규모로 관리한다는 의미입니다. 예를 들어 개발 환경을 생각해 볼 수 있습니다. 팀에는 여러 개의 분산된 현장과 클라우드 기반 물리적 및 가상 시스템에서 각각 실행되는 테스트, 개발 및 프로덕션 클러스터가 필요할 수 있습니다.

서로 다른 여러 유형의 클러스터를 함께 관리하려면 생성 및 삭제, 현장 업데이트, 유지 관리, 재구성, 보안, 클러스터 데이터 보고 등과 같은 클러스터 작업을 수행할 수 있어야 합니다. 다중 클러스터 관리는 Kubernetes 서비스, 전문 도구, 구성 및 모범 사례의 조합을 통해 달성할 수 있습니다.

AWS는 Kubernetes 클러스터 요구 사항을 어떻게 지원하나요?

AWS는 Kubernetes 클러스터를 구성, 실행 및 관리할 수 있는 클라우드 서비스를 제공합니다. 

  • Amazon Elastic Compute Cloud(EC2)를 사용하면 선택한 인스턴스 유형에서 Kubernetes를 프로비저닝하고 실행할 수 있습니다.
  • Amazon Elastic Kubernetes Service(EKS)를 사용하면 컨트롤 플레인 및 etcd를 사용하여 마스터 인스턴스를 프로비저닝하거나 관리할 필요 없이 Kubernetes를 시작, 실행 및 확장할 수 있습니다. EKS는 클러스터 관리 도구와 AWS 네트워킹 및 보안 서비스와의 유용한 통합과 함께 제공됩니다.

지금 무료 계정을 만들어 AWS에서 Kubernetes 클러스터를 시작하세요.

AWS의 다음 단계

무료 계정 가입

AWS 프리 티어에 즉시 액세스할 수 있습니다.

가입 
콘솔에서 구축 시작

AWS Management Console에서 구축을 시작하세요.

로그인