Cloud(쿠버네티스)

Rina's·2023년 7월 20일

코드스테이츠

목록 보기
73/96
post-thumbnail

쿠버네티스

구글에서 개발한 컨테이너 오케스트레이션 도구로 규모 분산 애플리케이션의 배포, 관리, 확장을 자동화하는 오픈 소스 플랫폼

오케스트레이션
여러 개별적인 컴포넌트나 서비스들을 조율하고 관리하여 전체적인 시스템이나 애플리케이션이 원활하게 동작하도록 하는 프로세스 또는 기술. 주로 분산 시스템, 클라우드 환경, 컨테이너 오케스트레이션 등에서 사용

쿠버네티스 주요 기능

스케줄링 - 최적의 서버에 컨테이너 배포
롤링 업데이트 - 배포된 컨테이너 환경에 대한 자동화된 업데이트
오토 스케일링 - 서비스 제공을 위한 자동용량 증설
로드 밸런싱과 서비스 디스커버리 - 서비스 트래픽의 균등하게 분산, 상태관리, 포트 관리
자가 치유와 자동 복구 - 컨테이너에 문제가 생겼을떄 자동 대응

컨테이너 오케스트레이션 플랫폼의 주요 기능

클러스터를 통한 서비스 배포와 관리, 롤링 업데이트 지원
작업순서 제어 등의 스케줄링을 통한 로드 밸런싱
컨테이너간의 네트워킹 통신 관리
부하에 따른 자동 리소스 확장/축소하여 성능을 최적화하는 자동 스케일링
서비스 디스커버리 제공(분산 시스템에서 서비스들의 위치와 상태 정보를 자동으로 찾고, 관리하는 프로세스)

쿠버네티스의 주요 개념

노드
쿠버네티스 클러스터를 구성하는 개별 서버 또는 가상 머신을 나타내는 리소스
노드는 애플리케이션 컨테이너를 실행하고 관리(오케스트레이션)하는데 사용된다.
각 노드는 CPU, 메모리, 스토리지 등의 자원을 가지고 있으며, Pod가 노드 상에서 실행한다.

파드
쿠버네티스의 가장 작은 배포 단위. 하나 이상의 컨테이너를 포함한다. 관련 컨테이너를 함께 실행하고 네트워크와 스토리지 리소스를 공유할 수 있다.

레플리카세트
Pod의 복제본 집합을 정의하는 리소스
레플리카셋은 Pod의 원하는 개수를 지정하고, Pod의 가용성을 보장하며, 스케일링과 롤링 업데이트를 관리한다. 지정된 개수의 Pod가 항상 실행되도록 유지하며, Pod의 실패 또는 삭제된 경우 자동으로 복구한다

디플로이먼트
애플리케이션의 버전 관리 및 롤링 업데이트를 지원하는 리소스
Pod를 관리하고, Pod의 수를 자동으로 조정하며, 애플리케이션의 가용성과 확장성을 유지한다.

서비스
여러 Pod에 대한 로드 밸런싱, 서비스 디스커버리 및 네트워크 연결을 제공하는 리소스
애플리케이션에 대한 단일 진입점을 만들어 외부에서 접근할 수 있게 한다.

인그레스
외부에서 클러스터 내부로의 HTTP 및 HTTPS 트래픽을 관리하는 리소스
로드 밸런싱, 경로 기반 라우팅, SSL 인증서 관리 등을 제공하여 애플리케이션에 대한 인바운드 트래픽을 제어한다.

컨피그맵
설정 데이터를 저장하고 Pod에서 사용할 수 있도록 제공하는 리소스
환경 변수, 설정 파일 등을 저장하고 애플리케이션의 동적인 구성 변경을 지원한다.


일회성 작업을 실행하는 리소스. 특정 작업이 성공적으로 완료될 때까지 Pod를 실행하고 관리한다.
잡은 배치 작업, 데이터 처리, 크론 작업 등 한 번 실행되고 종료되는 작업에 적합하며 작업이 성공적으로 완료될 때까지 Pod를 유지하며, 실패한 경우에도 재시작하여 안정성을 제공한다

