NCP에 대해 특정 네트워킹 리소스를 구성하는 방법에는 두 가지가 있습니다. 이 섹션에서는 NSX Manager 웹 UI의 네트워킹 탭을 사용하는 방법을 설명합니다.

NCP 구성 파일 ncp.ini에서 해당 UUID 또는 이름을 사용하여 NSX-T 리소스를 지정할 수 있습니다.

게이트웨이 및 세그먼트

  1. Kubernetes 노드의 세그먼트를 생성합니다(예: Segment1).
  2. Tier-0 게이트웨이(예: T0GW1)를 생성합니다. 공유 Tier-1 토폴로지가 없는 경우 ncp.ini[nsx_v3] 섹션에서 top_tier_router 옵션을 게이트웨이의 ID로 설정합니다. 공유 Tier-1 토폴로지 구성에 대한 자세한 내용은 아래를 참조하십시오. 이 게이트웨이에서 NAT 규칙을 구성하려는 경우 HA 모드를 액티브-대기로 설정합니다. 그렇지 않은 경우, 액티브-액티브로 설정합니다. 경로 재배포를 사용하도록 설정합니다. 또한 외부 네트워크에 액세스할 수 있도록 이 게이트웨이를 구성합니다.
  3. Tier-1 게이트웨이(예: T1GW1)를 생성합니다. 이 게이트웨이를 Tier-0 게이트웨이에 연결합니다.
  4. T1GW1에 대한 라우터 보급을 구성합니다. 최소한 NSX 연결 및 NAT 경로를 사용하도록 설정해야 합니다.
  5. T1GW1Segment1에 연결합니다. 게이트웨이 포트의 IP 주소가 Kubernetes 노드의 IP 주소와 충돌하지 않는지 확인합니다.
  6. 각 노드 VM에 대해 컨테이너 트래픽용 vNIC가 자동으로 생성된 논리적 스위치에 연결되어 있는지 확인합니다. 세그먼트와 이름이 같은 항목(즉, Segment1)을 고급 네트워킹 및 보안 탭에서 찾을 수 있습니다.
NCP는 vNIC의 VIF ID를 알고 있어야 합니다. [네트워킹] > [세그먼트]로 이동하여 자동으로 생성되는 Segment1의 포트를 볼 수 있습니다. 이러한 포트는 태그 속성을 제외하고는 편집할 수 없습니다. 이러한 포트에는 다음과 같은 태그가 있어야 합니다.
scope: 'ncp/node_name', value: '<node_name>'
scope: 'ncp/cluster', value: '<cluster_name>'

이러한 태그는 해당하는 논리적 스위치 포트에 자동으로 전파됩니다. 노드 이름이 변경되면 태그를 업데이트해야 합니다.

NCP가 실행되는 동안 Kubernetes 클러스터를 확장하려는 경우, 예를 들어 클러스터에 노드를 더 추가하려는 경우 "kubeadm join"을 실행하기 전에 해당 스위치 포트에 태그를 추가해야 합니다. 먼저 태그를 추가하지 않고 "Kubeadm join"을 실행하면 새 노드가 연결되지 않습니다. 이 경우에는 태그를 추가한 후 NCP를 다시 시작하여 이 문제를 해결해야 합니다.

노드 VM에 대한 스위치 포트를 식별하려면 다음과 같은 API 호출을 수행할 수 있습니다.
/api/v1/fabric/virtual-machines
응답에서 노드 VM을 찾고 ''external_id'' 특성 값을 검색합니다. 또는 다음과 같은 API 호출을 수행할 수 있습니다.
/api/v1/search -G --data-urlencode "query=(resource_type:VirtualMachine AND display_name:<node_vm_name>)"
외부 ID를 가져온 후에는 다음 API에서 VM에 대한 VIF를 검색하는 데 사용할 수 있습니다. VIF는 VM이 시작될 때까지 채워지지 않습니다.
/api/v1/search -G --data-urlencode \
"query=(resource_type:VirtualNetworkInterface AND external_id:<node_vm_ext_id> AND \
_exists_:lport_attachment_id)"

lport_attachment_id 특성은 노드 VM에 대한 VIF ID입니다. 그런 다음, 이 VIF에 대한 논리적 포트를 찾고 필요한 태그를 추가할 수 있습니다.

