有兩種方法可設定 NCP 的特定網路資源。本節說明如何在管理程式模式中設定資源。

在 NCP 組態檔 ncp.ini 中,您可以使用 NSX 資源的 UUID 或名稱來指定。

邏輯路由器和邏輯交換器

  1. 建立 Kubernetes 節點的邏輯交換器,例如 LS1
  2. 建立第 0 層邏輯路由器,例如 T0LR1。如果您沒有共用的第 1 層拓撲,請將 ncp.ini[nsx_v3] 區段的 tier0_router 選項設定為邏輯路由器的識別碼。請參閱以下有關設定共用的第 1 層拓撲的資訊。如果您計劃在此邏輯路由器上設定 NAT 規則,請將 HA 模式設定為作用中/待命。否則,請將其設為作用中/作用中式。啟用路由重新分配。同時,請設定此路由器以存取外部網路。
  3. 建立第 1 層邏輯路由器,例如 T1LR1。將此邏輯路由器連線至第 0 層邏輯路由器。
  4. 設定 T1LR1 的路由器通告。至少應啟用 NSX 連線和 NAT 路由。
  5. T1LR1 連線至 LS1。請確定邏輯路由器連接埠的 IP 位址不會與 Kubernetes 節點的 IP 位址衝突。
  6. 對於每個節點虛擬機器,請確定容器流量的 vNIC 已連結至自動建立的邏輯交換器。您可以在網路索引標籤中找到與邏輯交換器相同的名稱 (即 LS1)。
NCP 必須知道 vNIC 的 VIF 識別碼。對應的邏輯交換器連接埠必須具有下列兩個標籤。其中一個標籤指定節點的名稱。另一個標籤指定叢集的名稱。針對範圍,如下所示指定適當的值。
標籤 範圍
節點名稱 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 區塊。以 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 集區用來配置 IP 位址,從而用於使用 SNAT 規則轉譯網繭 IP,以及用於使用 SNAT/DNAT 規則公開入口控制站和 LoadBalancer 類型的服務,如同 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 集區。

共用的第 1 層拓撲

若要啟用共用的第 1 層拓撲,請執行下列組態:
  • top_tier_router 選項設定為第 0 層邏輯路由器或第 1 層邏輯路由器的識別碼。如果是第 1 層邏輯路由器,則需要將其連線至第 0 層邏輯路由器以進行外部連線。此選項會取代 tier0_router 選項。
  • 如果已啟用網繭的 SNAT 流量,請將 T1LR1LS1 (Kubernetes 節點的邏輯交換器) 中斷連線,然後將 top_tier_router 中的第 0 層或第 1 層路由器集連線至 LS1
  • single_tier_topology 選項設定為 True。預設值是 False

(選用) (僅限 Kubernetes) 防火牆標記區段

若要允許管理員建立防火牆規則同時不影響 NCP 根據網路原則建立的防火牆區段,請導覽至安全性 > 分散式防火牆 > 一般,然後建立兩個防火牆區段。

透過在 ncp.ini[nsx_v3] 區段中設定 bottom_firewall_section_markertop_firewall_section_marker 選項,指定標記防火牆區段。

底部防火牆區段必須位於頂部防火牆區段下方。建立這些防火牆區段之後,由 NCP 建立用於隔離的所有防火牆區段將建立於底部防火牆區段之上,而 NCP 建立用於原則的所有防火牆區段將建立於頂部防火牆區段之下。如果沒有建立這些標記區段,則所有隔離規則將會在底部建立,而所有原則區段將會在頂部建立。每個叢集的各個標記防火牆區段的值必須是唯一的,否則將導致錯誤。