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

feat: support shared load balancer health probe mode. By setting `clu… #4891

Merged
merged 1 commit into from Nov 7, 2023

Conversation

nilo19
Copy link
Contributor

@nilo19 nilo19 commented Oct 31, 2023

sterServiceLoadBalancerHealthProbeMode to shared, all cluster services will share one health probe targeting the kube-proxy port 10256 and /healthz by default. The health check port and path can be configured by clusterServiceSharedLoadBalancerHealthProbePort and clusterServiceSharedLoadBalancerHealthProbePort.

What type of PR is this?

/kind feature

What this PR does / why we need it:

Which issue(s) this PR fixes:

Fixes #

Special notes for your reviewer:

Support shared load balancer health probe mode. By setting clusterServiceLoadBalancerHealthProbeMode to shared, all cluster services will share one health probe targeting the kube-proxy port 10256 and /healthz by default. The health check port and path can be configured by clusterServiceSharedLoadBalancerHealthProbePort and clusterServiceSharedLoadBalancerHealthProbePort.

Does this PR introduce a user-facing change?

feat: support shared load balancer health probe mode. By setting `clusterServiceLoadBalancerHealthProbeMode` to `shared`, all cluster services will share one health probe targeting the kube-proxy port 10256 and /healthz by default. The health check port and path can be configured by `clusterServiceSharedLoadBalancerHealthProbePort` and `clusterServiceSharedLoadBalancerHealthProbePort`.

Additional documentation e.g., KEPs (Kubernetes Enhancement Proposals), usage docs, etc.:


@k8s-ci-robot k8s-ci-robot added release-note Denotes a PR that will be considered when it comes time to generate release notes. kind/feature Categorizes issue or PR as related to a new feature. labels Oct 31, 2023
@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. approved Indicates a PR has been approved by an approver from all required OWNERS files. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Oct 31, 2023
@JoelSpeed
Copy link
Contributor

@nilo19 Do you think at some point it would be possible/helpful to switch the default from default to shared? We know that for ETP cluster services that the current default is ineffective, so I would suggest that helping users by making a switch to a better default would be advantageous?

I think given the way this PR is implemented, we could merge it today, create a warning or some release note to tell users that we intend to change the default and then after an appropriate period, switch the default over, WDYT?

If we have an appetite for doing so, we should probably not use default as the name for the current LB health checking, but rather something more descriptive, eg, servicenodeport?

@damdo
Copy link
Member

damdo commented Oct 31, 2023

Author of the original PR (#3887) that his one is superseding here.
Thanks for putting up the PR @nilo19

I agree with @JoelSpeed on here, I think given the envisioned KEP-3836: Improve Kube-proxy ingress connectivity reliability, we should try and move away from the "default" behaviour with servicenodeport and move towards the shared port as the standard.

@nilo19
Copy link
Contributor Author

nilo19 commented Oct 31, 2023

/retest

1 similar comment
@nilo19
Copy link
Contributor Author

nilo19 commented Oct 31, 2023

/retest

@nilo19
Copy link
Contributor Author

nilo19 commented Oct 31, 2023

@feiskyer what do you think of the suggestion?

@nilo19
Copy link
Contributor Author

nilo19 commented Nov 1, 2023

@dharmab @JoelSpeed I think it would be safer to use default as the default config and we can change to shared after the feature is stable.

@JoelSpeed
Copy link
Contributor

@nilo19 yes that was also my suggestion, but I think changing the name away from default would make sense as otherwise in the future you'd have a non-default value, called default


// Load Balancer health probe mode
const (
ClusterServiceLoadBalancerHealthProbeModeDefault = "default"
Copy link
Member

Choose a reason for hiding this comment

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

change to "unshared" for clear?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done

@feiskyer
Copy link
Member

feiskyer commented Nov 1, 2023

@nilo19 yes that was also my suggestion, but I think changing the name away from default would make sense as otherwise in the future you'd have a non-default value, called default

That's a good point. Let's change the "default" value to "unshared" here.

@JoelSpeed
Copy link
Contributor

Can I suggest ServiceNodePort as a value, so you would have Shared and ServiceNodePort as the two values. Unshared doesn't really describe the behaviour to me, I think ServiceNodePort would be a better description right? Since in the current case, we always set the health checks based on the service's node port?

@nilo19 nilo19 requested a review from feiskyer November 6, 2023 00:40
@feiskyer
Copy link
Member

feiskyer commented Nov 6, 2023

Can I suggest ServiceNodePort as a value, so you would have Shared and ServiceNodePort as the two values.

That's a good suggestion, thanks for actively reviewing.

…sterServiceLoadBalancerHealthProbeMode` to `shared`, all cluster services will share one health probe targeting the kube-proxy port 10256 and /healthz by default. The health check port and path can be configured by `clusterServiceSharedLoadBalancerHealthProbePort` and `clusterServiceSharedLoadBalancerHealthProbePort`.
@nilo19
Copy link
Contributor Author

nilo19 commented Nov 6, 2023

/retest

Copy link
Member

@feiskyer feiskyer left a comment

Choose a reason for hiding this comment

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

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Nov 7, 2023
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: feiskyer, nilo19

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot merged commit 4303055 into kubernetes-sigs:master Nov 7, 2023
17 checks passed
@keithmattix
Copy link

@feiskyer @nilo19 any chance we could backport this? If I understand correctly, users won't be able to use this functionality until they upgrade to k8s 1.29

@nilo19
Copy link
Contributor Author

nilo19 commented Jan 17, 2024

@keithmattix this feature will be ready in >=v1.28.5.

@keithmattix
Copy link

Ah great. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/feature Categorizes issue or PR as related to a new feature. lgtm "Looks good to me", indicates that a PR is ready to be merged. release-note Denotes a PR that will be considered when it comes time to generate release notes. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants