본문 바로가기

클라우드/쿠버네티스(Kubernetes)

쿠버네티스 Kubernetes 개요

쿠버네티스는 서버 한 대는 Master로 사용하고 다른 서버들은 Node로 사용하여 Master에 여러 노드들을 연결한다.

 

Master Node1 Node2 Node3

→ 이것들이 묶여 하나의 클러스터(Cluster) 가 된다.

 

# Master

쿠버네티스의 전반적인 기능들을 컨트롤하는 역할

 

# Node

자원을 제공하는 역할

만약 클러스터의 자원을 늘리고 싶다면 ?

→ 노드를 추가 하면 된다.

 

# Namespace

클러스터안의 Namespace가 쿠버네티스 오브젝트들을 독립 된 공간으로 분리시켜준다.

Namespace 안에는 쿠버네티스 최소 배포 단위인 Pod 들이 있고, Pod 들에게 외부로부터 연결이 가능하도록 IP를 할당해주는 서비스가 있다. (서로다른 Namespace에 있는 파드들에게는 연결할 수 없다.)

 

Namespace에 ResourceQuota와 LimitRange를 달아서 한 Namespace에서 사용할 수 있는 자원의 양을 한정 시킬 수 있다. (pod의 갯수, cpu, memory 등을 제한)

 

# Pod

Pod안에는 여러 컨테이너들이 있다. 컨테이너 하나 당 하나의 앱이 동작하기 때문에, Pod에는 여러 앱들이 동작할 수 있다. Pod 생성시에 컨테이너 안에 환경변수값을 넣어주거나 파일을 마운트 해줄수 있다 Configmap이나 Secret을 통해 설정을 할 수 있다.

 

# Volume

Pod에 문제가 생겨서 재생성이 되면 데이터가 날아가기 때문에, Volume 을 만들어 Pod에 연결하여 데이터를 별도 저장한다. Volume을 이용해 Pod가 재생성되어서 데이터가 날아가는 문제를 해결한다.

 

# Controller

Pod들을  관리해주는 일, 컨트롤러의 종류가 많다. 각각의 사용 용도가 존재한다.

 

# Replication Controller, ReplicaSet

가장 기본적인 컨트롤러, Pod가 죽으면 강제로 살려준다. 하드의 개수를 늘렸다가 줄일 수 있다 (scale in/out)

 

# Deployment

배포후에 pod들을 새 버전으로 업그레이드 해준다. 업그레이드를 하는중에 문제가 생기면 Rollback을 쉽게 하도록 도와준다.

 

# Demonset

한 노드에 파드가 하나씩 유지되도록 해준다. (이렇게 사용해야하는 모듈들이 있다.)

 

# Job

어떤 특정 작업만 하고 pod를 종료 시켜야할때 사용한다.

 

# CronJob

위와 같은 Job들을 주기적으로 실행해야 할 때 사용한다.

 

 

 

 

 

 

출처:

https://www.inflearn.com/course/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EA%B8%B0%EC%B4%88 인프런 강의를 보고 정리 하였습니다.