您可以建立子系區段,以便透過 Antrea 為 Kubernetes 工作負載啟用進階 IPAM、路由和 NAT。子系區段旨在支援 Antrea 功能,例如可路由網繭的彈性 IPAM 和 Antrea 出口。

備註: 此功能可透過 API 取得。

下圖顯示了子系區段連線至其他元件的方式。

父系區段是一般 NSX 區段。無需進行任何設定即可將區段設定為父系區段。子系區段可與一或多個父系區段相關聯,並為其每個父系區段指派一個 VLAN 識別碼。父系區段將僅傳送標記有特定 VLAN 識別碼的子系區段流量。

子系區段和父系區段的內容:
  • 子系區段可以與多個父系區段相關聯。
  • 父系區段可以具有多個子系區段。
  • 連結至父系區段的每個子系區段都必須具有不同的 VLAN 識別碼,並且連線至同一父系區段的兩個子系區段不能共用一個 VLAN 識別碼。
  • 連線至多個父系區段的子系區段可以使用相同或不同的 VLAN 識別碼建立連線。
  • 子系區段不能是另一子系區段的父系區段。
  • 子系區段可以是覆疊區段或 VLAN 區段。
  • 虛擬機器 (VM) 可以連線至子系區段。如果這樣做,將建立區段連接埠,類似於將虛擬機器連線至標準區段時的情況。
  • 不會在子系區段上建立用於父-子系區段連線的區段連接埠。
  • 子系區段和父系區段是相互獨立的。這表示:
    • 它們可以連線至相同或不同的第 1 層閘道或第 0 層閘道。
    • 它們可以具有不同的組態或交換設定檔。
    • 子系區段不會繼承其父系區段上的組態。
    • 包含父系區段的群組不會自動包含其子系區段。
    • 在父系區段上設定的服務 (如分散式防火牆) 不會延伸至子系區段。

對於連線至子系區段的虛擬機器,支援所有區段相關的功能。對於通過子系區段的容器流量,下表列出了受支援和不受支援的功能:

功能 支援
分散式防火牆
IP 探索區段設定檔
MAC 探索區段設定檔
區段安全性區段設定檔
SpoofGuard 區段設定檔
QoS 區段設定檔
連接埠鏡像
IPFix
上行整併
鏡像組態 (上行跨度)
NSGroup
延遲

Antrea 的子系區段使用方式

在 Antrea 中設定的每個可路由子網路 (例如,可路由網繭的 IP 集區、出口的外部 IP 集區) 都對應到一個子系區段,Kubernetes 節點虛擬機器的區段是子系區段的父系區段。在透過 VNIC 傳送封包前,Kubernetes 節點虛擬機器上的 OVS (Open vSwitch) 將使用正確的 VLAN 識別碼標記流量。

在父系區段和子系區段之間建立連線的工作流程:
  • 建立父系區段。您可以使用 API 或 NSX Manager UI。
  • 建立子系區段。您可以使用 API 或 NSX Manager UI。
  • 使用 API,透過指定父系區段路徑和 VLAN 識別碼,在子系區段上建立連線繫結對應。
刪除子系區段的工作流程:
  • 使用 API 刪除子系區段的所有現有連線繫結對應。
  • 刪除子系區段。您可以使用 API 或 NSX Manager UI。
刪除父系區段的工作流程:
  • 使用 API 刪除將此父系區段連線至其所有子系區段的所有現有連線繫結對應。
  • 刪除父系區段。您可以使用 API 或 NSX Manager UI。

API

可以使用以下 API 呼叫來管理子系區段。如需詳細資訊,請參閱NSX API 指南 (移至 NSX 說明文件,並使用左側的導覽窗格找到 API 指南)。

