Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for controller node labels on Bare-Metal #1092

Open
2 tasks
Elegant996 opened this issue Dec 24, 2021 · 4 comments
Open
2 tasks

Support for controller node labels on Bare-Metal #1092

Elegant996 opened this issue Dec 24, 2021 · 4 comments

Comments

@Elegant996
Copy link

Description

In many use cases, the controller nodes are not used to schedule/host services and can be omitted from advertisement on external load balancers. This is easy enough to do by adding the node.kubernetes.io/exclude-from-external-load-balancers=true label to all controller nodes but is an extra step after deployment..

Steps to Reproduce

Provide clear steps to reproduce the bug.

  • Select a Bare-Metal deployment option
  • Observe that there is no option to specify labels for controller nodes

Expected behavior

Available option to set controller node labels.

Environment

  • Platform: bare-metal
  • OS: All
  • Release: Any
  • Terraform: Any
  • Plugins: Any

Possible Solution

Create a new configuration option called controller_node_labels for bare-metal deployments.

@dghubble
Copy link
Member

Can you elaborate on the software you're using? Typically you can use BGP or ECMP to balance traffic across nodes. There is no reason traffic needs (or even should) go to Kubernetes controller nodes.

@Elegant996
Copy link
Author

This is through calico which goes across all nodes. It is then combo'd with metallb to provide a local load balance address. While this can be avoided by not peering the controller nodes on the router side over BGP, it is still good practice to inform calico that the controller nodes should not be advertised to begin with per the documentation.

Allowing clients to add labels on the controller nodes would resolve this. You could also add node.kubernetes.io/exclude-from-external-load-balancers=true to controller nodes created through typhoon but it seems a bit excessive to not permit the feature.

Thanks!

@prvnmali2017
Copy link

This would allow users to specify labels for controller nodes during the deployment process. The syntax for the configuration option could look like this:

makefile

controller_node_labels = {
"node.kubernetes.io/exclude-from-external-load-balancers" = "true"
}

This solution would allow users to easily exclude controller nodes from external load balancers during the deployment process, eliminating the need for manual labeling after deployment. The addition of this configuration option would improve the usability and efficiency of the bare-metal deployment process.

@kalmufti
Copy link

I manage a complex system with Cilium and always have to manually set labels on my controllers nodes to populate BGP and other direct routing configs. Would be good to be able to set labels on controllers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants