쿠버네티스 네트워크
요즘 인스타 광고글이나 여러 블로그 포스팅등등 여러 곳에서 쿠버네티스라는 용어를 자주 접했다. 저게 뭘까...? 처음엔 네카라쿠배인줄..
쿠버네티스 그게 도대체 뭐야?
쿠버네티스란?
쿠버네티스는 컨테이너화된 애플리케이션을 여러 대의 컴퓨터(서버)에 효율적으로 배포하고 관리할 수 있도록 돕는 도구이다.
컨테이너?는 뭘까?
컨테이너는 애플리케이션과 그에 필요한 라이브러리, 설정 파일 등을 한데 묶어 어디서든 똑같이 실행할 수 있도록 만든 작은 가상화 기술이다.
쿠버네티스에서는 하나 이상의 컨테이너를 묶어서 Pod라고 부른다. 쉽게 말해, Pod는 애플리케이션의 한 부분으로, 내 앱이 실제로 살아있는 단위라고 생각하면 된다.
네트워크적 관점에서 쿠버네티스는 Pod가 서로 통신할 수 있는 가상 네트워크 환경을 제공하며, 외부 사용자도 이 네트워크를 통해 내 애플리케이션에 접근할 수 있도록 해준다.
쿠버네티스 네트워크의 기본 구조
쿠버네티스 클러스터(여러 서버가 모여 만든 하나의 큰 시스템) 안에는 여러 가지 네트워크 구성 요소가 있다. 크게 세 가지로 나눠볼 수 있는데
- Pod 네트워크 : 모든 Pod는 서로 IP 주소를 부여받아 같은 네트워크 상에서 직접 연결된다. 마치 같은 동네에 사는 사람들이 서로 쉽게 연락할 수 있는 것과 비슷하다.
- 서비스(Service) : 여러 Pod가 모여 있는 애플리케이션에는 '서비스'라는 추상화 계층을 두어, 외부 사용자나 다른 Pod들이 하나의 고정된 주소(예: 클러스터IP)를 통해 애플리케이션에 접근할 수 있도록 한다.
- 인그레스 / 이그레스 : 외부 네트워크(인터넷)와 내부 네트워크(클러스터)의 경계 역할을 담당한다. 인그레스는 외부에서 들어오는 요청을, 이그레스는 내부에서 외부로 나가는 요청을 다룬다.
또 쿠버네티스는 CNI(Container Network Interface)라는 표준을 사용해서 네트워크를 구성한다. 대표적인 CNI 플러그인으로 Calio. Flannel, Cilium 등이 있는데, 이들은 각각 특색 있는 기능을 제공해 네트워크 성능이나 보안을 강화해 준다.

위 다이어그램을 살펴보면
- 쿠버네티스 클러스터 : 여러 대의 서버(노드)로 구성된 전체 시스템을 의미한다.
- 마스터 노드 : 클러스터를 관리하는 두뇌 역할을 한다. 여기에서는 API 서버, 컨트롤러, 스케줄러 등이 포함되어 있어서, 워커 노드에 어떤 작업을 언제 할당할지 결정한다.
- 워커 노드들 : 실제 애플리케이션이 실행되는 서버들이다. 워커 노드에는 하나 이상의 Pod가 실행된다.
- Pod : 하나 이상의 컨테이너가 묶인 가장 작은 배포 단위이다. 하나의 Pod 내에 있는 컨테이너들은 같은 IP를 공유하며 함께 동작한다.
결론적으로 쿠버네티스는 컨테이너화된 애플리케이션이 제대로 실행되고, 필요한 경우 자동으로 확장 및 축소되도록 도와주는 도구이다.