[Kubernetes] 쿠버네티스 입문

머신러닝 서비스를 개발, 배포, 운영을 시작하면서 도커에 대한 이해와 필요성을 느끼며 도입을 위해 공부를 시작했다. 도커를 공부하던 끝에 이제는 쿠버네티스를 시작해보려고한다. 그리고 올해 말에는 CKAD 도 도전해보려고 한다. Kubernetes글 시리즈에서는 Kubernetes를 처음 시작하고 공부한 내용들을 정리해보며, 시험 준비기까지 정리해보려고 한다. 시험을 실제로 도전하기전 학습하고 실습한 내용들을 정리하는 글이다보니 그 끝에 시험에 합격할지까지 관심있게 지켜봐주면 좋겠다. 시험 합격 여부와 상관없이, 이 노력과 글, 지식은 내 안에 쌓일테니 꼼꼼히 공부해보려고한다.

1. 쿠버네티스란?

쿠버네티스는 도커와 같은 컨테이너를 손쉽게 관리하는 플랫폼이다. 도커 컨테이너를 서비스 트래픽의 양과 컨테이너의 양에 따라 배포하고 확장해야하는 이슈가 생기기 마련이다. 이 다수의 컨테이너를 관리하고 이를 자동화하는 플랫폼이다. 있어보이는 표현으로는 컨테이너 오케스트레이션 툴이라고 정리할 수 있겠다.

Kubernetes

2. 쿠버네티스의 구성 요소

쿠버네티스의 구성요소를 정리하며, 각 요소들의 기능 및 용어를 정리해보자.

2-1. 파드 : Pod

파드란 쿠버네티스 내에서 생성되고 관리되는 배포 가능한 가장 작은 컴퓨팅 단위이다. 어플리케이션의 단일 인스턴스라고 이해할 수 있다. 즉, 파드는 하나 이상의 컨테이너 그룹이다. 파드 내에서는 메모리, 네트워크를 공유하고 함께 스케쥴링된다.

2-2. 노드 : Node

노드란 클러스터의 가상 혹은 물리 머신을 의미한다. 각 노드는 아래서 설명할 컨트롤 플레인에 의해 관리되고, 파드를 실행하는데 필요한 서비스를 포함한다. 클러스터 내에는 다수의 노드가 있을 수 있다. 모든 클러스터는 최소 한 개 이상의 워커 노드를 갖게 된다. 이후 워커 노드는 각 어플리케이션의 구성요소인 파드를 호스팅한다.

2-3. 컨테이너 런타임 엔진

Docker

컨테이너를 구성하고 실행하기 위해 각 노드 안에는 컨테이너 런타임 엔진이 존재한다. 이 컨테이너 런타임 엔진 개념에 포함되는 한가지 예가 바로 도커이다. 쿠버네티스는 도커뿐만아니라 rkt 와 같은 컨테이너와도 호환이 가능하다.

2-4. 컨트롤 플레인 : Control Plane

컨트롤 플레인이란 컨테이너의 전체 라이프 사이클을 정의하고, 배포하며, 관리하기 위한 API 이다. 컨트롤 플레인은 워커 노드와 클러스터 내 파드를 관리하게 된다. 컨트롤 플레인은 앞서 말한 노드와 항상 연결되어 있어, 노드가 정의한 실행환경에 따라 서로 통신하게 된다.

Control Plane
Control Plane - 출처 : https://www.redhat.com/ko/topics/containers/kubernetes-architecture

2-5. etcd

클러스터 설정 데이터와 클러스터의 상태를 저장하는 key-value 데이터베이스이다. 클러스터 내에 어떤 노드가 몇 개 존재하며, 어떤 파드가 동작하고 있는지에 관한 정보가 etcd 에 기록된다. 이 etcd에 대한 백업 계획이 필수일 것이다. 이 etcd 데이터 유실이 일어나면 클러스터가 사용하는 리소스 정보를 모두 잃어버리기 때문이다.

이 외에도 kude-scheduler, kube-controller-manager, cloud-controller-manager, kube-proxy, kubelet 등 쿠버네티스의 기능과 관련된 개념과 용어드리 많이 등장한다. 위 5개와 관련된 용어는 쿠버네티스를 처음 시작하고 실습하는데 필요한 개념이라면 이후에 나오는 용어들은 각각의 실습과 동시에 그 용어와 개념을 정리해보려고 한다.

몇년동안 줄곧 핫한 플랫폼을 항상 쓰던 기능만 찾아서 써왔다. 이제와서 자세하게 공부하는 것이 조금 늦은 것 같아 아쉬운 점이 많지만, 이 아쉬움을 동기 삼아 열심히 공부해보려고 한다.

Author

Emjay Ahn

Posted on

2023-03-26

Updated on

2023-03-26

Licensed under

Comments