쿠버네티스(Kubernetes)

박민하·2022년 11월 8일
0

Deploy

목록 보기
15/15
post-thumbnail

✅ 쿠버네티스

  쿠버네티스는 Google이 설계한 오픈소스 컨테이너 오케스트레이션(Container Orchestration) 도구다. 컨테이너 오케스트레이션은 컨테이너의 대규모 운영, 배포, 관리, 확장, 네트워킹을 자동화하는 체계를 의미한다. 대표적인 컨테이너 오케스트레이션 툴은 쿠버네티스(Kubernetes), 도커 스웜(Docker Swarm), 아파치 메소스(Apache Mesos) 가 있다.

✅ 쿠버네티스 컴포넌트

  쿠버네티스 컴포넌트는 쿠버네티스의 구성요소를 의미한다. 쿠버네티스를 배포하면 클러스터(cluster)를 얻는다. 모든 클러스터는 최소 한 개의 노드를 가지고, 노드는 애플리케이션의 구성요소인 파드를 호스트한다.

  • 클러스터(cluster): 쿠버네티스의 리소스 제어단위
  • 노드(node): 파드가 실행되는 서버
  • 파드(pod): 1개 이상의 컨테이너 집합체

  쿠버네티스의 컴포넌트는 쿠버네티스의 기능제어를 담당하는 컨트롤 플레인(Control Plane) 컴포넌트와, 컨트롤 플레인 컴포넌트의 요청을 받아 각 노드에 동작시키는 노드(Node) 컴포넌트가 있다.

1. 컨트롤 플레인(Control Plane) 컴포넌트

  • kube-apiserver
    쿠버네티스 클러스터에 kubectl로 명령을 전달하면 api-server가 요청을 처리한다.
    예) 파드의 실행, 종료 등에 대한 명령을 노드로 전달할 수 있다.

  • etcd(엣시디)
    key-value 형태로 클러스터 및 리소스의 구성정보, 상태정보 및 명세정보를 분산 저장하는 저장소다.

  • kube-scheduler
    파드(pod)를 어떤 노드로 배치할지 결정한다.

  • kube-controller-manager
    다양한 컨트롤러 프로세스를 실행하고 클러스트의 상태를 관리한다.

    • 노드 컨트롤러: 노드가 다운됐을 때 대처한다.
    • 레플리케이션 컨트롤러: 적절한 파드 수를 배치한다.
    • 엔드포인트 컨트롤러: 서비스와 파드를 연결한다.
    • 서비스어카운트 & 토큰컨트롤러: 새로운 네임스페이스에 대한 기본계정과 API접근토큰을 생성한다.

2. 노드(Node) 컴포넌트

  • kubelet(쿠블릿)
    kube-apiserver 에서 받은 명령을 노드에서 실행하여 파드 생성, 중지 등의 관리를 담당한다.

  • container runtime
    파드에 포함된 컨테이너를 실행한다.

  • kube-proxy
    네트워크 연결을 관리하고 요청을 전달한다.

✅ Kubernetes의 특징

✔ 무중단(Fault tolerance-FT) 서비스

  서비스를 중단하지 않고도 업데이트할 수 있다.

✔ 서비스 디스커버리(Service Discovery)

  서로 다른 서비스들의 IP와 Port 정보에 대해서 저장하고 관리하는 것을 서비스 디스커버리라고 한다. 쿠버네티스는 DNS 이름을 사용하거나 자체 IP 주소를 사용하여 컨테이너를 노출할 수 있다.

✔ 로드 밸런싱(Load balancing)

  컨테이너에 대한 트래픽이 많으면, 쿠버네티스는 네트워크 트래픽을 로드밸런싱(트래픽에 따라 컨테이너 수를 자동 조절)하고 배포하여 배포가 안정적으로 이루어질 수 있다.

✔ 스토리지 오케스트레이션(Storage Orchestration)

  저장소 시스템을 자동으로 탑재한다.

✔ 자동화된 롤아웃과 롤백(Rollout and Rollback)

배포된 컨테이너의 현재 상태를 원하는 상태로 변경할 수 있다. 예를 들어 쿠버네티스를 자동화해서 배포용 새 컨테이너를 만들고, 기존 컨테이너를 제거하고, 모든 리소스를 새 컨테이너에 적용할 수 있다.

✔ 자동화된 빈 패킹(bin packing)

컨테이너화된 작업을 실행하는데 사용할 수 있는 쿠버네티스 클러스터 노드를 제공한다. 각 컨테이너가 필요로 하는 CPU와 메모리(RAM)를 쿠버네티스에게 지시한다. 쿠버네티스는 컨테이너를 노드에 맞추어서 리소스를 가장 잘 사용할 수 있도록 해준다.

✔ 자동화된 복구(self-healing)

쿠버네티스는 응답하지 않는 컨테이너를 자동으로 죽이고 재시작하며, 이 과정은 클라이언트에 보여주지 않는다.

✔ 시크릿과 구성 관리

쿠버네티스를 사용하면 암호, OAuth 토큰 및 SSH 키와 같은 중요한 정보를 저장하고 관리 할 수 있다. 컨테이너 이미지를 재구성하지 않고 스택 구성에 시크릿을 노출하지 않고도 시크릿 및 애플리케이션 구성을 배포 및 업데이트 할 수 있다.


[참고 사이트]

도커와 쿠버네티스 간단 비교
kubernetes 공식문서
kubernetes | seongjin.me
쿠버네티스 알아보기 1편: 쿠버네티스와 컨테이너, 도커에 대한 기본 개념
쿠버네티스(kubernetes) (2) - 기본 용어 - 개념 - 컴포넌트 - 클러스터 구성
Kubernetes란? (클러스터,노드,파드(pod), 리플리카셋, 디플로이먼트)

profile
backend developer 🐌

0개의 댓글