您可以建立子系區段,以便透過 Antrea 為 Kubernetes 工作負載啟用進階 IPAM、路由和 NAT。子系區段旨在支援 Antrea 功能,例如可路由網繭的彈性 IPAM 和 Antrea 出口。
下圖顯示了子系區段連線至其他元件的方式。
父系區段是一般 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}
建立繫結對應的範例:
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" }
{ "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
- 來源和目的地都是子系區段上的容器。
- 來源是子系區段上的容器,目的地是一般連接埠。
- 來源是父系連接埠。沒有子系區段,因為 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 容器的統計資料。