-
Notifications
You must be signed in to change notification settings - Fork 14.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adding initial EndpointSlice documentation
- Loading branch information
Showing
7 changed files
with
187 additions
and
0 deletions.
There are no files selected for viewing
93 changes: 93 additions & 0 deletions
93
content/en/docs/concepts/services-networking/endpoint-slices.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
--- | ||
reviewers: | ||
- freehan | ||
title: Endpoint Slices | ||
feature: | ||
title: Endpoint Slices | ||
description: > | ||
Scalable tracking of network endpoints in a Kubernetes cluster. | ||
content_template: templates/concept | ||
weight: 10 | ||
--- | ||
|
||
|
||
{{% capture overview %}} | ||
|
||
{{< feature-state for_k8s_version="v1.16" state="alpha" >}} | ||
{{< glossary_definition term_id="endpoint-slice" length="short" >}} | ||
|
||
_Endpoint Slices_ provide a simple way to track network endpoints within a | ||
Kubernetes cluster. They offer a more scalable and extensible alternative to | ||
Endpoints. | ||
|
||
{{% /capture %}} | ||
|
||
{{% capture body %}} | ||
|
||
## Endpoint Slice resources {#endpointslice-resource} | ||
|
||
In Kubernetes, an Endpoint Slice contains references to a set of network | ||
endpoints. The EndpointSlice controller automatically creates Endpoint Slices | ||
for a Kubernetes Service when a selector is specified. These Endpoint Slices | ||
will include references to any Pods that match the Service selector. Endpoint | ||
Slices group network endpoints together by unique Service and Port combinations. | ||
|
||
As an example, here's a sample EndpointSlice resource for the `example` | ||
Kubernetes Service. | ||
|
||
```yaml | ||
apiVersion: discovery.k8s.io/v1alpha | ||
kind: EndpointSlice | ||
metadata: | ||
name: example-abc | ||
labels: | ||
kubernetes.io/service-name: example | ||
addressType: IP | ||
ports: | ||
- name: http | ||
protocol: TCP | ||
port: 80 | ||
endpoints: | ||
- addresses: | ||
- "10.1.2.3" | ||
- "2001:db8::1234:5678" | ||
conditions: | ||
ready: true | ||
hostname: pod-1 | ||
topology: | ||
kubernetes.io/hostname: node-1 | ||
topology.kubernetes.io/zone: us-west2-a | ||
``` | ||
By default, Endpoint Slices managed by the EndpointSlice controller will have no | ||
more than 100 endpoints each. Below this scale, Endpoint Slices should map 1:1 | ||
with Endpoints and Services and have similar performance. | ||
Endpoint Slices can act as the source of truth for kube-proxy when it comes to | ||
how to route internal traffic. When enabled, they should provide a performance | ||
improvement for services with large numbers of endpoints. | ||
## Motivation | ||
The Endpoints API has provided a simple and straightforward way of | ||
tracking network endpoints in Kubernetes. Unfortunately as Kubernetes clusters | ||
and Services have gotten larger, limitations of that API became more visible. | ||
Most notably, those included challenges with scaling to larger numbers of | ||
network endpoints. | ||
Since all network endpoints for a Service were stored in a single Endpoints | ||
resource, those resources could get quite large. That affected the performance | ||
of Kubernetes components (notably the master control plane) and resulted in | ||
significant amounts of network traffic and processing when Endpoints changed. | ||
Endpoint Slices help you mitigate those issues as well as provide an extensible | ||
platform for additional features such as topological routing. | ||
{{% /capture %}} | ||
{{% capture whatsnext %}} | ||
* [Enabling Endpoint Slices](/docs/tasks/administer-cluster/enabling-endpoint-slices) | ||
* Read [Connecting Applications with Services](/docs/concepts/services-networking/connect-applications-service/) | ||
{{% /capture %}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
--- | ||
title: Endpoint Slice | ||
id: endpoint-slice | ||
date: 2018-04-12 | ||
full_link: /docs/concepts/services-networking/endpoint-slices/ | ||
short_description: > | ||
A way to group network endpoints together with Kubernetes resources. | ||
aka: | ||
tags: | ||
- networking | ||
--- | ||
A way to group network endpoints together with Kubernetes resources. | ||
|
||
<!--more--> | ||
|
||
A scalable and extensible way to group network endpoints together. These can be | ||
used as by {{< glossary_tooltip text="kube-proxy" term_id="kube-proxy" >}} to | ||
establish network routes on each {{< glossary_tooltip text="node" term_id="node" >}}. |
55 changes: 55 additions & 0 deletions
55
content/en/docs/tasks/administer-cluster/enabling-endpoint-slices.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
--- | ||
reviewers: | ||
- bowei | ||
- freehan | ||
title: Enabling Endpoint Slices | ||
content_template: templates/task | ||
--- | ||
|
||
{{% capture overview %}} | ||
This page provides an overview of enabling Endpoint Slices in Kubernetes. | ||
{{% /capture %}} | ||
|
||
|
||
{{% capture prerequisites %}} | ||
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} | ||
{{% /capture %}} | ||
|
||
{{% capture steps %}} | ||
|
||
## Introduction | ||
|
||
Endpoint Slices provide a scalable and extensible alternative to Endpoints in | ||
Kubernetes. They build on top of the base of functionality provided by Endpoints | ||
and extend that in a scalable way. When Services have a large number (>100) of | ||
network endpoints, they will be split into multiple smaller Endpoint Slice | ||
resources instead of a single large Endpoints resource. | ||
|
||
## Enabling Endpoint Slices | ||
As an alpha feature, Endpoint Slices are not enabled by default in Kubernetes. | ||
Enabling Endpoint Slices requires as many as 3 changes to Kubernetes cluster | ||
configuration. | ||
|
||
To enable the Discovery API group that includes Endpoint Slices, use the runtime | ||
config flag (`--runtime-config=discovery.k8s.io/v1alpha1=true`). | ||
|
||
The logic responsible for watching services, pods, and nodes and creating or | ||
updating associated Endpoint Slices lives within the EndpointSlice controller. | ||
This is disabled by default but can be enabled with the controllers flag on | ||
kube-controller-manager (`--controllers=endpointslice`). | ||
|
||
For Kubernetes components like kube-proxy to actually start using Endpoint | ||
Slices, the EndpointSlice feature gate will need to be enabled | ||
(`--feature-gates=EndpointSlice=true`). | ||
|
||
## Using Endpoint Slices | ||
|
||
With Endpoint Slices fully enabled in your cluster, you should see corresponding | ||
EndpointSlice resources for each Endpoints resource. In addition to supporting | ||
existing Endpoints functionality, Endpoint Slices should include new bits of | ||
information such as topology. They will allow for greater scalability and | ||
extensibility of network endpoints in your cluster. | ||
|
||
### Feature availability | ||
|
||
Kubernetes 1.16 or newer is required to use Endpoint Slices. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters