ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 서브넷(subnet)이란?
    Back-End/Docker & k8s 2024. 8. 29. 09:36
    반응형

     서브넷(Subnet)은 네트워크를 더 작은 네트워크 단위로 나누는 방법을 의미합니다. 이는 IP 주소를 효율적으로 관리하고, 네트워크 트래픽을 효과적으로 라우팅하기 위해 사용됩니다. 서브넷은 "서브네트워크(Subnetwork)"의 줄임말로, 대규모 네트워크를 여러 작은 네트워크로 구분하여 관리할 때 유용합니다.

    subnet

    서브넷의 주요 개념

    1. IP 주소:
      • 모든 네트워크 장치(컴퓨터, 서버, 라우터 등)는 네트워크에서 고유한 IP 주소를 가져야 합니다. IP 주소는 일반적으로 IPv4 기준으로 32비트 길이의 숫자로, 네 부분(옥텟)으로 나뉘며, 각 부분은 0에서 255 사이의 값을 가집니다.
      • 예: 192.168.1.1
    2. 네트워크와 호스트 부분:
      • IP 주소는 네트워크 부분(network portion)과 호스트 부분(host portion)으로 나뉩니다. 네트워크 부분은 네트워크의 식별자 역할을 하며, 호스트 부분은 해당 네트워크 내에서 장치(호스트)를 식별합니다.
      • 예: IP 주소 192.168.1.1에서 192.168.1은 네트워크 부분, .1은 호스트 부분입니다.
    3. 서브넷 마스크(Subnet Mask):
      • 서브넷 마스크는 네트워크 부분과 호스트 부분을 구분하는 역할을 합니다. 서브넷 마스크는 IP 주소와 같은 형식을 가지며, 1로 표시된 비트는 네트워크 부분, 0으로 표시된 비트는 호스트 부분을 나타냅니다.
      • 예: 255.255.255.0이라는 서브넷 마스크는 192.168.1.0/24 네트워크를 나타냅니다. 여기서 /24는 네트워크 부분이 24비트임을 의미합니다.
    4. 서브넷 분할:
      • 서브넷은 큰 네트워크를 더 작은 네트워크로 나누는 과정에서 생깁니다. 예를 들어, 192.168.1.0/24 네트워크를 두 개의 서브넷으로 나누면, 192.168.1.0/25와 192.168.1.128/25라는 두 개의 서브넷이 생깁니다. 이 경우, 각 서브넷은 128개의 IP 주소를 가질 수 있습니다.
    5. CIDR 표기법:
      • 서브넷을 나타낼 때, CIDR(Classless Inter-Domain Routing) 표기법이 사용됩니다. 예를 들어, 192.168.1.0/24는 IP 주소 192.168.1.0과 24비트의 네트워크 부분을 가진 서브넷을 의미합니다.
      • /24는 서브넷 마스크를 255.255.255.0으로 나타내며, 이는 24비트가 네트워크 부분임을 의미합니다.

    서브넷의 활용

    1. 네트워크 효율성:
      • 서브넷을 사용하면 대규모 네트워크를 작은 단위로 나눌 수 있어, 네트워크 트래픽을 효율적으로 관리할 수 있습니다. 예를 들어, 부서별로 서브넷을 분리하여 네트워크 트래픽이 서로 간섭하지 않도록 할 수 있습니다.
    2. 보안:
      • 서브넷을 나누면 네트워크 간의 트래픽을 제한하거나 격리할 수 있어, 보안을 강화할 수 있습니다. 예를 들어, 중요한 서버는 별도의 서브넷에 두고 접근을 제한할 수 있습니다.
    3. IP 주소 관리:
      • 서브넷은 IP 주소 공간을 효율적으로 사용할 수 있도록 도와줍니다. 필요한 만큼의 IP 주소를 가진 서브넷을 만들어 낭비를 줄이고, 관리하기 쉽게 할 수 있습니다.
    4. 트래픽 제어:
      • 서브넷 간 라우팅 규칙을 설정하여, 특정 트래픽이 특정 서브넷으로만 이동하도록 제어할 수 있습니다. 이는 네트워크 성능을 최적화하고, 트래픽의 분산을 도와줍니다.

     

    Docker에서의 서브넷

    1. 서브넷 정의:
      • Docker에서 서브넷은 네트워크의 IP 주소 범위를 지정하는 데 사용됩니다. 예를 들어, 192.168.1.0/24라는 서브넷은 192.168.1.0부터 192.168.1.255까지의 IP 주소를 포함합니다.
    2. 브리지 네트워크와 서브넷:
      • Docker는 기본적으로 브리지 네트워크를 생성하며, 이 네트워크에는 고유의 서브넷이 할당됩니다. Docker 컨테이너는 브리지 네트워크에 연결될 때 이 서브넷 내에서 IP 주소를 받습니다.
      • docker network create 명령을 사용하여 사용자 정의 네트워크를 생성할 때, --subnet 옵션을 통해 서브넷을 지정할 수 있습니다.
      docker network create --subnet=192.168.10.0/24 my_custom_network
      이 명령은 192.168.10.0/24 서브넷을 사용하는 my_custom_network라는 사용자 정의 네트워크를 생성합니다.
    3. 서브넷 사용:
      • 컨테이너가 동일한 서브넷 내에 있을 경우, 서로 직접 통신할 수 있습니다. 반대로, 다른 서브넷에 속한 경우에는 라우팅 규칙을 통해 통신해야 합니다.
      • Docker의 네트워크 드라이버(예: 브리지, 오버레이)는 서브넷을 기반으로 네트워크 격리, IP 주소 할당 등을 관리합니다.

    Kubernetes에서의 서브넷

    1. 쿠버네티스 네트워크 구조:
      • Kubernetes 클러스터 내에서는 여러 서브넷이 존재합니다. 각 파드에 고유한 IP 주소가 할당되며, 이는 일반적으로 클러스터의 서브넷 범위 내에 있습니다.
      • Kubernetes에서 서브넷은 클러스터 내에서 파드(Pod), 서비스(Service), 노드 간의 통신을 관리하는 데 사용됩니다.
    2. 파드 서브넷(Pod Subnet):
      • 각 파드는 고유한 IP 주소를 가지며, 이는 파드 서브넷 내에서 할당됩니다. 파드 간 통신은 동일한 서브넷 내에서 직접 이루어지거나, 다른 서브넷으로 라우팅될 수 있습니다.
      • CNI(Container Network Interface) 플러그인은 Kubernetes에서 네트워크를 설정할 때 서브넷을 지정하고 관리하는 역할을 합니다. 예를 들어, Flannel이나 Calico 같은 네트워크 플러그인은 파드 서브넷을 설정합니다.
    3. 서비스 서브넷(Service Subnet):
      • 서비스 서브넷은 클러스터 내에서 서비스를 노출할 때 사용하는 IP 주소 범위입니다. 클러스터 IP(ClusterIP)는 이 서브넷 내에서 할당되며, 서비스는 파드에 대한 트래픽을 이 클러스터 IP로 라우팅합니다.
      • Kubernetes 클러스터를 설정할 때, --service-cluster-ip-range 옵션을 통해 서비스 서브넷을 지정할 수 있습니다.
    4. 클러스터 네트워킹:
      • Kubernetes 클러스터의 각 노드는 클러스터 서브넷 내에서 서로 통신할 수 있습니다. 이때, 각 노드는 자신의 파드에게 서브넷 내에서 고유한 IP 주소를 할당합니다. 클러스터 네트워크는 이러한 IP 주소 범위를 포함하며, 네트워크 플러그인에 의해 관리됩니다.
      예를 들어, 10.244.0.0/16 서브넷은 모든 파드가 사용할 수 있는 IP 주소 범위를 나타냅니다. 노드가 파드를 생성할 때, 이 범위 내에서 IP 주소를 할당받습니다.

    요약

    • Docker에서 서브넷: Docker 네트워크 내에서 컨테이너의 IP 주소 범위를 정의하는 데 사용됩니다. 서브넷을 통해 컨테이너 간의 통신 경로와 네트워크 격리가 관리됩니다.
    • Kubernetes에서 서브넷: 파드와 서비스의 IP 주소 할당을 관리하는 데 사용됩니다. Kubernetes에서는 파드 서브넷, 서비스 서브넷 등이 있으며, 네트워크 플러그인에 의해 서브넷 설정과 관리가 이루어집니다.

    서브넷은 네트워크 구성을 관리하고, 클러스터 내에서의 통신을 효율적으로 처리하는 데 중요한 역할을 합니다.

    반응형
Designed by Tistory.