GET /policy/api/v1/infra/segments/{segment-id}/segment-connection-binding-maps
GET /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/segments/{segment-id}/segment-connection-binding-maps
DELETE /policy/api/v1/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
DELETE /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
GET /policy/api/v1/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
GET /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PATCH /policy/api/v1/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PATCH /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PUT /policy/api/v1/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PUT /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
GET /policy/api/v1/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps
GET /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps
DELETE /policy/api/v1/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
DELETE /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
GET /policy/api/v1/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
GET /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PATCH /policy/api/v1/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PATCH /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PUT /policy/api/v1/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PUT /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}

建立連線繫結對應時,在 PUT API 中指定的對應識別碼必須是唯一的。使用 PUT /policy/api/v1/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id} 建立繫結對應的範例:

API 要求:
PUT https://<nsx-manager>/policy/api/v1/infra/segments/test2/segment-connection-binding-maps/map-id-1
{
    "vlan_traffic_tag": "1002",
    "segment_path": "/infra/segments/openshift-segment"
}
API 回應:
{
  "vlan_traffic_tag" : 1002,
  "segment_path" : "/infra/segments/openshift-segment",
  "resource_type" : "SegmentConnectionBindingMap",
  "id" : "map-id-1",
  "display_name" : "map-id-1",
  "path" : "/infra/segments/test2/segment-connection-binding-maps/map-id-1",
  "relative_path" : "map-id-1",
  "parent_path" : "/infra/segments/test2",
  "remote_path" : "",
  "unique_id" : "7ac8c0fb-a0e1-471a-bed6-d15f1b85e0c6",
  "realization_id" : "7ac8c0fb-a0e1-471a-bed6-d15f1b85e0c6",
  "owner_id" : "210584d9-6329-452e-bb01-0133945ab675",
  "marked_for_delete" : false,
  "overridden" : false,
  "_system_owned" : false,
  "_protection" : "NOT_PROTECTED",
  "_create_time" : 1712718210160,
  "_create_user" : "admin",
  "_last_modified_time" : 1712718210160,
  "_last_modified_user" : "admin",
  "_revision" : 0
}

Traceflow

Traceflow 支援以下與子系區段相關的案例:
  • 來源和目的地都是子系區段上的容器。
  • 來源是子系區段上的容器,目的地是一般連接埠。
  • 來源是父系連接埠。沒有子系區段,因為 Antrea 容器正在虛擬機器中執行。

若要對將通過子系區段的封包執行 Traceflow,必須使用 API。若要設定 Traceflow,請使用 API 呼叫 PUT https://<mgr-ip>/policy/api/v1/infra/traceflows/<traceflow-id>。例如,

PUT https://<mgr-ip>/policy/api/v1/infra/traceflows/<traceflow-id>
{
  "segment_port_path": "/infra/segments/parent/ports/default:658c6c45-286f-4a23-832f-a646253b200b",
  "connected_segment_path_as_source": "/infra/segments/child",
  "packet": {
    "eth_header": {
      "src_mac": "00:50:56:ad:28:d5",
      "dst_mac": "00:50:56:ad:c0:a4",
      "eth_type": 2048
    },
    "ip_header": {
      "src_ip": "192.168.100.10",
      "dst_ip": "192.168.100.20",
      "protocol": 1,
      "ttl": 64,
      "flags": 0
    },
    "transport_header": {
      "icmp_echo_request_header": {
        "id": 0,
        "sequence": 0
      }
    },
    "payload": "",
    "resource_type": "FieldsPacketData",
    "frame_size": 128,
    "routed": false,
    "transport_type": "UNICAST"
  },
  "timeout": 10,
  "is_transient": true
}

請注意,參數 connected_segment_path_as_source 指向子系區段。如果未設定此參數,封包將不會通過子系區段。

如需詳細資訊,請參閱NSX API 指南 (移至 NSX 說明文件,並使用左側的導覽窗格找到 API 指南)。

子系區段和父系區段統計資料

子系區段的統計資料將只包括連線至區段的虛擬機器的統計資料。其中將不包括 Antrea 容器的統計資料。

對於父系區段,入口統計資訊將包括 Antrea 容器的統計資料。出口統計資料不包括 Antrea 容器的統計資料。