관리 메뉴

진취적 삶

02 쿠버네티스 소개 본문

개발 도서/핵심만 콕 쿠버네티스

02 쿠버네티스 소개

hp0724 2023. 11. 17. 10:15

2.1 쿠버네티스란 ?

쿠버네티스는 여러 서버로 구성된 클러스터 환경에서 컨테이너화된 프로세스를 관리하기 위한 컨테이너 오케스트레이션 플랫폼이다.

컨테이너는 가상 머신과는 다르게 호스트 운영체제를 공유한다.

가상머신에 비해 훨씬 더 가볍지만 가상머신과 마찬가지로 실행환경을 독립적으로 가져갈수 있다.

가볍기 때문에 쉽게 복제하거나 배포할수 있다 .

컨테이너를 여러 서버에 걸쳐 여러 개를 실행시키는데 체계적으로 관리하는 기술을 컨테이너 오케스트레이션 이라고 한다.

쿠버네티스를 통해 컨테이너의 배포 ,확장 및 스케줄링을 자동화 할수 있다.

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

컨테이너 오케스트레이션 : 다수의 서버 위에서 컨테이너의 전반적인 라이프 사이클을 관리해주는 플랫폼

  • 실행 및 배포 책임
  • 이중화와 가용성 보장
  • 수평 확장 및 축소를 관리
  • 스케줄링을 담당
  • 네트워크 설정 관리

2.1.2 데이터 센터 운영체제

쿠버네티스 = 데이터 센터 운영체제 혹은 클러스터 운영체제라고 소개

여러 컴퓨터의 집합으로 이루어진 하나의 거대한 시스템을 추사적으로 제어할수 있는 사용자 인터페이스를 제공하고 프로그램이 정상적으로 실행될수 있게 여러가지 기능을 제공하는 플랫폼

데이터 센터 : 여러 서버를 연결하여 하나의 시스템 처럼 동작하게 하는 컴퓨터의 집합

  • 여러 컴퓨터의 집합체
  • 리소스 컴퓨팅 자원의 군집

운영체제 : 컴퓨터를 직접적인 물리장치 제어 없이 컴퓨터를 활용 할수 있게 인터페이스를 지원하고 사용자가 필요한 각종 자원을 제공하는 서비스 제공자 역할을 수행

  • 하드웨어 추상화
  • 프로세스 스케줄링
  • 컴퓨팅 자원 관리
  • 사용자 인터페이스

2.2 쿠버네티스의 기본 개념

사용자가 개별 노드를 직접 제어하지 않고 쿠버네티스라는 추상화된 레이어를 통해 클러스터 제어

  1. 서버마다 특별한 이름을 부여하지 않는다. → 서버마다 특정 역할이 정해져 있지 않음
  2. 쿠버네티스 안에서는 모든 서버들이 마스터와 워커로만 구분 마스터에서는 쿠버네티스를 운용하기 위한 필수적인 핵심 컴포넌트 워커 노드들은 단순히 컨테이너를 실행하는 환경

2.2.2 바라는 상태 (Desired state)

쿠버네티스는 사용자의 요청에 따라 현재 상태가 바라는 상태와 동일해질도록 사전에 미리 정의된 특정 작업을 수행

바라는 상태 == 사용자가 생각하는 최종 애플리케이션 배포 상태

자가 치유 가능

2.2.3 컨트롤러

현재 상태를 바라는 상태로 변경하는 주체를 컨트롤러

2.2.4 쿠버네티스 리소스

쿠버네티스는 모든 것이 리소스로 표현된다.

기본적인 리소스 Pod : 하나 이상의 컨테이너를 가지는 쿠버네티스의 최소 실행 단위

프로세스(컨테이너) 실행한다는 의미는 prod 리소스를 생성하는것과 같다 .

2.2.5 선언형 커맨드

선언형 커맨드 :사용자가 바라는 상태를 선언적으로 기술하여 명령을 내리는 방법 ex,html

