플랫 IPv4 모드 네트워크 모델 구현

개요

플랫 모드 네트워크 모델은 두 가지 유형으로, 정적 모드 네트워크 및 동적 모드 네트워크(Border Gateway Protocol 사용)가 있습니다. 노드가 단일 Layer 2 도메인에 걸쳐 있는 경우 정적 플랫 모드를 사용할 수 있습니다. 여러 Layer 2 도메인에 걸쳐 있는 노드의 경우 BGP를 통해 플랫 IP 모드를 사용합니다.

플랫 모드 네트워크 모델에서 포드는 클러스터 전체에서 고유한 IP 주소를 갖습니다. 할당된 포드 CIDR이 고유해야 하며 다른 서브넷과 겹치지 않아야 합니다. 예를 들어 IP 주소는 다른 클러스터의 노드 또는 다른 포드 CIDR에 사용되는 IP 주소와 겹칠 수 없습니다. 이러한 IP 주소는 외부에서 액세스할 수 있으므로 노드의 포드가 다른 모든 노드의 모든 포드와 통신할 수 있습니다. 포드에서 외부 IP 주소로의 통신에는 네트워크 주소 변환(NAT)이 필요하지 않습니다. 플랫 모드 네트워크 모델과 기본 섬(island) 네트워크 모델과의 비교에 대한 자세한 내용은 플랫 모드 모델 및 섬(island) 모드 모델 비교를 참조하세요.

IP 주소 공간이 크고 클러스터에 고유한 포드 CIDR을 할당할 수 있는 경우 플랫 모드 네트워크 모델을 사용하세요. ClusterCIDRConfigs를 동적으로 사용하여 포드 CIDR을 구성할 수 있습니다. 클러스터가 생성된 후 ClusterCIDRConfigs를 추가하거나 삭제할 수 있습니다. ClusterCIDRConfig에 대한 자세한 내용 및 사용 예시는 ClusterCIDRConfig 커스텀 리소스 이해를 참조하세요.

BGP를 사용한 플랫 모드에 관한 자세한 내용은 BGP를 지원하는 플랫 모드 네트워크 모델 구현을 참조하세요.

포드 IP 주소 연결 가능성 이해

IPv4의 정적 플랫 네트워크 모드에서 포드 IP 주소 연결 가능성은 주소 확인 프로토콜(ARP) 패킷을 기반으로 합니다. 따라서 포드가 동일한 Layer 2 도메인에 있는 경우에만 포드 IP 주소에 연결할 수 있습니다. 노드는 동일한 Layer 2 도메인에 속해야 합니다. 포드에 지정하는 IP 주소(ClusterCIDRConfigs 사용)는 클러스터 노드와 동일한 서브넷에 있어야 합니다. 구성된 포드 CIDR은 노드의 서브넷에 있어야 합니다. 예를 들어 222.1.0.0/16 서브넷은 클러스터의 노드에서 사용되며 포드의 서브넷 내에 있는 222.1.2.0/24의 작은 서브넷을 선택합니다. 클러스터의 다른 리소스가 포드에 할당된 범위의 IP 주소를 사용하지 않는지 확인합니다.

다음 섹션에서는 IPv4의 플랫 모드 네트워크 구성을 설명합니다.

정적 플랫 모드 네트워크를 구현하는 방법

기본적으로 Google Distributed Cloud 클러스터는 섬(Island) 모드 네트워킹에서 생성됩니다. 이 섹션에서는 클러스터에 플랫 모드 네트워킹을 설정하는 방법을 설명합니다.

플랫 모드 네트워크 모델을 사용하여 클러스터를 배포하려면 클러스터 구성 파일을 다음과 같이 변경합니다.

플랫 모드 네트워킹은 클러스터 생성 중에만 클러스터에 사용 설정할 수 있습니다. 플랫 모드 네트워킹을 사용하여 새 클러스터를 만들려면 다음 단계를 따르세요.

  1. 클러스터 구성 파일을 수정하여 clusterNetwork.flatIPv4를 추가하고 true로 설정합니다.

    플랫 모드 네트워킹을 사용 설정하면 클러스터 구성 파일(clusterNetwork.pods.cidrBlocks)에 지정된 포드 CIDR이 무시됩니다.

  2. ClusterCIDRConfig 매니페스트를 클러스터 구성 파일에 추가합니다.

    ClusterCIDRConfig 매니페스트에 다음 정보를 포함합니다.

    • metadata.namespace: 클러스터의 네임스페이스입니다.

    • spec.ipv4.cidr: 클러스터의 포드에 사용할 CIDR 블록 형식의 IP 주소 범위입니다. 이 범위는 클러스터 노드와 동일한 서브넷에서 가져와야 합니다.

    • perNodeMaskSize: 클러스터 만들기 프리플라이트 검사는 perNodeMaskSize 값이 maxPodsPerNode에 지정된 포드 수를 프로비저닝하기에 충분한지 확인합니다.

    • nodeSelector: nodeSelector 값과 일치하는 노드 라벨이 없으면 노드 조정이 대기 상태로 유지되며 클러스터 생성이 완료되지 않습니다.

클러스터 구성 파일의 다음 발췌문은 BGP 지원 없이 플랫 모드 네트워킹을 구현하는 방법을 보여줍니다. 이 발췌문에 표시된 CIDR은 예시일 뿐이므로 자체 CIDR로 바꿔야 합니다. 자체 CIDR로 대체할 때는 포드 IP 주소 연결 가능성 이해에 지정된 대로 포드 연결 가능성 기준을 충족하는지 확인합니다.

---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: flat-mode
  namespace: cluster-flat-mode
spec:
... (other cluster config omitted)

...
  # Cluster networking configuration
  clusterNetwork:
    flatIPv4: true
    services:
      cidrBlocks:
      - 10.96.0.0/12
... (other cluster config omitted)

...
---
apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: ClusterCIDRConfig
metadata:
  name: cluster-wide-1
  namespace: cluster-flat-mode
spec:
  ipv4:
    cidr: "222.1.0.0/16"
    perNodeMaskSize: 24

제한사항

Google Distributed Cloud에 대한 정적 플랫 모드 네트워크에는 다음과 같은 제한사항이 있습니다.

  • 플랫 모드 네트워크를 사용하는 포드는 단일 Layer 2 도메인 내에서 연결할 수 있습니다. 클러스터에 없지만 동일한 Layer 2 도메인에 있는 다른 머신도 포드에 연결할 수 있습니다. 이러한 제한은 이중 스택 클러스터가 생성될 때와 IPv6가 BGP 없이 플랫 모드일 때에도 IPv6에 적용됩니다. 자세한 내용은 포드 IP 주소 연결 가능성 이해를 참조하세요.

  • Google Distributed Cloud IPAM 컨트롤러는 구성된 포드 CIDR 내에서 IP 주소 가용성을 추적합니다. 다른 기기에서 이미 사용 중인 IP는 추적하지 않습니다. 따라서 Layer 2 도메인의 다른 IP는 포드 CIDR을 간섭해서는 안 됩니다. 자세한 내용은 포드 IP 주소 연결 가능성 이해를 참조하세요.