네임스페이스
쿠버네티스 클러스터 내에서 리소스를 그룹화하고 격리하는 논리적인 공간
네임스페이스는 리소스의 이름 충돌을 방지하고, 다른 팀 또는 애플리케이션 간의 리소스를 분리하여 관리할 수 있다.
네임스페이스는 클러스터 관리를 단순화하고 보안 및 리소스 관리를 용이하게 한다.

권장되지 않는 사용

모놀리식 아키텍처 - 여러 티어로 나누어 지지 않은 아키텍처는 마이크로서비스 분해 전략을 사용할 것
소수의 컨테이너 - docker-compose로도 충분
비교적 단순한 아키텍처, 스케일링이 필요하지 않은 경우 - 서버리스 서비스나 AWS를 권장

마이크로서비스를 컨테이너 방식으로 운영하는 조직이 확장성을 고려해야 할 때
무중단 서비스, 즉 고가용성을 제공해야 할 때
그 밖의 자가 치유, 배치 실행, 구성 관리, 로드 밸런싱의 사용

일반적인 사용

온프레미스 상에서 사설 클라우드 인프라 구성
하이브리드 클라우드 인프라 구성(저렴한 클라우드 서비스의 일부분을 도입)
쿠버네티스로 구성한 인프라를 퍼블릭 클라우드(AWS등)로 마이그레이션

온프레미스
기업이나 조직이 자체적으로 데이터 센터나 물리적인 서버를 보유하고 운영하는 환경

마이그레이션
시스템이나 플랫폼에서 다른 시스템이나 플랫폼으로 이동하는 과정을 말합니다. 데이터, 애플리케이션, 인프라 등을 새로운 환경으로 이동하는 것

클러스터 구조

  • 하나 이상의 컨트롤 플랜(제어판)과 연결된 워커 노드들로 구성
  • 각 워커 노드에는 kubelet이 있으며 이를 통해 파드들이 실행되고 관리됨
  • 각 파드는 노드 내에서 여러 개의 컨테이너를 가질 수 있으며, 이 컨테이너들은 같은 파드 내에서 네트워크와 파일 시스템을 공유하여 통신함
  • 파드를 통해 클러스터에서 애플리케이션의 구성 요소를 단위로 배포하고 실행함

노드(가상 환경, 서버)

클러스터의 워커머신(워커노드). 컨테이너화된 애플리케이션을 실행하기 위한 물리적 또는 가상화된 서버. 쿠버네티스 클러스터에 복수의 노드가 존재

파드(컨테이너 실행 환경, 컨테이너 묶음)

쿠버네티스의 배포 가능한 가장 작은 컴퓨팅 유닛으로 자체만으로 하나의 논리적인 호스트가 된다. 파드는 컨트롤 플레인에 의해 생성되고 적절한 노드에 배치되어 실행된다
파드 구성

  • 하나 이상의 애플리케이션 컨테이너
  • IP 주소
  • 볼륨과 같은 공유 스토리지

쿠버네티스에선 YAML 같은 설정 파일을 사용하여 '워크로드 리소스'와 파드를 정의할 수 있다

워크로드
쿠버네티스에서 작동되는 애플리케이션, 클라우드 분야에서는 '애플리케이션 실행 리소스 집합' 이라는 의미로 통용

쿠버네티스의 핵심은 컨테이너를 오케스트레이션하는 것으로, 파드 장애시 자동 복구하거나, 복제하거나 하는 등의 일을 자동으로 처리하는 것
파드는 때문에 디플로이먼트, 스테이트풀셋, 데몬셋을 이용해 관리하는 것이 바람직하다

디플로이먼트

리소스를 통해 파드 실행
컨트롤 플랜을 통해 파드 업데이트
파드 롤백

배포전략 종류

재 생성 (Recreate): 이전 버전을 삭제하고 새 버전 생성
블루/그린 배포: 한 번에 이전 버전에서 새 버전으로 연결을 전환
롤링 배포: 이전 버전을 scale down하고, 새 버전을 scale up 하는 방식으로 단계별로 교체, 롤아웃(rollout)이라고 부릅니다.(무 중단으로 가능해서 장점)
카나리 배포: 새 버전이 잘 작동한다고 판단되면, 이전 버전을 교체

profile
갭린이 리나

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

뛰어난 글이네요, 감사합니다.

답글 달기