명령형 커맨드 : 어떻게 (how)에 대한 명령 ex . sql 쿼리

2.2.6 네임스페이스

쿠버네티스에는 클러스터를 논리적으로 분리하는 네임스페이스라는 개념이 있다.

네임 스페이스마다 서로 다른 권한 설정을 할수 있고 , 네트워크 정책 등을 설정할수 있다.

쿠버네티스 모든 리소스는

  1. 네임스페이스 레벨 리소스
  2. 클러스터 레벨 리소스

2.2.7 라벨 , 셀렉터

특정 리소스에 명령을 전달하거나 정보를 확인하고 싶을때 라벨링 시스템을 이용한다.

리소스에 key-value 형식의 태그정보를 붙인다.

태깅한 리소스를 찾기 위해 셀렉터 라는 것을 이용하여 특정 key-value 를 가진 리소스만 추출

2.2.8 서비스 탐색

k8s 에서는 클러스터 내에서 통신하기 위해 노드 위치와는 상관없이 어디서든 접근할수 있는 서비스 끝점이 필요하다.

서비스탐색 : 사용자는 서비스 끝점을 통해 다른 컨테이너와 통신할수 있다. 사용자는 서비스 탐색에 접근하기 위한 끝점의 접속 정보를 알아야 한다.

k8s 에서는 새로운 서비스의 IP를 찾을 필요 없이 도메인 주소를 기반으로 서비스에 접근할수 있다.

2.2.9 설정 관리

K8S 컨테이너를 실행할때 필요한 설정값 및 민감 정보를 플랫폼 레벨에서 관리할수 있게 제공

2.3 아키텍처

k8s 는 크게 마스터와 워커 노드로 구분된다.

2.3.1 마스터

마스터에는 핵심 컴포넌트들이 존재한다.

  • kube-apiserver(api 서버) : 마스터로 전달되는 모든 요청을 받아 드리는 REST API 서버
  • etcd(저장소) : 클러스터내 모든 메타 정보를 저장하는 저장소
  • kube-scheduler :사용자의 요청에 따라 적절하게 컨테이너를 워커 노드에 배치하는 스케줄러
  • kube-controller-manager : 현재 상태와 바라는 상태를 지속적으로 확인하며 특정 이벤트에 따라 특정 동작을 수행하는 컨트롤러
  • cloud-controller-manager: 클라우드 플랫폼에 특화된 리소스를 제어

2.3.2 워커 노드

  • kubelet : 마스터의 명령에 따라 컨테이너의 라이프 사이클을 관리하는 노드 관리자
  • kube-proxy: 컨테이너의 네트워킹을 책임지는 프록시
  • container runtime : 실제 컨테이너를 실행하는 컨테이너 실행 환경

2.4 장점

2.4.1 실행 환경 고립화

container runtime 이 설치된 곳이라면 정상적으로 동작하는것을 보장

2.4.2 리소스 관리

k8s 는 자체적으로 각 서버의 리소스를 체계적으로 관리할수 있는 기능을 제공

2.4.3 스케줄링

k8s 는 내장 스케줄러가 최적의 노드를 찾아 컨테이너를 배치

2.4.4 프로세스 관리

클러스터 레벨이서 프로세스 관리를 편리하게 할수 있다.

2.4.5 쉬운 장애 대응

k8s 는 프로세스마다 리소스 사용량 제한 가능 모든 실행 정보는 마스터에서 관리되고 각 노드들은 특별한 역할을 가지지 않아서 새로운 노드로 이주 작업 간단함

'개발 도서 > 핵심만 콕 쿠버네티스' 카테고리의 다른 글

06 쿠버네티스 네트워킹  (0) 2023.11.17
05 Pod  (0) 2023.11.17
04 쿠버네티스 첫 만남  (0) 2023.11.17
03 쿠버네티스 설치  (0) 2023.11.17
01 도커 기초  (0) 2023.11.17