From c9f24071694e9ecfbdef6c178aa414bc0e857de6 Mon Sep 17 00:00:00 2001 From: Dmitry Shmulevich Date: Fri, 15 Nov 2024 10:28:23 -0700 Subject: [PATCH 1/8] KEP-4962: Standardizing Cluster Network Topology Representation --- .../4962-network-topology-standard/README.md | 872 ++++++++++++++++++ .../4962-network-topology-standard/kep.yaml | 0 2 files changed, 872 insertions(+) create mode 100644 keps/sig-network/4962-network-topology-standard/README.md create mode 100644 keps/sig-network/4962-network-topology-standard/kep.yaml diff --git a/keps/sig-network/4962-network-topology-standard/README.md b/keps/sig-network/4962-network-topology-standard/README.md new file mode 100644 index 00000000000..0c847145da2 --- /dev/null +++ b/keps/sig-network/4962-network-topology-standard/README.md @@ -0,0 +1,872 @@ + +# KEP-NNNN: Your short, descriptive title + + + + + + +- [Release Signoff Checklist](#release-signoff-checklist) +- [Summary](#summary) +- [Motivation](#motivation) + - [Goals](#goals) + - [Non-Goals](#non-goals) +- [Proposal](#proposal) + - [User Stories (Optional)](#user-stories-optional) + - [Story 1](#story-1) + - [Story 2](#story-2) + - [Notes/Constraints/Caveats (Optional)](#notesconstraintscaveats-optional) + - [Risks and Mitigations](#risks-and-mitigations) +- [Design Details](#design-details) + - [Test Plan](#test-plan) + - [Prerequisite testing updates](#prerequisite-testing-updates) + - [Unit tests](#unit-tests) + - [Integration tests](#integration-tests) + - [e2e tests](#e2e-tests) + - [Graduation Criteria](#graduation-criteria) + - [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy) + - [Version Skew Strategy](#version-skew-strategy) +- [Production Readiness Review Questionnaire](#production-readiness-review-questionnaire) + - [Feature Enablement and Rollback](#feature-enablement-and-rollback) + - [Rollout, Upgrade and Rollback Planning](#rollout-upgrade-and-rollback-planning) + - [Monitoring Requirements](#monitoring-requirements) + - [Dependencies](#dependencies) + - [Scalability](#scalability) + - [Troubleshooting](#troubleshooting) +- [Implementation History](#implementation-history) +- [Drawbacks](#drawbacks) +- [Alternatives](#alternatives) +- [Infrastructure Needed (Optional)](#infrastructure-needed-optional) + + +## Release Signoff Checklist + + + +Items marked with (R) are required *prior to targeting to a milestone / release*. + +- [ ] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR) +- [ ] (R) KEP approvers have approved the KEP status as `implementable` +- [ ] (R) Design details are appropriately documented +- [ ] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input (including test refactors) + - [ ] e2e Tests for all Beta API Operations (endpoints) + - [ ] (R) Ensure GA e2e tests meet requirements for [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md) + - [ ] (R) Minimum Two Week Window for GA e2e tests to prove flake free +- [ ] (R) Graduation criteria is in place + - [ ] (R) [all GA Endpoints](https://github.com/kubernetes/community/pull/1806) must be hit by [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md) +- [ ] (R) Production readiness review completed +- [ ] (R) Production readiness review approved +- [ ] "Implementation History" section is up-to-date for milestone +- [ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io] +- [ ] Supporting documentation—e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes + + + +[kubernetes.io]: https://kubernetes.io/ +[kubernetes/enhancements]: https://git.k8s.io/enhancements +[kubernetes/kubernetes]: https://git.k8s.io/kubernetes +[kubernetes/website]: https://git.k8s.io/website + +## Summary + +This document proposes a standard for declaring cluster network topology in Kubernetes, representing the hierarchy of nodes, switches, and interconnects. In this context, a switch can refer to a physical network device or a collection of such devices with close proximity and functionality. + +## Motivation + +Understanding the cluster network topology is essential for optimizing the placement of workloads that require intensive inter-node communication. Currently, there is no standardized way to represent this information in Kubernetes, making it challenging to develop control plane components and applications that can leverage topology awareness. + +This information might be useful for various components and features, including: + +- Pod affinity sections in deployment and pod specs +- Kueue topology-aware scheduling +- Development of native scheduler plugins for topology-aware scheduling, for example: + - Topology-aware gang-scheduling scheduler plugin + - Gang-scheduling auto-scaler + - DRA scheduler plugin + +### Goals + +- Introduce a standard way of representing network topology in Kubernetes clusters + +### Non-Goals + +- Implement a topology-aware gang-scheduling scheduler plugin +- Define or implement topology discovery mechanisms for CSPs or on-premises environments + +## Proposal + +We propose new node label and annotation types to capture network topology information: +- Network Topology Label +- Network QoS Annotation + +### Network Topology Label +Format: `network.topology.kubernetes.io/: ` +- ``: Logical type of the network switch (can be one of the reserved names or a custom name) + - Reserved names: `accelerator`, `block`, `datacenter`, `zone` +- ``: Unique identifier for the switch + +### Network QoS Annotation +Format: `network.qos.kubernetes.io/switches: ` +- ``: A JSON object where each key is a switch name (matching the network topology label) with a value containing: + - `distance`: Numerical value representing the distance in hops from the node to the switch, required + - `latency`: Link latency (e.g., 200 ms), optional + - `bandwidth`: Link bandwidth (e.g., 100 Gbps), optional + +This structure can be easily extended with additional network QoS metrics in the future. + +### User Stories (Optional) + + + +#### Story 1 + +#### Story 2 + +### Notes/Constraints/Caveats (Optional) + +Cluster topology information can be derived from various sources: +- Provided directly by a Cloud Service Provider (CSP) +- Extracted from a CSP using specialized tools like [topograph](https://github.com/NVIDIA/topograph) +- Manually set up by cluster administrators +- A combination of the above methods to ensure comprehensive coverage + +### Risks and Mitigations + + + +## Design Details + + + +### Reserved Network Types +We have introduced reserved network types to better accommodate common network hierarchies. These reserved network types include the following predefined names and characteristics: + +1. `accelerator`: Network interconnect for direct accelerator communication (e.g., Multi-node NVLink interconnect between NVIDIA GPUs) +2. `block`: Rack-level switches connecting hosts in one or more racks as a block. +3. `datacenter`: Spine-level switches connecting multiple blocks inside a datacenter. +4. `zone`: Zonal switches connecting multiple datacenters inside an availability zone. + +When using reserved network types, Network QoS Annotations become optional. In the absence of these annotations, it is assumed that performance within each network layer is uniform. + +The scheduler will prioritize switches according to the order outlined above, providing a standardized approach for network-aware scheduling across a range of configurations. + +If provided, Network QoS Annotations can be used to refine and enhance the details of link performance, enabling more precise scheduling decisions. + +#### Example of Network Topology Labels with reserved network types: + +``` +network.topology.kubernetes.io/accelerator: nvl72-a +network.topology.kubernetes.io/block: block-b +network.topology.kubernetes.io/datacenter: dc-c +network.topology.kubernetes.io/zone: zone-d +``` + +#### Example of Network QoS Annotations that complements the example above: +``` +network.qos.kubernetes.io/switches: { + "nvl72-a": { + "latency": "2us", + "bandwidth": "100Gbps" + }, + "block-b": { + "latency": "50us", + "bandwidth": "40Gbps" + }, + "dc-c": { + "latency": "500us", + "bandwidth": "20Gbps" + }, + "zone-d": { + "latency": "1ms", + "bandwidth": "10Gbps" + } +} +``` + +### Extensibility and Future-Proofing + +This proposal is designed with extensibility in mind, enabling the use of custom network types. This ensures that the standard can adapt to future advancements in cluster networking without requiring significant overhauls. + +For custom network types, Network QoS Annotations are required, with distance being the minimum mandatory metric. Specifying latency and bandwidth is optional, but including them can offer a more detailed view of link performance, enabling more efficient scheduling decisions. + +#### Example of network topology with custom network types + +##### Node Labels: +``` +network.topology.kubernetes.io/area: sw-a +network.topology.kubernetes.io/sector: block-b +network.topology.kubernetes.io/center: center-c +``` + +##### Node Annotations: +``` +network.qos.kubernetes.io/switches: { + "sw-a": { + "distance": 1, + "latency": "100ns", + "bandwidth": "40Gbps" + }, + "block-b": { + "distance": 2, + "latency": "500ns", + "bandwidth": "20Gbps" + }, + "center-c": { + "distance": 3, + "latency": "1ms", + "bandwidth": "10Gbps" + } +} +``` + +### Test Plan + + + +[ ] I/we understand the owners of the involved components may require updates to +existing tests to make this code solid enough prior to committing the changes necessary +to implement this enhancement. + +##### Prerequisite testing updates + + + +##### Unit tests + + + + + +- ``: `` - `` + +##### Integration tests + + + + + +- : + +##### e2e tests + + + +- : + +### Graduation Criteria + + + +### Upgrade / Downgrade Strategy + + + +### Version Skew Strategy + + + +## Production Readiness Review Questionnaire + + + +### Feature Enablement and Rollback + + + +###### How can this feature be enabled / disabled in a live cluster? + + + +- [ ] Feature gate (also fill in values in `kep.yaml`) + - Feature gate name: + - Components depending on the feature gate: +- [ ] Other + - Describe the mechanism: + - Will enabling / disabling the feature require downtime of the control + plane? + - Will enabling / disabling the feature require downtime or reprovisioning + of a node? + +###### Does enabling the feature change any default behavior? + + + +###### Can the feature be disabled once it has been enabled (i.e. can we roll back the enablement)? + + + +###### What happens if we reenable the feature if it was previously rolled back? + +###### Are there any tests for feature enablement/disablement? + + + +### Rollout, Upgrade and Rollback Planning + + + +###### How can a rollout or rollback fail? Can it impact already running workloads? + + + +###### What specific metrics should inform a rollback? + + + +###### Were upgrade and rollback tested? Was the upgrade->downgrade->upgrade path tested? + + + +###### Is the rollout accompanied by any deprecations and/or removals of features, APIs, fields of API types, flags, etc.? + + + +### Monitoring Requirements + + + +###### How can an operator determine if the feature is in use by workloads? + + + +###### How can someone using this feature know that it is working for their instance? + + + +- [ ] Events + - Event Reason: +- [ ] API .status + - Condition name: + - Other field: +- [ ] Other (treat as last resort) + - Details: + +###### What are the reasonable SLOs (Service Level Objectives) for the enhancement? + + + +###### What are the SLIs (Service Level Indicators) an operator can use to determine the health of the service? + + + +- [ ] Metrics + - Metric name: + - [Optional] Aggregation method: + - Components exposing the metric: +- [ ] Other (treat as last resort) + - Details: + +###### Are there any missing metrics that would be useful to have to improve observability of this feature? + + + +### Dependencies + + + +###### Does this feature depend on any specific services running in the cluster? + + + +### Scalability + + + +###### Will enabling / using this feature result in any new API calls? + + + +###### Will enabling / using this feature result in introducing new API types? + + + +###### Will enabling / using this feature result in any new calls to the cloud provider? + + + +###### Will enabling / using this feature result in increasing size or count of the existing API objects? + + + +###### Will enabling / using this feature result in increasing time taken by any operations covered by existing SLIs/SLOs? + + + +###### Will enabling / using this feature result in non-negligible increase of resource usage (CPU, RAM, disk, IO, ...) in any components? + + + +###### Can enabling / using this feature result in resource exhaustion of some node resources (PIDs, sockets, inodes, etc.)? + + + +### Troubleshooting + + + +###### How does this feature react if the API server and/or etcd is unavailable? + +###### What are other known failure modes? + + + +###### What steps should be taken if SLOs are not being met to determine the problem? + +## Implementation History + + + +## Drawbacks + + + +## Alternatives + + + +## Infrastructure Needed (Optional) + + diff --git a/keps/sig-network/4962-network-topology-standard/kep.yaml b/keps/sig-network/4962-network-topology-standard/kep.yaml new file mode 100644 index 00000000000..e69de29bb2d From 913c83226fd6e9498567b167a88cb81c31f82ccf Mon Sep 17 00:00:00 2001 From: Dmitry Shmulevich Date: Fri, 15 Nov 2024 13:25:59 -0700 Subject: [PATCH 2/8] update example for reserved network types --- .../4962-network-topology-standard/README.md | 26 +++++++++++------- .../img/topo-reserved-labels.png | Bin 0 -> 82597 bytes 2 files changed, 16 insertions(+), 10 deletions(-) create mode 100644 keps/sig-network/4962-network-topology-standard/img/topo-reserved-labels.png diff --git a/keps/sig-network/4962-network-topology-standard/README.md b/keps/sig-network/4962-network-topology-standard/README.md index 0c847145da2..b614b6dddca 100644 --- a/keps/sig-network/4962-network-topology-standard/README.md +++ b/keps/sig-network/4962-network-topology-standard/README.md @@ -252,31 +252,37 @@ The scheduler will prioritize switches according to the order outlined above, pr If provided, Network QoS Annotations can be used to refine and enhance the details of link performance, enabling more precise scheduling decisions. -#### Example of Network Topology Labels with reserved network types: +#### Example of network topology representation with reserved network types: +Consider the following network topology: + +![Netwotk topology with reserved network types](./img/topo-reserved-labels.png) + +Let's examine node `vm12` as an example. This node is connected to NVSwitch `nvl10` and network switch `sw11`, which in turn is connected to switches `sw21` and `sw31`. +In this case, the node labels would be: ``` -network.topology.kubernetes.io/accelerator: nvl72-a -network.topology.kubernetes.io/block: block-b -network.topology.kubernetes.io/datacenter: dc-c -network.topology.kubernetes.io/zone: zone-d +network.topology.kubernetes.io/accelerator: nvl10 +network.topology.kubernetes.io/block: sw11 +network.topology.kubernetes.io/datacenter: sw21 +network.topology.kubernetes.io/zone: sw31 ``` -#### Example of Network QoS Annotations that complements the example above: +If we have additional information such as latency and/or bandwidth between the node and the switches, it can be provided in an annotation: ``` network.qos.kubernetes.io/switches: { - "nvl72-a": { + "nvl10": { "latency": "2us", "bandwidth": "100Gbps" }, - "block-b": { + "sw11": { "latency": "50us", "bandwidth": "40Gbps" }, - "dc-c": { + "sw21": { "latency": "500us", "bandwidth": "20Gbps" }, - "zone-d": { + "sw31": { "latency": "1ms", "bandwidth": "10Gbps" } diff --git a/keps/sig-network/4962-network-topology-standard/img/topo-reserved-labels.png b/keps/sig-network/4962-network-topology-standard/img/topo-reserved-labels.png new file mode 100644 index 0000000000000000000000000000000000000000..8bb65ac93e623777d69adba1f1c1228a5601bef3 GIT binary patch literal 82597 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 C%D-g* literal 0 HcmV?d00001 From fa36461c16e2228ae2ae753d24d3af6a28bce26c Mon Sep 17 00:00:00 2001 From: Dmitry Shmulevich Date: Fri, 15 Nov 2024 16:52:56 -0700 Subject: [PATCH 3/8] added 'Alternatives' section --- .../4962-network-topology-standard/README.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/keps/sig-network/4962-network-topology-standard/README.md b/keps/sig-network/4962-network-topology-standard/README.md index b614b6dddca..e2dee5592c4 100644 --- a/keps/sig-network/4962-network-topology-standard/README.md +++ b/keps/sig-network/4962-network-topology-standard/README.md @@ -863,11 +863,19 @@ Why should this KEP _not_ be implemented? ## Alternatives - +One alternative is to delegate network topology representation to CSPs. For instance, AWS employs network topology labels in the format `topology.k8s.aws/network-node-layer-N` to describe their three-tier network hierarchy. + +However, this approach has several limitations: +1. It is CSP-specific, hindering portability across different cloud environments. +2. It is tightly coupled to a predefined network layout, offering little flexibility for extension. +3. It lacks the capability to incorporate additional QoS information that could be utilized by schedulers or applications. + +In contrast, our proposal offers: +1. Flexibility in defining network hierarchies +2. Extensibility to accommodate various network structures +3. The ability to include diverse network QoS metrics + +This approach provides a more versatile and adaptable solution for representing network topologies across different cloud environments and use cases. ## Infrastructure Needed (Optional) From 48e89c17c9155fd1da92b91e4e74a4f68b2039ee Mon Sep 17 00:00:00 2001 From: Dmitry Shmulevich Date: Fri, 15 Nov 2024 20:30:33 -0700 Subject: [PATCH 4/8] added more examples --- .../4962-network-topology-standard/README.md | 102 +++++++++++++----- .../img/topo-reserved-labels2.png | Bin 0 -> 104933 bytes 2 files changed, 77 insertions(+), 25 deletions(-) create mode 100644 keps/sig-network/4962-network-topology-standard/img/topo-reserved-labels2.png diff --git a/keps/sig-network/4962-network-topology-standard/README.md b/keps/sig-network/4962-network-topology-standard/README.md index e2dee5592c4..37cf321591b 100644 --- a/keps/sig-network/4962-network-topology-standard/README.md +++ b/keps/sig-network/4962-network-topology-standard/README.md @@ -58,7 +58,7 @@ If none of those approvers are still appropriate, then changes to that list should be approved by the remaining approvers and/or the owning SIG (or SIG Architecture for cross-cutting KEPs). --> -# KEP-NNNN: Your short, descriptive title +# KEP-4962: Standardizing Cluster Network Topology Representation Pf&yJX?WL{QhD{CK7)3h7@Ve9kE9BZr@ArYXqwXD6y|G4T4eVqA z?_h6;nQTaq)m@nkf6X0jSQP##kbnFTxu`a)+S zUygA#Z`*rD357m;E-68hy}$!|^or-F#xt?$#y_W|tx{T@HHQm2r%2E07|w+E48q+R zW5UbV2=jUhA$au$hi}Fs$M+RvW^fycBZk0*V3Ls(!!WLeb!Jfr=0`=`-*KJ0fkH>d z>oa>gK~th!&La#>)eXjd_&|Xykq9PFVqeJQpfAUp!abNbIzAk@6YGIh*Sjt6gL*(} zC+diJ8l!?jH`ZD`Kwv07_+mZ^nF|80f0ix*@-kwGnLvmY_;G>hCPo&wQ5q^}>zM5n~a zeAlii8agL>!?xel%#d6`NBOO}q2S4h0^}e?frn2JcOd--ZZL%O;4O-m;8qYHVdt&} zgoGtNNMN`<2mTdbCfy4 za#Abql9DG(spk!WlZXnkwxxc`gKnxYKJKy#%8SQic`tn$j}?W^Ilme!Z*8lljx0{N zimSG~*Ad#3=R*7#FT@EE8JnTw@URya5Y) z;!rn58-o(##AQ5p4AlN&8x4M`fj#&(ikHwAUOmmYOSGOH;6?e;7O@DJbVQKZP2^*$ z4-*v(r#4eze5!6<3?`B&^!+F863)=M|Ya9&(Ws~RxA)XlwIP0u~B zofIiv%h0*W8}IfgDszZDm=E8F<|sO?QFW452CVash-LSFQbrH_mqjr1DT!w>j7!Ho zuIjK7&R|q=5y=V57If!6hY}P!siTG&E(j+4+N6j`mbAUGGRHY$Up!2qFT~(r&Ew#Bv)SO#8fym>V(Gxz=v2w4e4ukdlH}0|()Rts0*A2D_R3j) zvh03fokE55r#-P?2opE){^j7mkgljm5szS8#oN;UJhACj4KZVsa!_ks%@2CA~0q2|R>nr#caRr6lAwfgzonc{a{hwoO9$-zE6GX-1;8-B!^PRNNAwk}h} zK_1vK7IsvuIanHw|9JFu_&5H(PspzTPx1Teb`Upeyhd>xnP=}C^6fX@Skr1*P8+=w zk#E&~o2QXS+kX2;VdZ`IB99trt9}GH$H4$eW%iFK6k3}^Kct)=+{s7}A41}(3K>`R z^?}ENem z|)#NU1P&u@Q$iSY~J1A^>-YM1!gSVu5~ zLFN08|K@l9Y>W0e6mP8Dy6;Z@Q(GRWIS62tiJeHw|1pNYw8c&fg}#Vtsif?G81K)| zdJd9Z%<@&tr2OXru!q8=q`LTo{{7tj`rS$@6GO%reTEbNJb<$>8|rKHJb$|mzuH2+ zU~H=96|3aD{?7wYhuO%SKMD5@e|+nSNF8@&5w)mvgEB literal 0 HcmV?d00001 From bb95a3c311e13f5c8fa8c72bb1f9bc948d6c5b13 Mon Sep 17 00:00:00 2001 From: Dmitry Shmulevich Date: Tue, 19 Nov 2024 14:02:21 -0800 Subject: [PATCH 5/8] update README Signed-off-by: Dmitry Shmulevich --- .../4962-network-topology-standard/README.md | 48 ++++++++++++------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/keps/sig-network/4962-network-topology-standard/README.md b/keps/sig-network/4962-network-topology-standard/README.md index 37cf321591b..d230e132064 100644 --- a/keps/sig-network/4962-network-topology-standard/README.md +++ b/keps/sig-network/4962-network-topology-standard/README.md @@ -58,7 +58,7 @@ If none of those approvers are still appropriate, then changes to that list should be approved by the remaining approvers and/or the owning SIG (or SIG Architecture for cross-cutting KEPs). --> -# KEP-4962: Standardizing Cluster Network Topology Representation +# KEP-4962: Standardizing the Representation of Cluster Switch Network Topology nX;1>9UJAq$axu?Cpe-j#V=AVD?;Op| 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 C!lZ5h literal 0 HcmV?d00001 From 623396b275dea22e153f2f572f24139cf1943517 Mon Sep 17 00:00:00 2001 From: Dmitry Shmulevich Date: Tue, 26 Nov 2024 12:22:26 -0800 Subject: [PATCH 7/8] simplified the proposal Signed-off-by: Dmitry Shmulevich --- .../4962-network-topology-standard/README.md | 290 +++++------------- .../img/topo-multi-homing.png | Bin 173995 -> 0 bytes .../img/topo-reserved-labels2.png | Bin 104933 -> 0 bytes 3 files changed, 76 insertions(+), 214 deletions(-) delete mode 100644 keps/sig-network/4962-network-topology-standard/img/topo-multi-homing.png delete mode 100644 keps/sig-network/4962-network-topology-standard/img/topo-reserved-labels2.png diff --git a/keps/sig-network/4962-network-topology-standard/README.md b/keps/sig-network/4962-network-topology-standard/README.md index ec2309f53d4..54ead48128b 100644 --- a/keps/sig-network/4962-network-topology-standard/README.md +++ b/keps/sig-network/4962-network-topology-standard/README.md @@ -154,13 +154,20 @@ Items marked with (R) are required *prior to targeting to a milestone / release* ## Summary -This document proposes a standard for declaring switch network topology in Kubernetes clusters, representing the hierarchy of nodes, switches, and interconnects. In this context, a switch can refer to a physical network device or a collection of such devices with close proximity and functionality. +This document proposes a standard for declaring switch network topology in Kubernetes clusters, +representing the hierarchy of nodes, switches, and interconnects. +In this context, a `switch` can refer to a physical network device or a collection of such devices +with close proximity and functionality. ## Motivation -With the rise of multi-node Kubernetes workloads—such as AI/ML training jobs or sets of interdependent, data-intensive services—that demand intensive inter-node communication, scheduling pods in close network proximity is becoming essential. +With the rise of multi-node Kubernetes workloads that demand intensive inter-node communication, +scheduling pods in close network proximity is becoming essential. +Examples of such workloads include AI/ML training jobs or sets of interdependent, data-intensive services. + However, Kubernetes currently lacks a standard method to describe cluster network topology, which is a key area for improvement. -By establishing a consistent way to represent cluster network topology, this proposal lays the groundwork for advanced scheduling capabilities that take backend switched network topology and performance into account. For example, this will enable the development of a network-aware gang scheduling plugin. +By establishing a consistent way to represent cluster network topology, this proposal lays the groundwork for +advanced scheduling capabilities that take backend switched network topology and performance into account. Some major CSPs already offer mechanisms to discover instance network topology: - **Amazon AWS** provides the [DescribeInstanceTopology API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstanceTopology.html). @@ -170,23 +177,15 @@ Some major CSPs already offer mechanisms to discover instance network topology: Beyond CSPs, certain on-premises clusters support network topology discovery, though this capability depends on the features of the underlying switch network vendors. An open-source project, [Topograph](https://github.com/NVIDIA/topograph), has implemented these approaches and is successfully deployed in production environments. - However, what remains missing is a common and standardized method to convey switch network topology information to the Kubernetes ecosystem. -This gap creates challenges for developing control plane components and applications that could leverage topology-aware features. +This gap creates challenges for developing control plane components and applications that could leverage network-topology-aware features. -For example, AWS has begun addressing this by introducing `topology.k8s.aws/network-node-layer-N` node labels to represent its 3-tier networking structure. However, this solution is cloud-specific and does not address broader use cases. +Some CSPs have already taken steps to describe cluster network topology. For instance, AWS has begun addressing this by introducing `topology.k8s.aws/network-node-layer-N` node labels, which represent its 3-tier networking structure. However, this solution is specific to AWS and does not cater to broader, cross-cloud use cases. In this KEP, we propose establishing a standardized representation of switch network topology within Kubernetes clusters. -The cluster network topology could be: -- Provided directly by CSPs, where CSPs apply node labels during node creation. -- Extracted from CSPs using specialized tools like [Topograph](https://github.com/NVIDIA/topograph). -- Manually configured by cluster administrators. -- Derived using a combination of the above methods. - Such topology information could significantly enhance various Kubernetes components and features, including: - - Pod affinity settings in deployments and pod specs. - Topology-aware scheduling in Kueue. - Development of Kubernetes-native scheduler plugins for network-topology-aware scheduling, such as: @@ -205,26 +204,22 @@ Such topology information could significantly enhance various Kubernetes compone ## Proposal -We propose new node label and annotation types to capture network topology information: -- Network Topology Label -- Network QoS Annotation +We propose new node label type to capture network topology information: ### Network Topology Label -Format: `network.topology.kubernetes.io/: ` -- ``: Logical type of the network switch (can be one of the reserved names or a custom name) - - Reserved names: `accelerator`, `block`, `datacenter`, `zone` -- ``: Unique identifier for the switch - -### Network QoS Annotation -Format: `network.qos.kubernetes.io/switches: ` -- ``: A JSON object where each key is a switch name (matching the network topology label) with a value containing: - - `distance`: Numerical value representing the distance in hops from the node to the switch, required - - `latency`: Link latency (e.g., 200 ms), optional - - `bandwidth`: Link bandwidth (e.g., 100 Gbps), optional +Format: `network.topology.kubernetes.io/: `, where +- `` defines the characteristics of a network switch. The term `switch` may refer to a physical network device or a collection of closely connected devices with similar functionality. +- `` is a unique identifier for the switch. -This structure can be easily extended with additional network QoS metrics in the future. +We propose to use the following four network switch types: +1. `accelerator`: Network interconnect for direct accelerator communication (e.g., Multi-node NVLink interconnect between NVIDIA GPUs) +2. `block`: Rack-level switches connecting hosts in one or more racks as a block. +3. `datacenter`: Spine-level switches connecting multiple blocks inside a datacenter. +4. `zone`: Zonal switches connecting multiple datacenters inside an availability zone. -We want to stress that we are not advocating for or favoring any specific network hierarchy. On the contrary, our goal is to make the system flexible and adaptable to any type of network. +These types will accommodate the majority of common network hierarchies across different CSP and on-prem environments. +Having these labels available in Kubernetes clusters will help in designing cloud agnostic scheduling systems. +The scheduler will prioritize switches according to the order outlined above, providing a standardized approach for network-aware scheduling across a range of configurations. ### User Stories (Optional) @@ -237,10 +232,56 @@ bogged down. #### Story 1 +As a data scientist running a data-intensive large-scale AI training job, I want to optimize the runtime +by binding pods to nodes that are in close network proximity. +This ensures better performance for my distributed workloads. + +Additionally, I do not want to modify the job specification when migrating the job across different Kubernetes environments. + +To achieve this, I can leverage the pod affinity feature of the default Kubernetes scheduler with topology keys: +```yaml + spec: + affinity: + podAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 70 + podAffinityTerm: + labelSelector: + matchExpressions: + - key: app + operator: In + values: + - training + topologyKey: network.topology.kubernetes.io/block + - weight: 90 + podAffinityTerm: + labelSelector: + matchExpressions: + - key: app + operator: In + values: + - training + topologyKey: network.topology.kubernetes.io/accelerator +``` #### Story 2 +As a Kubernetes contributor, I want to enhance the performance of multi-node jobs that require gang scheduling. +To achieve this, I am developing a Kubernetes-native scheduler plugin specifically designed for gang scheduling. + +This plugin should be cloud-agnostic, ensuring it functions seamlessly across different cloud environments. + +The scheduler plugin reconstructs the cluster network topology by interpreting `network.topology.kubernetes.io/...` node labels. +Using this topology information, it optimally binds pods to suitable nodes, reducing overall latency and improving performance. + ### Notes/Constraints/Caveats (Optional) +The delivery method for the cluster network topology lies outside the scope of this proposal. +However, this information could be: +- Provided directly by CSPs, where CSPs apply node labels during node creation. +- Extracted from CSPs using specialized tools like [Topograph](https://github.com/NVIDIA/topograph). +- Manually configured by cluster administrators. +- Derived using a combination of the above methods. + ### Risks and Mitigations nX;1>9UJAq$axu?Cpe-j#V=AVD?;Op| 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 C!lZ5h diff --git a/keps/sig-network/4962-network-topology-standard/img/topo-reserved-labels2.png b/keps/sig-network/4962-network-topology-standard/img/topo-reserved-labels2.png deleted file mode 100644 index 3a002087960a63b365c49c5ba30ad9e71121b17a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104933 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 From 3120f2eeb738622ea028eb9561607079aae839e6 Mon Sep 17 00:00:00 2001 From: Dmitry Shmulevich Date: Wed, 27 Nov 2024 09:18:51 -0800 Subject: [PATCH 8/8] addressed comments Signed-off-by: Dmitry Shmulevich --- .../4962-network-topology-standard/README.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/keps/sig-network/4962-network-topology-standard/README.md b/keps/sig-network/4962-network-topology-standard/README.md index 54ead48128b..49855bc30c0 100644 --- a/keps/sig-network/4962-network-topology-standard/README.md +++ b/keps/sig-network/4962-network-topology-standard/README.md @@ -58,7 +58,7 @@ If none of those approvers are still appropriate, then changes to that list should be approved by the remaining approvers and/or the owning SIG (or SIG Architecture for cross-cutting KEPs). --> -# KEP-4962: Standardizing the Representation of Cluster Switch Network Topology +# KEP-4962: Standardizing the Representation of Cluster Network Topology