본문 바로가기

인프라/kubernetes

Kubernetes 첫걸음

Kubernetes란?

컨테이너화된 어플리케이션을 쉽게 배포하고 관리해주는 소프트웨어 시스템

많은 수의 컨테이너를 연돌시키기 위한 통합 시스템으로 컨테이너를 다루기 위한 API 와 명령행 도구 등이 제공된다. 

개발자가 어플리케이션 매니페스트를 마스터에 개시하면 쿠버네티스는 어플리케이션을 워커 노드에 배포한다.

컨테이너를 이용한 어플리케이션 배포 외에도 도커 호스트 관리, 리소으를 고려한 컨테이너 배치, 스케일링, 컨테이너 로드밸런싱, 헬스 체크 등의 기능들이 제공된다.

 

쿠버네티스 사용의 장점

  • 애플리케이션 배포의 단순화
  • 하드웨어 활용도 높이기
  • 오토스케일링

쿠버네티스 클러스터와 노드

 

쿠버네티스 클러스터는 쿠버네티스의 여러 리소스를 관리하기 위한 집합체다.

여기서 가장 큰 개념은 노드다.

노드는 쿠버네티스의 관리 대상으로 컨테이너가 배치되는 대상이다.

클러스터 전체를 관리하는 마스터 노드가 최소 하나는 있어야한다.

 

쿠버네티스는 노드의 리소스 현황을 보고 컨테이너를 적절히 배치한다.

노드의 수 , 노드 사양 등에 따라 컨테이너 수가 결정된다고 보면 된다.

 

kube-apiserver - kubectl 로 부터 리소스를 조작하라는 지시를 받는다.

kube-scheduler - 노드를 모니터링하고 컨테이너를 배치할 적절한 노드를 선택한다.

POD

쿠버네티스에서는 컨테이너 대신 pod 개념이 존재한다.

pod 단위로 실행이 되며 pod은 자체 ip, host, 프로세스 등이 분리되어있다.

한 pod 는 한 노드에만 배치되어야 한다. 즉, 한 pod 이 여러 노드에 걸칠 수 없다.

 

pod 에 적어도 하나 이상의 컨테이너로 구성

 

 

쿠버네티스에서의 pod 동작방식

사용자가 docker 이미지를 hub에 올려놓고

쿠버네티스로 run 을 실행시키면 kubectl 은 마스터 노드에 rest api 호출을 하고 pod 이 생성시켜 워커 노드로 스케줄링해준다.

kubectl은 도커 이미지를 pull 해오고 워커 노드에 도커 이미지를 실행하라고 지시 후 실행이 된다.

 

pod 생성 방법

yaml 파일에 Pod 추가하고

spec 밑에 containers 에 실행할 어플리케이션 image 를 추가한다.

 

pod 와 pod 안에 컨테이너의 주소

파드엔 각각 고유의 가상 ip가 할당된다. 

파드안에 모든 컨테이너가 해당 ip를 공유하기때문에 컨테이너끼리의 통신이 가능하다.

 

 

 

 

 

'인프라 > kubernetes' 카테고리의 다른 글

kubernetes 서비스  (0) 2021.08.24
kubernetes 레플리케이션과 그밖의 컨트롤러  (0) 2021.08.23
kubernetes 파드  (0) 2021.08.23
Kubernetes 첫걸음 2  (0) 2021.08.20
kubernetes - kubernetes 란?  (0) 2020.11.16