Container (ft. Docker & Kubernetes) - 2/2
저번 시간에 이어서 쿠버네티스를 공부해보겠다
Kubernetes
쿠버네티스는 컨테이너화된 애플리케이션을 관리하는 오픈 소스 플랫폼이다
여러 대의 서버에 걸쳐 컨테이너화된 애플리케이션을 쉽게 배포, 확장, 그리고 관리할 수 있도록 도와준다
즉, 컨테이너 오케스트레이션 도구라고 보면 된다!!
컨테이너 오케스트레이션 도구: 여러 개의 컨테이너를 효과적으로 배포, 관리, 확장, 그리고 운영할 수 있게 도와주는 도구
쿠버네티스를 이해하려면 몇 가지 핵심 개념을 알아야 한다
주요 개념
파드 (pod)
파드는 쿠버네티스에서 컨테이너의 최소 실행 단위를 말한다
하나의 파드는 여러 개의 컨테이너를 포함할 수 있고, 파드 내의 컨테이너들은 같은 애플리케이션의 여러 부분으로 동작하고, 같은 네트워크 환경을 공유한다
노드 (Node)
노드는 클러스터를 구성하는 개별 서버이다
종류는 마스터 노드, 워커 노드 두 가지 종류로 나눌 수 있다
- 마스터 노드(Master Node): 클러스터의 제어와 관리를 담당한다. 클러스터 상태를 추적하고, 스케줄링, 자원 관리 등의 작업을 처리한다
- 워커 노드(Worker node): 애플리케이션을 실제로 실행하는 노드다. 애플리케이션을 실행하는 컨테이너를 관리한다
클러스터 (Cluster)
클러스터는 여러 대의 서버(노드)들이 하나의 시스템처럼 동작하도록 구성된 환경이다
쿠버네티스는 여러 노드를 결합하여 클러스터를 구성하고, 애플리케이션은 클러스터 내에 배포할 수 있다
레플리카셋 (ReplicaSet)
레플리카셋은 지정된 수의 파드가 항상 존재하도록 보장하는 객체이다
예를 들어, 웹 애플리케이션에 대해 파드 3개를 항상 실행하도록 설정할 수 있다
디폴로이먼트 (Deployment)
디폴리이먼트는 레플리카셋의 상위 개념으로, 파드와 레플리카셋에 관한 배포를 관리한다
애플리케이션을 클러스터에 배포하고, 상태를 관리하는 방식이다
예를 들어, 특정 버전의 애플리케이션을 몇 개의 복제본으로 배포하고, 업데이트를 자동으로 관리할 수 있다
서비스 (Service)
서비스는 클러스터 내의 파드에 접근할 수 있는 고정된 네트워크 주소를 제공하는 객체이다
파드가 재시작되거나 새로운 파드가 추가되더라도, 서비스는 일정한 IP와 DNS 이름을 유지해서 애플리케이션이 외부에서 정상적으로 접근할 수 있도록 한다
간단하게 이런게 있고 어떤 흐름인지는 파악 했지만 제대로 파고 들기엔 아직 지식이 부족하고 양이 너무 방대하다....
그래서 다음에 하나씩 제대로 공부해보기로 하고 실습을 통해 맛이라도 봐야겠다..
실습
실습에는 최소 3대의 마스터 서버와 컨테이너 배포를 위한 노드 서버가 필요하기에 손쉽게 할 수 있는 minikube를 사용해보겠다
다음으로 minikube 클러스터에서 모든 네임스페이스의 파드 정보를 가져와보겠다
사진과 같이 쿠버네티스를 사용해서 배포를 했고, 현재 상태를 볼 수 있다
이때 status가 running이 되고, 포트번호를 확인한 후, ip주소로 들어가게 되면 잘 작동하는 것을 볼 수 있다