쿠버네티스에서 파드와 컨테이너 네트워크 구조 이해하기

artp·2025년 1월 7일

kubernetes

목록 보기
11/18
post-thumbnail

쿠버네티스에 대해 공부하던 중 파드(Pod)와 컨테이너(Container)의 네트워크 구조 이해에 혼동이 있어 이를 이해하기 위해 글을 작성하게 되었습니다.

1. 파드와 컨테이너의 네트워크 구조에서의 차이

쿠버네티스에서 파드와 컨테이너는 밀접한 관계가 있지만 동일한 개념은 아닙니다.

  • 파드(Pod): 쿠버네티스에서 관리하는 가장 작은 배포 단위로, 하나 이상의 컨테이너를 포함할 수 있습니다.
  • 컨테이너(Container): 실제 애플리케이션과 그 실행 환경을 캡슐화한 실행 단위입니다.

파드는 쿠버네티스에서 고유한 IP 주소를 가지며, 이 IP는 파드 내 모든 컨테이너가 공유합니다.
파드 내 컨테이너들은 동일한 네트워크 네임스페이스를 사용하며, 서로 다른 파드와는 독립적으로 동작합니다.

2. 파드와 컨테이너의 IP

파드의 IP

  • 쿠버네티스는 각 파드에 고유한 IP 주소를 할당합니다.
  • 이 IP 주소는 파드가 생성되고 삭제될 때마다 바뀌며, 클러스터 내부에서 해당 파드의 컨테이너들과 통신하기 위한 유일한 식별자 역할을 합니다.

컨테이너의 IP

  • 파드 내 컨테이너는 독립적인 IP를 가지지 않고, 파드의 IP를 공유합니다.
  • 이는 파드 내부의 컨테이너들이 동일한 네트워크 네임스페이스를 사용하기 때문입니다.

❗️결론적으로, 파드의 IP = 파드 내 모든 컨테이너의 IP입니다.

3. 서로 다른 파드에서 동일한 포트 번호 사용

서로 다른 파드에서 동일한 포트 번호 사용이 가능합니다. 서로 다른 파드는 각각 고유한 IP를 가지기 때문에 동일한 포트 번호를 사용하더라도 충돌이 발생하지 않습니다.

예시

1. Pod A:

  • IP: 192.168.1.1
  • 컨테이너 포트: 8080

2. Pod B:

  • IP: 192.168.1.2
  • 컨테이너 포트: 8080

클라이언트는 IP 주소를 통해 특정 파드와 통신하므로, 포트 번호가 같더라도 각각의 파드를 구분할 수 있습니다.

  • 192.168.1.1:8080Pod A의 컨테이너
  • 192.168.1.2:8080Pod B의 컨테이너

4. 파드 내부의 컨테이너 간 통신

파드 내부의 컨테이너들은 로컬 호스트(localhost)와 포트 번호를 사용해 서로 통신합니다.

  • 파드 내 모든 컨테이너가 동일한 네트워크 네임스페이스를 공유하므로, localhost를 통해 서로 접근할 수 있습니다,
  • 하지만, 각 컨테이너가 사용하는 포트 번호는 서로 달라야 합니다. 동일한 포트 번호를 사용할 경우 충돌이 발생합니다.

예시:

1. 컨테이너 A:

  • 포트: 8080

컨테이너 B:

  • 포트: 9090

컨테이너 A가 컨테이너 B와 통신하려면 localhost:9090을 사용합니다.

5. 쿠버네티스에서 네트워크를 관리하는 이유

쿠버네티스는 컨테이너 하나하나를 관리하기보다는 파드(Pod)라는 그룹 단위로 네트워크를 관리합니다. 이렇게 하는 이유는 관리하기 더 쉽고, 효율적이기 때문입니다.

  1. 컨테이너를 묶어서 관리:

    • 컨테이너가 많아지면 각각 따로따로 IP를 관리하고 설정하는 게 번거로워집니다.
    • 그래서 쿠버네티스는 "파드"라는 단위로 컨테이너를 묶어서 한꺼번에 IP를 주고 관리합니다.
  2. 파드 내부 통신을 간단하게 함:

    • 파드 안에 있는 컨테이너들끼리는 localhost로 바로 연결됩니다. 서로 다른 IP를 주고 따로 연결을 설정할 필요가 없습니다.
  3. 파드끼리는 독립적:

    • 각 파드는 자신만의 IP를 가지고 있어서, 다른 파드와 겹치지 않고 안전하게 통신할 수 있습니다.

이렇게 함으로써 관리가 훨씬 간단해지고, 컨테이너 수가 많아져도 쉽게 확장할 수 있으며, 대규모 시스템에서도 유연하게 네트워크를 설정할 수 있습니다.

정리

  • 파드는 네트워크의 기본 단위로, 각 파드에 고유한 IP가 할당됩니다.
  • 컨테이너는 파드의 IP와 네트워크 네임스페이스를 공유하며, 내부에서는 localhost와 포트를 통해 통신합니다.
  • 서로 다른 파드는 고유한 IP를 가지므로 동일한 포트를 사용해도 충돌하지 않습니다.
profile
donggyun_ee

0개의 댓글