From c9f24071694e9ecfbdef6c178aa414bc0e857de6 Mon Sep 17 00:00:00 2001 From: Dmitry Shmulevich Date: Fri, 15 Nov 2024 10:28:23 -0700 Subject: [PATCH 1/6] 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/6] 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/6] 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/6] 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/6] 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