Skip to content

KEP-4962: Standardizing the Representation of Cluster Network Topology#4965

Closed
dmitsh wants to merge 11 commits into
kubernetes:masterfrom
dmitsh:ds-topology
Closed

KEP-4962: Standardizing the Representation of Cluster Network Topology#4965
dmitsh wants to merge 11 commits into
kubernetes:masterfrom
dmitsh:ds-topology

Conversation

@dmitsh

@dmitsh dmitsh commented Nov 15, 2024

Copy link
Copy Markdown
  • One-line PR description:
    Standardizing Cluster Network Topology Representation
  • Other comments:

@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/kep Categorizes KEP tracking issues and PRs modifying the KEP directory labels Nov 15, 2024
@k8s-ci-robot k8s-ci-robot added the sig/network Categorizes an issue or PR as relevant to SIG Network. label Nov 15, 2024
@k8s-ci-robot

Copy link
Copy Markdown
Contributor

Welcome @dmitsh!

It looks like this is your first PR to kubernetes/enhancements 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes/enhancements has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. 😃

@k8s-ci-robot k8s-ci-robot added the needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. label Nov 15, 2024
@k8s-ci-robot

Copy link
Copy Markdown
Contributor

Hi @dmitsh. Thanks for your PR.

I'm waiting for a kubernetes member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@k8s-ci-robot k8s-ci-robot added the size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. label Nov 15, 2024
@dmitsh

dmitsh commented Nov 15, 2024

Copy link
Copy Markdown
Author

/cc @aojea

@k8s-ci-robot k8s-ci-robot requested a review from aojea November 15, 2024 17:31
@dmitsh

dmitsh commented Nov 15, 2024

Copy link
Copy Markdown
Author

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

@dmitsh: GitHub didn't allow me to request PR reviews from the following users: tardieu, arsenetar, brianhammons.

Note that only kubernetes members and repo collaborators can review this PR, and authors cannot review their own PRs.

Details

In response to this:

/cc @brianhammons @mwielgus @tardieu @mickeyboxell @arsenetar

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.


### Network QoS Annotation
Format: `network.qos.kubernetes.io/switches: <QoS>`
- `<QoS>`: A JSON object where each key is a switch name (matching the network topology label) with a value containing:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So this object contains N items (of below structure), where N is the number of predefined topology units (accelerator, block, datacenter, zone), right?

What I want to ensure is that those needs to be changed/updated when the cluster grows/shrinks (i.e. that the don't define distance between nodes themselves). But given that for a given node its contents don't depend on other nodes (rather on placements in the physical network), this seems to be fine.

@dmitsh dmitsh Nov 18, 2024

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@wojtek-t , that's correct, each node will contain QoS metrics between the node and every reachable switch.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We simplified this proposal - removed custom labels and removed annotations.

@aojea

aojea commented Nov 18, 2024

Copy link
Copy Markdown
Member

/assign @johnbelamaric

for sig-architecture

- `<switch-name>`: Unique identifier for the switch

### Network QoS Annotation
Format: `network.qos.kubernetes.io/switches: <QoS>`

@aojea aojea Nov 18, 2024

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not really the switch, right, is the interface in the node that connects to the switch ... and we already have properties to define attributes on the network interfaces with DRA, see slice 14 https://docs.google.com/presentation/d/1Vdr7BhbYXeWjwmLjGmqnUkvJr_eOUdU0x-JxfXWxUT8/edit#slide=id.g2f750386db2_5_0 so I don't feel we need this additional annotation here

cc: @johnbelamaric @thockin

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is not a NIC on the node. These are QoS metrics from the node to every reachable switch. Also, the "switch" in this context could be a physical network device, or an aggregated entity defined by a CSP. For example, AWS returns 3 levels of switches per node, but the actual number of physical switches is unknown.

@aojea aojea Nov 19, 2024

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are QoS metrics from the node to every reachable switch

how is the Node connected to the first switch :) ?

Comment on lines +270 to +286
network.qos.kubernetes.io/switches: {
"nvl10": {
"latency": "2us",
"bandwidth": "100Gbps"
},
"sw11": {
"latency": "50us",
"bandwidth": "40Gbps"
},
"sw21": {
"latency": "500us",
"bandwidth": "20Gbps"
},
"sw31": {
"latency": "1ms",
"bandwidth": "10Gbps"
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are network interfaces on the node, I think we should better model them with DRA https://github.com/kubernetes/enhancements/pull/4965/files#r1846865095 , that also allows us to provide dynamic capabilities to the interfaces

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, as mentioned in the earlier comment, these QoS numbers represent node-to-reachable-switch metrics. They are not per NIC.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does it mean that some switches may not be connected directly?
how then the latency and bandwidth are obtained to guarantee those values?

Comment on lines +188 to +190
Format: `network.topology.kubernetes.io/<nw-switch-type>: <switch-name>`
- `<nw-switch-type>`: Logical type of the network switch (can be one of the reserved names or a custom name)
- Reserved names: `accelerator`, `block`, `datacenter`, `zone`

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is the part we need to loop in SIG architecture, I briefly touched on this with @thockin and it seems it took some time to settle on the region/zone.

So my understanding is that we need to model a hierarchy, this KEP suggest to use nested structures: zone > datacenter > block > accelerator , but we should at least describe in alternative why weights are not better than this, it seems to me that weights are more easy to standardize different topologies, as you only focus on the distance provided between layers, and can support different architectures with multiple layers

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This KEP is proposing to use reserved network types for typical network architectures, while allowing to extend network topology using custom network types.
We are providing means for weighted approach by specifying distance and/or bandwidth, latency or other metrics.
These are actual measurable physical characteristics of the network, and will be more accurate than specifying static weights.
Once again, we are providing QoS between a node and a switch, so the distance is the number of hops between the node and the switch. Same goes for bandwidth/latency.

Comment on lines +327 to +329
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.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IIUIC the use of custom network types means that environment that use them may not be compatible with other environments, that practically removes all the benefits of standarization, another thing where I think weighted/distances model can help better

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this was already addressed.


The same network topology depicted in Example 2 can be represented using custom network types.

Let's use `tor` for top-of-rack switches, `area` for the second level of switches, and `center` for the third level.

@aojea aojea Nov 18, 2024

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After seen this example I'm definitevely not in favor of custom types as it is impossible for a generic tool to infer the distance between these custom types ... it will also create fragmentation and incompatibility as multiple tools can define the same name with different meaning ... the example also talks about levels, that reinforces my idea of weights, so something like network.topology.kubernetes.io/tier: 1

In this example network.topology.kubernetes.io/tor: sw13 will be

  • Node: network.topology.kubernetes.io/tier: 1
  • ResourceSlice:
apiVersion: resource.k8s.io/v1alpha3
kind: ResourceSlice
…
spec:
    devices:
    - basic:
        attributes:
          tier:
            int: 1
          type:
            string: nvlink
          ip:
            string: 10.1.1.1/24
          latency:
            string: "50us"
          bandwith:
            string: "100gbps"
          

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When using custom network types, it is mandatory to define distance in the QoS annotation.
We explicitly expressed that in the KEP.

- Gang-scheduling auto-scaler
- DRA scheduler plugin

### Goals

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are there existing topology formats or consumers that we want Kubernetes to integrate with? If so, are these integrations goals or non-goals?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To the best of my knowledge, only EKS exposes their custom node labels for network layers.
The goal of this KEP is to create a standard way of describing switch network topology.
Ultimately, we want to use this standard in development of Kubernetes-native network-aware scheduler plugin for multi-node workloads. We put this task as a "no goal", as it would be an independent effort.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ultimately, we want to use this standard in development of Kubernetes-native network-aware scheduler plugin for multi-node workloads.

I'm (still) not seeing why that development work requires a KEP. An out-of-tree, out-of-project custom scheduler could use labels with keys outside of Kubernetes namespaces.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kubernetes-native network-aware scheduler plugin for multi-node workloads

Perhaps a reference implementation to show how the end to end works or even use it as part of the integration test.


## Summary

This document proposes a standard for declaring network topology in Kubernetes clusters,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is "proposes a standard set of terminologies for declaring network topology"... more clear?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks, updated!

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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure this KEP is proposing a standard method, but rather it is proposing a set of common terms. A method would be "label your nodes using label XYZ" or "implement a custom operator". We don't seem to be advocating for one method or the other, but rather we want to define a standard terminology so that any chosen method can render the underlying network topology using a language that we all understand. We anticipate that different environments may have good reason to prefer one method over an other (device-plugin + node labels vs DRA vs custom scheduler vs custom operator).

Do other folks agree? I think "Kubernetes currently lacks a standard set of terms to describe network topology" would be a clearer expression of whatever we're doing, if so.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed the wording, thank you!

Signed-off-by: Dmitry Shmulevich <[email protected]>
@k8s-ci-robot

Copy link
Copy Markdown
Contributor

@dmitsh: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
pull-enhancements-test d5407f7 link true /test pull-enhancements-test
pull-enhancements-verify d5407f7 link true /test pull-enhancements-verify

Full PR test history. Your PR dashboard. Please help us cut down on flakes by linking to an open issue when you hit one in your PR.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.


### Goals

- Introduce a standard way of representing network topology in Kubernetes clusters

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know this section was bigger before, but now it's too small. There has to be some goal of using that topology representation for something. Otherwise why would we want it?

Comment on lines +214 to +218
We propose to use the following four network hierarchy layer 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. `spine`: Spine-level switches connecting multiple blocks inside a datacenter.
4. `datacenter`: Zonal switches connecting multiple datacenters inside an availability zone.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems like a weird breakdown to me. I feel like every time people have talked about adding more topology labels beyond "region" and "zone", someone brings up "rack", but you just skip right over that layer...

In VM-based environments, you would want a layer for "hypervisor", but again, that doesn't correspond to anything here.

And you talk about people wanting to use these generically, but what if a given network is missing one of these layers? Eg, if my datacenter has no "block"s, but someone deploys a job that tries to use affinity by block, then what happens?

For that matter, if my application wants 50ms of latency between pods, then what level should I use for the pod affinity? Presumably that would be spine-level latency in some datacenters, block-level latency in others, and unachievable in yet others. With the existing "zone" and "region" levels, the assumption is that there's an order of magnitude of difference between the levels, so you can think about them in an agnostic way, but that doesn't really seem to work for these lower topology levels.

So, it seems to me like either:

  1. The labels have cluster-specific-meanings (in which case they don't need to be standardized), or
  2. The scheduling should be based not on topology per se, but on the actual latency/distance metrics that are computed from the topology (in which case the latency/distance information needs to be provided in a standardized way but the topology itself does not).

3. `spine`: Spine-level switches connecting multiple blocks inside a datacenter.
4. `datacenter`: Zonal switches connecting multiple datacenters inside an availability zone.

These types will accommodate the majority of common network hierarchies across different CSP and on-prem environments.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Anyone writing this KEP two years ago would not have included "accelerator" as a level... so I worry about how future-proof this approach is.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As technology advances, things change ...


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.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as others have noted, DRA is already addressing this use case

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm. not sure DRA can be used to represent topology of the entire cluster

@aojea

aojea commented Dec 19, 2024

Copy link
Copy Markdown
Member

Discussed during SIG Architecture Meeting on 12 Dec 2024 https://docs.google.com/document/d/1BlmHq5uPyBUDlppYqAAzslVbAO8hilgjqZUTaNXUhKM/edit?tab=t.0

The overall agreement seems we're going to hold off on implementing this, mainly because the ecosystem is still a bit wild west and it's not clear what the "standard" will look like in the future, new patterns or technologies may succeed or become outdated quickly, and that will cause problems in the future because enforcing a specific way to represent network topology could limit that flexibility and might even break compatibility with other projects.

/hold

@k8s-ci-robot k8s-ci-robot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Dec 19, 2024
@sftim

sftim commented Dec 19, 2024

Copy link
Copy Markdown

@dmitsh if you want help building an out-of-project but vendor-neutral way to capture this - and maybe to provide hints to the scheduler - then I think we can find some help for you.

The underlying ambition is important, even if right now this solution doesn't feel right.

@kannon92

kannon92 commented Mar 9, 2025

Copy link
Copy Markdown
Contributor

@dmitsh if you want help building an out-of-project but vendor-neutral way to capture this - and maybe to provide hints to the scheduler - then I think we can find some help for you.

The underlying ambition is important, even if right now this solution doesn't feel right.

I believe that https://github.com/NVIDIA/topograph was a big motivating factor for this KEP and from what I could tell this does work across multiple vendors. Its not device agnostic but not sure if that is what we mean by "vendor-neutral".

@sftim

sftim commented Mar 9, 2025

Copy link
Copy Markdown

I believe that https://github.com/NVIDIA/topograph was a big motivating factor for this KEP and from what I could tell this does work across multiple vendors. Its not device agnostic but not sure if that is what we mean by "vendor-neutral".

The logo for topograph: NVIDIA doesn't feel as vendor neutral as it could be. However the solution works with your Kubernetes or SLURM cluster no matter who sold you the equipment or rented you the node instances.


PS. We shouldn't recommend https://github.com/NVIDIA/topograph (my opinion) because it breaks some conventions and recommendations of the Kubernetes project. I'm fairly sure NVIDIA didn't mean harm, but using labels such as network.topology.kubernetes.io/spine implies Kubernetes endorsement that doesn't exist. I think they should have used something like networktopology.k8s.nvidia.com/spine or topograph.some-domain-they-buy.example/spine.

@dmitsh

dmitsh commented Mar 9, 2025

Copy link
Copy Markdown
Author

@dmitsh if you want help building an out-of-project but vendor-neutral way to capture this - and maybe to provide hints to the scheduler - then I think we can find some help for you.
The underlying ambition is important, even if right now this solution doesn't feel right.

I believe that https://github.com/NVIDIA/topograph was a big motivating factor for this KEP and from what I could tell this does work across multiple vendors. Its not device agnostic but not sure if that is what we mean by "vendor-neutral".

Major CSPs have already started applying network-topology related labels to the nodes:

AWS
topology.k8s.aws/network-node-layer-1=nn-abcd001
topology.k8s.aws/network-node-layer-2=nn-abcd002
topology.k8s.aws/network-node-layer-3=nn-abcd003

OCI
oci.oraclecloud.com/rdma.local_block_id=abcd001
oci.oraclecloud.com/rdma.network_block_id=abcd002
oci.oraclecloud.com/rdma.hpc_island_id=abcd003

GCP
cloud.google.com/gce-topology-subblock=abcd001
cloud.google.com/gce-topology-block=abcd002

This KEP proposes to standardize these labels. These labels can already be used today in pod affinity to improve topology-aware scheduling. As their utility becomes more apparent, other applications are likely to adopt them as well.

@dmitsh

dmitsh commented Mar 9, 2025

Copy link
Copy Markdown
Author

I believe that https://github.com/NVIDIA/topograph was a big motivating factor for this KEP and from what I could tell this does work across multiple vendors. Its not device agnostic but not sure if that is what we mean by "vendor-neutral".

The logo for topograph doesn't feel as vendor neutral as it could be. However the solution works with your Kubernetes or SLURM cluster no matter who sold you the equipment or rented you the node instances.

PS. We shouldn't recommend https://github.com/NVIDIA/topograph (my opinion) because it breaks some conventions and recommendations of the Kubernetes project. I'm fairly sure NVIDIA didn't mean harm, but using labels such as network.topology.kubernetes.io/spine implies Kubernetes endorsement that doesn't exist. I think they should have used something like networktopology.k8s.nvidia.com/spine or topograph.some-domain-they-buy.example/spine.

This KEP is focused on standardizing labels for topology-aware scheduling and does not involve Topograph. Your recommendations regarding the use of Topograph are outside the scope of this proposal.

I suggest focusing on the spirit of the proposal rather than the letter. If you have concerns about the label names, we can certainly explore alternative options.

If you suggest that the Topograph icon resembles a specific vendor, please provide the vendor's name to clarify the issue and avoid baseless accusations.

@sftim

sftim commented Mar 9, 2025

Copy link
Copy Markdown

@dmitsh let's move the Topograph branding discussion to Slack; this discussion is about whether we can merge a KEP into our list of enhancements that have a written proposal.

@sftim

sftim commented Mar 9, 2025

Copy link
Copy Markdown

My key points are:

  • I don't recommend making one particular way of node labelling official, even if it feels right in 2025. Mainly because I think it will date quickly and that making it official will unhelpfully calcify what should be a flexible mechanism.
  • I don't recommend endorsing the Topograph project as a vendor neutral way to achieve the same outcome.

Overall, I hope that we find a different approach (either as part of Kubernetes or as a separate project) that gets the vendor neutral outcome we want, without [my opinion] putting long term maintainability at risk.

@k8s-triage-robot

Copy link
Copy Markdown

The Kubernetes project currently lacks enough contributors to adequately respond to all PRs.

This bot triages PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the PR is closed

You can:

  • Mark this PR as fresh with /remove-lifecycle stale
  • Close this PR with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jun 7, 2025
@k8s-triage-robot

Copy link
Copy Markdown

The Kubernetes project currently lacks enough active contributors to adequately respond to all PRs.

This bot triages PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the PR is closed

You can:

  • Mark this PR as fresh with /remove-lifecycle rotten
  • Close this PR with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle rotten

@k8s-ci-robot k8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Jul 7, 2025
@k8s-triage-robot

Copy link
Copy Markdown

The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs.

This bot triages PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the PR is closed

You can:

  • Reopen this PR with /reopen
  • Mark this PR as fresh with /remove-lifecycle rotten
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/close

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

@k8s-triage-robot: Closed this PR.

Details

In response to this:

The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs.

This bot triages PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the PR is closed

You can:

  • Reopen this PR with /reopen
  • Mark this PR as fresh with /remove-lifecycle rotten
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@elmiko

elmiko commented Sep 24, 2025

Copy link
Copy Markdown
Contributor

this topic has come up during the most recent sig cloud provider meeting (24 september 2025). this seems like a topic that we should continue to work on.

we would like to promote the cloud controller manager maintainers to add this information where appropriate. it seems like there is a large challenge is gaining consensus about a standard way of handling these labels. it may be that for now, the best advice is that CCM teams should implement these as they see fit.

@aojea

aojea commented Sep 25, 2025

Copy link
Copy Markdown
Member

@elmiko I think a good first step should be to create a kind of "registry" where cloud providers can share this information with the community, the annecdotal evidence seems to indicate that as today only two cloud providers publish this information kubernetes-sigs/ai-conformance#5 (comment)

@johnbelamaric

Copy link
Copy Markdown
Member

Rather than standardizing a set of labels, I am proposing a way to use logical multi-node DRA devices to model topology. This doc may be of interest: https://docs.google.com/document/d/1Fg9ughIRMtt1HmDqiGWV-w9OKdrcKf_PsH4TjuP8Y40/edit?tab=t.0#heading=h.fd6kgam8o1zo

@elmiko

elmiko commented Sep 29, 2025

Copy link
Copy Markdown
Contributor

very cool! thank you both @aojea and @johnbelamaric , i've got a little more reading to do but this is interesting to me. i'll take some time to review the thread and the doc and see what questions i've got then ;)

thanks again 🙏

@resker

resker commented May 11, 2026

Copy link
Copy Markdown

@johnbelamaric - the Google Doc you reference seems to be access controlled... any chance you could open it up (if still applicable)? Or is this just a matter of joining the kubernetes-dev group?

@johnbelamaric

Copy link
Copy Markdown
Member

@johnbelamaric - the Google Doc you reference seems to be access controlled... any chance you could open it up (if still applicable)? Or is this just a matter of joining the kubernetes-dev group?

I shared it with you. It is open to [email protected] as well as some sig/wg mailing lists.

The proposal there adds a layer of indirection over top of labels. It sill can't quite capture sub-node topology like that required in #6006 - but that layer of indirection provides a way to introduce that kind of thing.

That doc has a bunch of different ideas/options. Recently I am trying to refine them a bit and even prototype some. Any feedback is useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. kind/kep Categorizes KEP tracking issues and PRs modifying the KEP directory lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. ok-to-test Indicates a non-member PR verified by an org member that is safe to test. sig/network Categorizes an issue or PR as relevant to SIG Network. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.