본문 바로가기
개발/server - aws, docker, ubuntu etc

쿠버네티스 기본 정리

by 개발자종혁 2021. 4. 23.
728x90

Link (해당 유튜브 참고)

reference from kubernetes tutorial

 

What is K8s(쿠버네티스가 무엇인가)

> 오픈소스 컨테이너 오케스트레이션 툴 - 여러 환경에서 어플리케이션의 컨테이너화를 돕는다.

 

> 컨테이너 오케스트레이션 툴의 필요성

1. 단일 앱에서 마이크로서비스의 사용으로 변하는 트렌드

2. 컨테이너 사용 늘어남(예: 도커)

3. 수백개의 컨테이너를 관리하는데 필요성 증대.

 

 

> 컨테이너 오케스트레이션 툴의 특징

1. High Availability: 꺼지는 시간이 없다.

2. Scalability: 높은 퍼포먼스를 제공한다.

3. Disaster recovery: 백업과 복구를 제공한다.

 

Main k8s Components (주요 쿠버네티스 컴포넌트)

전체 components

1. pod

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

2. 컨테이너를 추상화한 것

3. pod 하나당 대개 1개의 앱

4. 각각의 pod는 고유 ip 주소를 갖는다.

5. 새로 생성할 시엔 새로운 ip가 생성된다.

 

 

2. service

1. 변하지 않는 ip 주소(pod와 다름)

2. pod의 생명주기와 서비스의 생명 주기는 다르다

서비스 종류

- external service: 유저가 브라우저에서 직접 ip로 접속 가능

- internal service: 유저가 브라우저에서 직접 ip로 접속할 수 없다. (db 등)

 

3. ingress

> 정해진 url을 service의 ip로 포워딩하는 작업을 한다. 

 

4. configmap

> 어플리케이션의 설정 파일이다.

> 다만 비밀번호나, 유저 명등의 중요 정보는 config map에서 다루지 않는 것이 좋다.

5. secret

> 중요 정보를 다루는 곳으로 base64형식으로 인코딩되어 저장한다.

 

data-storage

1. volumes

  • 이전의 구성요소들은 재시작하면 새로 바뀐다. 그러나 DB등은 재시작해도 새로 바뀌지 않아야 하기 때문에 컨테이너가 아닌 드라이브에 저장해야한다. 이를 volume이라한다.

deployment & stateful set

deployment

  • 어플리케이션을 복사(replicate)한다. 여기서 deployment가 생성되는데 이는 pods를 추상화한 것이다.  

stateful set

  • DB는 deploy시 replicate 되지 않는다. 왜냐하면 DB는 일관성을 유지해야 하기 때문이다.

    이를 해결하기 위해 statefulset이라는 개념이 있다.
  • 그러나 사용하기가 어렵기 때문에 보통 DB는 쿠버네티스 클러스터 밖에서 생성하여 사용한다.

summary

 

K8s Architecture( 쿠버네티스 아키텍처)

worker machine

- 각각의 노드는 여러개의 pod를 갖고 있다.

- 각각의 노드는 3가지 프로세스를 갖고있다.

3가지 노드 프로세스

 

container runtime 

pod안의 구동되는 container를 의미한다.

 

kublet

kubelet은 컨테이너와 노드 사이를 연결하는 역할을 한다.

kubelet은 pod와 그안의 container를 시작하는 역할을 한다.

 

 

kubeproxy

kubeproxy는 유저의 request가 왔을 때 여러개의 노드 중 하나로 포워드 하는 작업을 한다.

 

master processes

master process란? what is master process?

하는 일

- pod 스케줄링

- 모니터링

- 재스케줄, 재시작

- 새로운 노드 생성

 

각각의 master node는 4가지 process를 갖는다.

- API server

- scheduler

- controller manager

- etcd

 

1. API server

- 게이트웨이를 클러스터링하고

- 인증(authentication)을 하는 역할을 한다.

 

- 요청이 왔을때 validation을 하는 역할을 한다.

 

2. scheduler

- 새로운 pod을 생성할 때 스케줄링을 하는 곳이다.

- node 자리에서 어디가 자원이 많이 남았는지 본 후에 pod을 어디에 생성할지 결정하는 곳이다.

 

 

 

3. controll manager

- 상태가 변경하는 것을 감지하는 곳이다. (삭제 또는 신규 deploy요청이 들어왔을 경우)

 

 

4. etcd

- 클러스터의 뇌의 역할을 하는 곳이다.

- 클러스터의 변경사항이나 정보들을 key,value형태로 저장해 놓는다.

- 어플리케이션의 데이터는 보관하지 않는다.(클러스터 관련 정보만 저장한다.)

 

 

 

 

클러스터 생성의 예 

 

마스터노드는 적은 리소스, 워커 노드는 많은 리소스를 사용한다.

 

새로운 마스터와, worker 노드를 생성하고, 클러스터에 추가한다.

 

728x90

댓글