NCP에 대해 특정 네트워킹 리소스를 구성하는 방법에는 두 가지가 있습니다. 이 섹션에서는 관리자 모드에서 리소스를 구성하는 방법을 설명합니다.

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

논리적 라우터 및 논리적 스위치

  1. Kubernetes 노드의 논리적 스위치를 생성합니다(예: LS1).
  2. Tier-0 논리적 라우터(예: T0LR1)를 생성합니다. 공유 Tier-1 토폴로지가 없는 경우 ncp.ini[nsx_v3] 섹션에서 tier0_router 옵션을 논리적 라우터의 ID로 설정합니다. 공유 Tier-1 토폴로지 구성에 대한 자세한 내용은 아래를 참조하십시오. 이 논리적 라우터에서 NAT 규칙을 구성하려는 경우 HA 모드를 활성-대기로 설정합니다. 그렇지 않은 경우, 활성-활성로 설정합니다. 경로 재배포를 사용하도록 설정합니다. 또한 외부 네트워크에 액세스할 수 있도록 이 라우터를 구성합니다.
  3. Tier-1 논리적 라우터(예: T1LR1)를 생성합니다. 이 논리적 라우터를 Tier-0 논리적 라우터에 연결합니다.
  4. T1LR1에 대한 라우터 보급을 구성합니다. 최소한 NSX 연결 및 NAT 경로를 사용하도록 설정해야 합니다.
  5. T1LR1LS1에 연결합니다. 논리적 라우터 포트의 IP 주소가 Kubernetes 노드의 IP 주소와 충돌하지 않는지 확인합니다.
  6. 각 노드 VM에 대해 컨테이너 트래픽용 vNIC가 자동으로 생성된 논리적 스위치에 연결되어 있는지 확인합니다. 논리적 스위치와 이름이 같은 항목(즉, LS1)을 네트워킹 탭에서 찾을 수 있습니다.
NCP는 vNIC의 VIF ID를 알고 있어야 합니다. 해당 논리적 스위치 포트에는 다음과 같은 2개의 태그가 있어야 합니다. 하나의 태그에는 노드의 이름을 지정합니다. 다른 태그에는 클러스터의 이름을 지정합니다. 범위에는 아래에 표시된 대로 적절한 값을 지정합니다.
태그 범위
노드 이름 ncp/node_name
클러스터 이름 ncp/cluster
노드 이름이 변경되면 태그를 업데이트해야 합니다. 노드 이름을 검색하려면 다음 명령을 실행할 수 있습니다.
kubectl get nodes

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 블록을 생성합니다. CIDR 형식으로 IP 블록을 지정합니다. ncp.ini[nsx_v3] 섹션에서 container_ip_blocks 옵션을 IP 블록의 UUID로 설정합니다.

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

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

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

원래 할당된 서브넷이 모두 사용된 경우 NCP는 네임스페이스에 대한 추가 서브넷을 할당합니다.

외부 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로 설정합니다.

여러 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 논리적 라우터에 연결해야 합니다. 이 옵션은 tier0_router 옵션을 대신합니다.
  • 포드 트래픽에 대해 SNAT를 사용하도록 설정한 경우 LS1(Kubernetes 노드용 논리적 스위치)에서 T1LR1의 연결을 끊고 top_tier_router에 설정된 Tier-0 또는 Tier-1 라우터를 LS1에 연결합니다.
  • single_tier_topology 옵션을 True로 설정합니다. 기본값은 False입니다.

(선택 사항)(Kubernetes만 해당) 방화벽 마커 섹션

관리자가 방화벽 규칙을 생성하고 해당 규칙이 NCP가 생성한 네트워크 정책 기반의 방화벽을 방해하지 않게 하려면 보안 > 분산 방화벽 > 일반으로 이동한 후 방화벽 섹션을 두 개 생성합니다.

ncp.ini[nsx_v3] 섹션에 bottom_firewall_section_marker 옵션과 top_firewall_section_marker 옵션을 설정하여 마커 방화벽 섹션을 지정합니다.

하단 방화벽 섹션은 상단 방화벽 섹션보다 아래에 있어야 합니다. 이러한 방화벽 섹션을 생성하면 NCP가 분리를 위해 생성하는 모든 방화벽 섹션이 하단 방화벽 섹션의 위에 생성되고 NCP가 정책을 위해 생성하는 모든 방화벽 섹션이 상단 방화벽 섹션의 아래에 생성됩니다. 이러한 마커 섹션을 생성하지 않으면 모든 분리 규칙이 하단에 생성되고 모든 정책 섹션이 상단에 생성됩니다. 클러스터 하나에 값이 동일한 마커 방화벽 섹션을 여러 개 사용할 수 없으며, 이렇게 할 경우 오류가 발생합니다.