본문 바로가기
Kubernetes

쿠버네티스(Kubernetes, K8s) 컨닝페이퍼

by 포잉띠 2024. 9. 6.

쿠버네티스는 컨테이너화된 애플리케이션을 자동으로 배포하고 관리하는 오픈소스 플랫폼이다.

 

주요 용어

클러스터 (Cluster)

쿠버네티스는 여러 대의 서버(노드)로 구성된 클러스터를 사용한다. 

클러스터는 여러 노드로 이루어져 있으며, 이들 노드에서 컨테이너화된 애플리케이션을 실행한다.

 

컨테이너 

https://arin-nya.tistory.com/125

 

컨테이너 컨닝페이퍼

컨테이너 개념소프트웨어를 실행하기 위한 가벼운 가상화 기술애플리케이션의 실행 환경을 표준화하고 관리하는 기술애플리케이션과 그 애플리케이션이 실행되는 데 필요한 모든 종속성(라이

arin-nya.tistory.com

 

노드 (Node)

클러스터를 구성하는 개별 서버. 물리적인 서버일수도 가상 머신일수도 있다.

크게 두가지 유형으로 나뉜다.

마스터 노드(클러스터의 관리 및 조정), 워크로드 노드(애플리케이션 컨테이너 실행) 

 

포드 (Pod)

쿠버네티스에서 가장 작은 배포 단위.

하나 이상의 컨테이너를 포함할 수 있다.

같은 노드에서 함께 배포되며, 네트워킹과 스토리지 자원을 공유한다.

 

디플로이먼트 (Deployment)

애플리케이션의 배포와 업데이트를 관리하는 리소스이다.

 

서비스 (Service)

포드들 사이의 네트워크 통신을 관리하고 외부와의 네트워크 인터페이스를 제공한다.

로드 밸런싱과 서비스 디스커버리 기능을 지원한다.

 

레플리카셋 (ReplicaSet)

포드의 복제본을 관리하여 원하는 수의 포드가 항상 실행되도록 보장한다.

디플로이먼트가 레플리카셋을 사용하여 포드의 복제와 관리 작업을 수행한다.

 

스테이트풀셋 (StatefulSet)

상태를 가진 애플리케이션(ex : DB)을 배포할 때 사용하는 리소스.

스테이트풀셋은 포드에 고유한 식별자를 부여하고, 안정적인 네트워크 식별과 스토리지를 제공한다.

 

컨피그맵 (ConfigMap) 및 시크릿 (Secret)

애플리케이션의 설정과 비밀 정보를 저장하고 관리한다.

컨피그맵 (ConfigMap)은 일반적인 설정 정보를, 시크릿 (Secret)은 민감한 정보를 관리한다.

 

쿠버네티스의 주요 기능

  1. 자동화된 배포와 롤아웃
    1. 애플리케이션을 자동으로 배포하고, 새로운 버전으로의 롤아웃을 자동으로 관리한다.
    2. 실패한 배포가 있을 경우 자동으로 롤백 가능하다.
  2. 자동화된 스케일링
    1. 수요에 따라 컨테이너의 수를 자동으로 조절할 수 있다.
    2. 이는 수평적 스케일링이라고 하며, 트래픽의 변화에 유연하게 대응 가능하다.
  3. 셀프 힐링 (Self-Healing)
    1. 포드가 실패하거나 노드가 다운될 경우, 쿠버네티스는 자동으로 포드를 재배치하거나 포드를 생성한다.
  4. 서비스 디스커버리와 로드 밸런싱
    1. 포드와 서비스를 자동으로 등록하고, 클러스터 내부의 서비스 간 통신을 관리한다.
    2. 로드 밸런싱을 통해 트래픽을 효율적으로 분산할 수 있다.
  5. 스토리지 관리
    1. 쿠버네티스는 다양한 스토리지 시스템과 통합하여, 포드가 필요로 하는 스토리지를 자동으로 프로비저닝하고 관리한다.

 

쿠버네티스 사용의 이점

  1. 확장성 : 클러스터의 노드를 추가하여 시스템을 쉽게 확장할 수 있다.
  2. 유연성 : 다양한 애플리케이션 요구에 맞춰 컨테이너를 조정하고 관리할 수 있다.
  3. 자원 최적화 : 자원을 효율적으로 사용할 수 있도록 자동으로 관리한다.
  4. 운영자동화 : 배포, 스케일링, 복구 등의 작업을 자동으로 처리한다. = 운영의 복잡성을 줄여준다.

 

쿠버네티스의 주요 사용처

클라우드 네이티브 애플리케이션

클라우드 네이티브 애플리케이션은 클라우드 환경에서 최적화된 애플리케이션으로,

컨테이너화 된 마이크로서비스 아키텍처를 많이 채택한다.

이러한 컨테이너화 된 애플리케이션을 효율적으로 관리하고 조정할 때 쿠버네티스가 적절할 수 있다.

 

ex)

웹앱 : 엔터프라이즈 웹앱에서 컨테이너를 사용하여 각 서비스의 배포와 관리를 쉽게 할 수 있다.

API 서비스 : API 기반의 서비스에서 다양한 컨테이너를 스케일링하고 관리할 때 유용하다.

 

DevOps 및 CI/CD

쿠버네티스는 애플리케이션 배포와 운영의 자동화를 지원하기 때문에 DevOps 및 CI/CD 파이프라인에서 중요한 역할을 한다.

자동화된 빌드, 테스트, 배포 과정에서 쿠버네티스를 활용하면 빠르고 안정적인 배포가 가능하다.

 

ex)

자동화된 배포 : 코드 변경을 자동으로 배포하고, 롤백 및 롤아웃을 쉽게 관리할 수 있다.

테스트 환경 관리 : 다양한 테스트 환경을 효율적으로 생성하고 관리할 수 있다.

 

멀티 클라우드 및 하이브리드 클라우드 환경

쿠버네티스는 다양한 클라우드 제공업체(AWS, Azure, GCP 등)와 온프레미스 환경을 통합하여 멀티 클라우드 또는 하이브리드 클라우드 환경을 구현할 수 있다.

단일 플랫폼에서 여러 클라우드 환경을 관리할 수 있다.

 

데이터 처리 및 분석

대량의 데이터를 처리하고 분ㄴ석하는 데 쿠버네티스를 활용할 수 있다. 

데이터 파이프라인과 분석 작업을 컨테이너화하여 관리할 수 있다.

스케일링과 자원 관리가 용이하여 대규모 데이터 처리에 유리하다.

 

서비스 디스커버리 및 로드 밸런싱

쿠버네티스는 서비스 디스커버리와 로드 밸런싱을 자동으로 처리한다. 

여러 컨테이너와 서비스 간의 통신을 효율적으로 관리할 수 있다.