본문 바로가기

kubernetes

쿠버네티스 네트워크

 

도커 컨테이너 네트워크 구조

쿠버네티스 네트워크 구조

우선 컨테이너 하나를 실행하면 docker0이라는 bridge가 달려있다.

bridge는 가상 네트워크 인터페이스인 veth0과 연결되있고 예시에는 172.17.0.2로 설정이되어있다.

veth0은 container1의 디폴트 게이트웨이이고 외부통신을 위해선 docker0과 eth0을 사용한다.

컨테이너를 한개 더생성하면 docker0인 브릿지가 각 veth에 연결이된다 .

위와같은 구조는 pod의 네트워크 스택을 공유하지않기에 효율성,로드밸런싱,안전한 통신,공유 리소스 등 이점을 가져갈수없다.

네트워크 스택을 공유하기위해선 여러개의 컨테이너가 veth0를 같이 사용하게되고

두컨테이너 모두 하나의 아이피로 접근 가능하다. 그리고 안에서는 localhost를 통해 port로 통신이 가능하게되고 두개의 process가 고립된 환경에서의 서로의 결합을 가지지 않으면서 네트워크공유가 가능하게된다.

쿠버네티스는 이러한것들을 pause라는 특별한 컨테이너를 통해 구현이된다.

이 특별한 컨테이너는 각 Pod마다 존재하며 다른 컨테이너에게 network interface를 제공하는 역할만을 담당한다.

pod 네트워크

그냥 도커를 설치하고 바로 사용한다면 위와같이 docker0가 같은 ip를 갖게된다.

쿠버네티스에서는 2가지 방법으로 해결을 한다.

첫번째는 각 노드 브릿지의 ip가 서로 겹치지 않게 전체를 아우르는 주소 대역을 할당한다.

두번째는 게이트웨이에 어떤패킷이 어떤 브릿지로 가야하는지에대해 라우팅 테이블을 설정한다.

이런식으로 쿠버네티스의 최종 네트워크의 모습이다.

쿠버네티스는 도커 표준 브릿지를 사용하지않고 자체 브릿지인 cbr을 사용한다.

 

'kubernetes' 카테고리의 다른 글

쿠버네티스 노드생성  (0) 2023.10.10
쿠버네티스 기본 환경 설정  (0) 2023.10.10
쿠버네티스 nodeport clusterip  (0) 2023.10.10
쿠버네티스 아키텍쳐  (0) 2023.10.10
쿠버네티스 개념  (0) 2023.10.10