0
0
Kubernetesdevops~10 mins

Endpoints and endpoint slices in Kubernetes - Step-by-Step Execution

Choose your learning style9 modes available
Process Flow - Endpoints and endpoint slices
Service Created
Pods Selected by Service
Endpoints Created
Endpoint Slices Created
Clients Query Service
Clients Get Endpoint Slices
Clients Connect to Pod IPs
This flow shows how a Kubernetes Service selects pods, creates endpoints, then groups them into endpoint slices for clients to connect.
Execution Sample
Kubernetes
kubectl get endpoints my-service
kubectl get endpointslices -l kubernetes.io/service-name=my-service
These commands show the endpoints and endpoint slices for a service named 'my-service'.
Process Table
StepActionResource Created/UpdatedDetailsResult
1Create ServiceService 'my-service'Selector: app=webService created with selector
2Pods labeled app=web startPodsPod IPs: 10.0.0.1, 10.0.0.2Pods running and labeled
3Service controller finds matching podsEndpointsEndpoints list IPs: 10.0.0.1, 10.0.0.2Endpoints resource created
4Endpoint Slices createdEndpointSlicesSlices group IPs (max 100 per slice)EndpointSlices resource created
5Client queries ServiceDNS lookupService IP resolvedClient gets endpoint slices info
6Client connects to pod IPsNetwork connectionsConnects to 10.0.0.1 or 10.0.0.2Traffic routed to pods
7Pod 10.0.0.2 removedEndpoints updatedEndpoints now only 10.0.0.1Endpoints and slices updated
8Client queries againDNS lookupService IP resolvedClient gets updated endpoint slices
9Client connects to remaining podNetwork connectionsConnects to 10.0.0.1Traffic routed correctly
10No more matching podsEndpoints emptyNo IPs listedService has no endpoints
11Client queriesDNS lookupService IP resolvedClient gets empty endpoint slices
12Client connection failsNetwork connectionsNo pods to connectConnection fails or retries
💡 Execution stops when no pods match the service selector, so endpoints and endpoint slices are empty.
Status Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 7After Step 10Final
Pods with label app=webNone10.0.0.1, 10.0.0.210.0.0.1, 10.0.0.210.0.0.1, 10.0.0.210.0.0.1NoneNone
Endpoints IPsNoneNone10.0.0.1, 10.0.0.210.0.0.1, 10.0.0.210.0.0.1NoneNone
Endpoint Slices IPsNoneNoneNone10.0.0.1, 10.0.0.210.0.0.1NoneNone
Key Moments - 3 Insights
Why do endpoint slices exist if endpoints already list pod IPs?
Endpoint slices split endpoints into smaller groups for scalability and efficiency, as shown in step 4 where slices group IPs instead of one big list.
What happens to endpoints and endpoint slices when a pod is removed?
As in step 7, the pod IP is removed from endpoints and endpoint slices are updated to reflect the current pods.
Why does the client get empty endpoint slices sometimes?
When no pods match the service selector (step 10), endpoints and endpoint slices are empty, so clients receive no pod IPs to connect.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table at step 3. What IPs are listed in the endpoints?
ANo IPs listed
B10.0.0.1 and 10.0.0.2
COnly 10.0.0.1
D10.0.0.3
💡 Hint
Check the 'Endpoints' column in step 3 of the execution table.
At which step does the endpoints list update to remove a pod IP?
AStep 7
BStep 4
CStep 10
DStep 2
💡 Hint
Look for the step mentioning pod removal and endpoints update.
If a new pod with IP 10.0.0.3 is added matching the service selector, what changes in the variable tracker after step 2?
AEndpoints remain unchanged
BEndpoint slices become empty
CPods list includes 10.0.0.1, 10.0.0.2, 10.0.0.3
DPods list is empty
💡 Hint
Check the 'Pods with label app=web' row in variable tracker after step 2.
Concept Snapshot
Kubernetes Services select pods by labels.
Endpoints list pod IPs matching the service.
Endpoint Slices group endpoints for scalability.
Clients query endpoint slices to connect to pods.
Endpoint slices update dynamically as pods change.
Full Transcript
In Kubernetes, when you create a Service, it selects pods using labels. The system creates an Endpoints resource listing the IPs of those pods. To improve scalability, Kubernetes groups these endpoints into Endpoint Slices, each holding a subset of pod IPs. Clients querying the Service get these endpoint slices to know where to send traffic. When pods are added or removed, endpoints and endpoint slices update accordingly. If no pods match, endpoints and slices are empty, so clients cannot connect. This flow ensures efficient and scalable routing of traffic to pods.