쿠버네티스 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 인프런 강의를 보고 정리 하였습니다.