반응형
쿠버네티스 (Kubernetes, K8S)가 뭘까?
컨테이너(Container)를 관리해 주는 소프트웨어
IT 업계가 하나의 큰 서버를 여러개의 마이크로서비스로 나누면서, 각각의 마이크로서비스가 독립적으로 작동할 필요가 생겨, VM보다 가벼운 컨테이너를 사용하게 됐습니다. 처음에는 수동으로 관리하거나, Docker Compose 같이 간단하게 관리하는 것으로 충분했지만, 점점 컨테이너들의 복잡도가 증가하면서 쿠버네티스를 사용해 컨테이너를 관리하게 됐습니다.
컨테이너는 보통 Docker를 떠올리지만, 쿠버네티스는 Docker를 포함해서 Containerd, CRI-O, rkt도 지원합니다.
쿠버네티스에 관한 흥미로운 사실들
- 구글에서 처음 개발했습니다.
- Golang이라는 프로그래밍 언어로 개발 됐습니다.
- 전체 이름은 Kubernetes지만, K와 S 사이에 8글자가 있어 줄여서 K8S라고도 부릅니다.
쿠버네티스의 역할
- (더 편리하게) 컨테이너 배포 / 관리
- 트래픽에 따라 자동으로 스케일업(Scale up), 스케일아웃(Scale out)
- 롤벡(Rollback) 지원
(간단한) 쿠버네티스 구조
쿠버네티스 공식문서에서 가져온 이미지입니다.
- 우선, 클러스터(Cluster)는 노드(Node)들이 모여 있는 곳입니다.
- 노드(Node)는 컨테이너(Container)를 작동시키는 역할을 하는 VM이나 물리적인 컴퓨터입니다.
- 노드에는 마스터 노드(Master Node)와 워커 노드(Worker Node)가 있습니다.
- 마스터 노드(Master Node)는 클러스터를 관리하는 역할을 하고, 안에 Control Plane이 있습니다.
- 워커 노드(Worker Node)는 개발자가 개발한 컨테이너가 돌아가는 곳입니다.
- 포드(Pod)는 쿠버네티스의 가장 작은 배포 단위입니다. 고유한 IP 주소를 가지고 있습니다.
마스터 노드(Master Node) 자세히 알아보기
마스터 노드 안의 Control Plane에는 다양한 역할을 부여 받은 요소들로 구성되어 있습니다.
API 서버 | API Server | 쿠버네티스로 배포한 서비스에 접근하게 해 줍니다. |
클러스터 스토어 | Cluster Store | 클러스터의 상태, 설정 등을 저장(Store)하는 곳입니다. |
스케쥴러 | Scheduler | 여러가지 조건(Healthy, 리소스가 충분한지 등)에 따라 새로운 workload나 pod을 노드에 할당 해 줍니다. |
컨트롤러 매니저 | Controller Manager | 현재 상태(Current State)와 이상적인 상태(Desired State)를 계속 비교하면서 다른게 있으면 고칩니다. |
클라우드 컨트롤러 매니저 | Cloud Controller Manager | 클라우드에 배포할 때 클라우드의 서비스들과 소통합니다. |
워커 노드(Worker Node) 자세히 알아보기
워커 노드는 3가지로 구성되어 있습니다.
큐브렛 | Kubelet | 노드의 컨테이너들을 관리하는 역할을 합니다. Container Registries(Dockerhub 같은)에서 Image pull 해 오는게 Kubelet 입니다. |
컨테이너 런타임 | Container Runtime | 컨테이너가 돌아가는 곳 입니다. Docker, Containerd, CRO-O 등을 지원합니다. |
큐브 프록시 | Kube Proxy | 네트워크 관련 기능 관리 (로드 밸런서, 모든 노드가 고유한 IP 주소 가지게 하기 등) |
반응형
'👨💻 프로그래밍 > ⚙️ 배포 (AWS, Docker, K8S)' 카테고리의 다른 글
다양한 배포 전략 비교 (카나리, 블루그린, 롤링, 그림자) (0) | 2024.08.24 |
---|---|
Logback 간단하게 알아보기 (0) | 2023.10.01 |
Git 파일의 Life Cycle 이해하기 (0) | 2023.06.29 |
도커(Docker)가 뭐고 어디에 쓰는걸까? (0) | 2022.08.16 |