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

docs: Note that CiliumEndpointSlice and K8s' EndpointSlice are distinct #24842

Merged
merged 1 commit into from Apr 19, 2023

Conversation

qmonnet
Copy link
Member

@qmonnet qmonnet commented Apr 12, 2023

In an attempt to lift some confusing about the similar naming of CiliumEndpointSlices and Kubernetes' EndpointSlices, and to avoid users to activate one when they only want the other, add a note to the documentation to clarify that CiliumEndpointSlice is a concept specific to Cilium, and unrelated to the Kubernetes feature.

@qmonnet qmonnet added area/documentation Impacts the documentation, including textual changes, sphinx, or other doc generation code. release-note/misc This PR makes changes that have no direct user impact. labels Apr 12, 2023
@qmonnet qmonnet requested review from a team as code owners April 12, 2023 14:45
Copy link
Member

@joestringer joestringer left a comment

Choose a reason for hiding this comment

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

I think that the part about the two types being unrelated is accurate, but I wonder if we can try to make the core explanation here a bit more clear from a use case point of view.

@qmonnet qmonnet force-pushed the pr/ces-note branch 2 times, most recently from 2705c4b to 3bb3f27 Compare April 14, 2023 09:06
Copy link
Member

@joestringer joestringer left a comment

Choose a reason for hiding this comment

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

This is accurate to today's implementation. I'll CC @brb here as well though since I think he's investigating potential deviations on this.

Copy link
Contributor

@zacharysarah zacharysarah left a comment

Choose a reason for hiding this comment

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

@qmonnet Nice work! ✨ Some minor edits for clarity, otherwise LGTM

Comment on lines 34 to 50
CiliumEndpointSlice is a concept that is specific to Cilium, and not related
to `Kubernetes' EndpointSlice`_. Although the names are close, and even if
the concept of slices in each feature brings similar improvements for
scalability, they address different problems.

Kubernetes' Endpoints and EndpointSlices allow Cilium to make load-balancing
decisions for a particular Service object; EndpointSlices offer a scalable
way to track *Service back-ends* within a cluster.

On the other hand, CiliumEndpoints and CiliumEndpointSlices are used to make
network routing and policy decisions. So CiliumEndpointSlices focus on
tracking *Pods*, batching CEPs to reduce the number of updates to propagate
through the API-server on large clusters.

Enabling one does not affect the other.

.. _Kubernetes' EndpointSlice: https://kubernetes.io/docs/concepts/services-networking/endpoint-slices/
Copy link
Contributor

Choose a reason for hiding this comment

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

Edits for clarity.

Suggested change
CiliumEndpointSlice is a concept that is specific to Cilium, and not related
to `Kubernetes' EndpointSlice`_. Although the names are close, and even if
the concept of slices in each feature brings similar improvements for
scalability, they address different problems.
Kubernetes' Endpoints and EndpointSlices allow Cilium to make load-balancing
decisions for a particular Service object; EndpointSlices offer a scalable
way to track *Service back-ends* within a cluster.
On the other hand, CiliumEndpoints and CiliumEndpointSlices are used to make
network routing and policy decisions. So CiliumEndpointSlices focus on
tracking *Pods*, batching CEPs to reduce the number of updates to propagate
through the API-server on large clusters.
Enabling one does not affect the other.
.. _Kubernetes' EndpointSlice: https://kubernetes.io/docs/concepts/services-networking/endpoint-slices/
CiliumEndpointSlice is a concept that is specific to Cilium and is not related
to `Kubernetes' EndpointSlice`_. Although the names are similar, and even though
the concept of slices in each feature brings similar improvements for
scalability, they address different problems.
Kubernetes' Endpoints and EndpointSlices allow Cilium to make load balancing
decisions for a particular Service object; Kubernetes' EndpointSlices offer a scalable
way to track *Service back-ends* within a cluster.
By contrast, CiliumEndpoints and CiliumEndpointSlices are used to make
network routing and policy decisions. CiliumEndpointSlices focus on
tracking Pods, batching CEPs to reduce the number of updates to propagate
through the API-server on large clusters.
Enabling one does not affect the other.
.. _Kubernetes' EndpointSlice: https://kubernetes.io/docs/concepts/services-networking/endpoint-slices/

Copy link
Member Author

@qmonnet qmonnet Apr 18, 2023

Choose a reason for hiding this comment

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

OK thanks! I always struggle to know what's best on hyphen usage on words such as “load balanc*” or “back-end”. Looks like opinions are mixed anyway, with some preference for attaching all:

$ rg -Iic 'load-balanc' Documentation | awk '{a=a+$1} END {print a}' 
75
$ rg -Iic 'load balanc' Documentation | awk '{a=a+$1} END {print a}'
72
$ rg -Iic 'loadbalanc' Documentation | awk '{a=a+$1} END {print a}' 
181

but I prefer splitting so I'll follow your suggestion.

I addressed the other suggestions too.

Copy link
Contributor

Choose a reason for hiding this comment

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

@qmonnet Guidance on hyphens is mixed; I agree that it's confusing!

In this case, removing the hyphen from "load-balancing decisions" makes it clearer that the decisions are about load balancing, rather than the act of deciding somehow serving a load balancing function. Does that make sense?

Copy link
Member Author

Choose a reason for hiding this comment

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

Yes it does, thanks!

In an attempt to lift some confusing about the similar naming of
CiliumEndpointSlices and Kubernetes' EndpointSlices, and to avoid users
to activate one when they only want the other, add a note to the
documentation to clarify that CiliumEndpointSlice is a concept specific
to Cilium, and unrelated to the Kubernetes feature.

Co-authored-by: Joe Stringer <joe@isovalent.com>
Signed-off-by: Quentin Monnet <quentin@isovalent.com>
@pchaigno pchaigno merged commit bcf223e into cilium:main Apr 19, 2023
35 checks passed
@qmonnet qmonnet deleted the pr/ces-note branch April 21, 2023 23:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/documentation Impacts the documentation, including textual changes, sphinx, or other doc generation code. release-note/misc This PR makes changes that have no direct user impact.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants