有兩種方法可設定 NCP 的特定網路資源。本節說明如何在原則模式中配置資源。

在 NCP 組態檔 ncp.ini 中,您必須使用 NSX-T 資源的資源識別碼來加以指定。一般來說,資源的名稱和識別碼是相同的。若要完全確定,請在 NSX Manager Web UI 上,按一下可顯示資源選項的三個點圖示,然後選取將路徑複製到剪貼簿。貼上應用程式 (例如記事本) 的路徑。路徑的最後一部分是資源識別碼。

閘道和區段

  1. 建立 Kubernetes 節點的區段,例如 Segment1
  2. 建立第 0 層閘道,例如 T0GW1。如果您沒有共用的第 1 層拓撲,請將 ncp.ini[nsx_v3] 區段中的 top_tier_router 選項設定為閘道的識別碼。請參閱以下有關設定共用的第 1 層拓撲的資訊。如果您計劃在此閘道上設定 NAT 規則,請將 HA 模式設定為主動備用。否則,請將其設為主動-主動式。啟用路由重新分配。同時,請設定此閘道以存取外部網路。
  3. 建立第 1 層閘道,例如 T1GW1。將此閘道連線至第 0 層閘道。
  4. 設定 T1GW1 的路由器通告。至少應啟用 NSX 連線和 NAT 路由。
  5. T1GW1 連線至 Segment1。請確定閘道連接埠的 IP 位址不會與 Kubernetes 節點的 IP 位址衝突。
  6. 對於每個節點虛擬機器,請確定容器流量的 vNIC 已連結至自動建立的邏輯交換器。您可以在網路索引標籤中找到與區段相同的名稱 (即 Segment1)。
NCP 必須知道 vNIC 的 VIF 識別碼。您可以透過導覽至 [網路] > [區段],來查看自動建立的 Segment1 連接埠。這些連接埠無法編輯,但其標籤內容除外。這些連接埠必須具有下列標籤。其中一個標籤指定節點的名稱。另一個標籤指定叢集的名稱。針對範圍,如下所示指定適當的值。
標籤 範圍
節點名稱 ncp/node_name
叢集名稱 ncp/cluster
這些標記會自動散佈到對應的邏輯交換器連接埠。如果節點名稱變更,您必須更新標籤。若要擷取節點名稱,您可以執行下列命令:
kubectl get nodes

例如,如果您想要在 NCP 執行時延伸 Kubernetes 叢集,例如,將更多節點新增至叢集,您必須先將這些標記新增到對應的交換器連接埠,然後才能執行「kubeadm join」。如果您忘記在執行「kubeadm join」之前新增標記,新的節點將無法連線。在此情況下,您必須新增標記並重新啟動 NCP 才能解決此問題。

若要識別節點虛擬機器的交換器連接埠,您可以進行下列 API 呼叫:
/api/v1/fabric/virtual-machines
在回應中,尋找節點虛擬機器,並擷取「external_id」屬性的值。或者,您可以進行下列 API 呼叫:
/api/v1/search -G --data-urlencode "query=(resource_type:VirtualMachine AND display_name:<node_vm_name>)"
在您擁有外部識別碼後,您可以用它來擷取具有下列 API 的虛擬機器 VIF。請注意,在啟動虛擬機器之前,不會填入 VIF。
/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 屬性是節點虛擬機器的 VIF 識別碼。然後,您可以尋找此 VIF 的邏輯連接埠,並新增必要的標記。

Kubernetes 網繭的 IP 區塊

導覽至網路 > 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) 或叢集 (針對 TAS) 的 IP 區塊。

如果您在 NCP 執行時建立無 SNAT IP 區塊,則必須重新啟動 NCP。否則,NCP 將會繼續使用共用的 IP 區塊,直到耗盡為止。

當您建立 IP 區塊時,首碼長度不得大於 NCP 之組態檔 ncp.ini 中的 subnet_prefix 選項的值。預設值為 24。

如果 NCP 已開始從 IP 區塊分配 IP 位址,則不得修改該 IP 區塊。如果要使用其他區塊,請確保 NCP 未從該區塊分配任何位址。

外部 IP 集區

外部 IP 集區用來配置 IP 位址,從而用於使用 SNAT 規則轉譯網繭 IP,以及用於使用 SNAT/DNAT 規則公開入口控制站和 LoadBalancer 類型的服務,如同 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 集區。

如果 NCP 已開始從 IP 集區分配 IP 位址,則不得修改該 IP 集區。如果要使用其他集區,請確保 NCP 未從該集區分配任何位址。

共用的第 1 層拓撲

若要啟用共用的第 1 層拓撲,請執行下列組態:
  • top_tier_router 選項設定為第 1 層閘道的識別碼。將第 1 層閘道連線至第 0 層閘道以進行外部連線。
  • 如果已啟用網繭的 SNAT 流量,請將 Kubernetes 節點區段的上行修改為在與 top_tier_router 中設定的相同第 0 層或第 1 層閘道。
  • single_tier_topology 選項設定為 True。預設值是 False
  • 如果想要 NCP 自動將頂層路由器設定為第 1 層閘道,請取消設定 top_tier_router 選項,並設定 tier0_gateway 選項。NCP 將建立第 1 層閘道,並將其上行連接至 tier0_gateway 選項中指定的第 0 層閘道。