Kubernetes 포드용 IP 블록

네트워킹 > IP 주소 관리 > IP 주소 블록으로 이동하여 하나 이상의 IP 블록을 생성합니다. CIDR 형식으로 IP 블록을 지정합니다. ncp.ini[nsx_v3] 섹션에서 container_ip_blocks 옵션을 IP 블록의 UUID로 설정합니다. NCP가 자동으로 IP 블록을 생성하도록 하려면 CIDR 형식의 쉼표로 구분된 주소 목록을 사용하여 container_ip_blocks 옵션을 설정할 수 있습니다. container_ip_blocks를 UUID 및 CIDR 주소 둘 다로 설정할 수는 없습니다.

기본적으로 프로젝트는 container_ip_blocks에 지정된 IP 블록을 공유합니다. ncp.ini[nsx_v3] 섹션에서 no_snat_ip_blocks 옵션을 설정하여 구체적으로 비 SNAT 네임스페이스(Kubernetes용) 또는 클러스터(PCF용)를 위한 IP 블록을 생성할 수 있습니다.

NCP가 실행되는 동안 비 SNAT IP 블록을 생성하면 NCP를 다시 시작해야 합니다. 그렇지 않으면, NCP는 고갈될 때까지 공유 IP 블록을 계속 사용합니다.

IP 블록을 생성할 때 접두사는 NCP의 구성 파일 ncp.ini에 있는 subnet_prefix 옵션의 값보다 크지 않아야 합니다. 기본값은 24입니다.

외부 IP 풀

외부 IP 풀은 SNAT 규칙을 사용하여 포드 IP를 변환하고 SNAT/DNAT 규칙을 사용하여 수신 컨트롤러 및 LoadBalancer-type 서비스를 노출하는 데 사용되는 IP 주소(Openstack 유동 IP와 동일) 할당에 사용됩니다. 이러한 IP 주소를 외부 IP라고도 합니다.

네트워킹 > IP 주소 관리 > IP 주소 풀로 이동하여 IP 풀을 생성합니다. ncp.ini[nsx_v3] 섹션에서 external_ip_pools 옵션을 IP 풀의 UUID로 설정합니다. NCP가 자동으로 IP 풀을 생성하도록 하려면 CIDR 형식의 쉼표로 구분된 주소 목록 또는 IP 범위를 사용하여 external_ip_pools 옵션을 설정할 수 있습니다. external_ip_pools를 UUID 및 CIDR 주소 둘 다로 설정할 수는 없습니다.

여러 Kubernetes 클러스터가 동일한 외부 IP 풀을 사용합니다. 각 NCP 인스턴스는 관리하는 Kubernetes 클러스터에 대해 이 풀의 하위 집합을 사용합니다. 기본적으로 포드 서브넷에 대해 동일한 서브넷 접두사가 사용됩니다. 다른 서브넷 크기를 사용하려면 ncp.ini[nsx_v3] 섹션에서 external_subnet_prefix 옵션을 업데이트합니다.

구성 파일을 변경하고 NCP를 다시 시작하여 다른 IP 풀로 변경할 수 있습니다.

공유 Tier-1 토폴로지

공유 Tier-1 토폴로지를 사용하도록 설정하려면 다음 구성을 수행합니다.
  • top_tier_router 옵션을 Tier-0 게이트웨이 또는 Tier-1 게이트웨이의 ID로 설정합니다. Tier-1 게이트웨이인 경우 외부 연결을 위해 Tier-0 게이트웨이에 연결해야 합니다.
  • 포드 트래픽의 SNAT를 사용하도록 설정한 경우 Kubernetes 노드에 대한 세그먼트의 업링크를 top_tier_router에 설정된 동일한 Tier-0 또는 Tier-1 게이트웨이로 수정합니다.
  • single_tier_topology 옵션을 True로 설정합니다. 기본값은 False입니다.
  • NCP가 자동으로 상위 계층 라우터를 Tier-1 게이트웨이로 구성하도록 하려면 top_tier_router 옵션 설정을 해제하고 tier0_gateway 옵션을 설정합니다. NCP는 Tier-1 게이트웨이를 생성하고 이를 tier0_gateway 옵션에 지정된 Tier-0 게이트웨이에 업링크합니다.