Ein EndpointSlice
ist eine Kubernetes-Ressource, die verwendet wird, um Netzwerkendpunkte einer Kubernetes-Dienstressource (Service) zu gruppieren. Sie bietet eine skalierbarere und effizientere Möglichkeit, Netzwerkinformationen über Pods und deren IP-Adressen zu verwalten, insbesondere in großen Clustern.
Hier sind einige wichtige Punkte zu EndpointSlices
:
- Gruppierung von Endpunkten:
- Ein
EndpointSlice
enthält eine Gruppe von Netzwerkendpunkten (IP-Adressen, Ports und zugehörige Metadaten), die zu einem bestimmten Kubernetes-Service gehören. - Jeder
EndpointSlice
kann eine begrenzte Anzahl von Endpunkten enthalten (standardmäßig bis zu 100).
- Ein
- Skalierbarkeit:
- Durch die Aufteilung der Endpunkte eines Services in mehrere kleinere
EndpointSlices
wird die Skalierbarkeit verbessert. Dies ist besonders wichtig für große Services mit vielen Pods, da das Verwalten einer einzelnen, riesigen Endpunktliste (wie es beiEndpoints
der Fall ist) ineffizient und schwierig sein kann.
- Durch die Aufteilung der Endpunkte eines Services in mehrere kleinere
- Effizienz:
EndpointSlices
sind effizienter hinsichtlich der Netzwerkbandbreite und der Verarbeitungszeit, da nur die relevantenEndpointSlices
aktualisiert werden müssen, wenn sich die Endpunkte eines Services ändern.
- Automatische Erstellung und Verwaltung:
- Kubernetes erstellt und verwaltet
EndpointSlices
automatisch basierend auf den Pods, die einem Service zugeordnet sind.
- Kubernetes erstellt und verwaltet
- API Version:
EndpointSlices
wurden ab Kubernetes 1.17 als Beta-Feature eingeführt und seit Kubernetes 1.21 als stabil (GA - General Availability) markiert.
Hier ist ein Beispiel für ein EndpointSlice
-Objekt:
apiVersion: discovery.k8s.io/v1
kind: EndpointSlice
metadata:
name: example-service
namespace: default
addressType: IPv4
endpoints:
- addresses:
- 10.0.0.1
conditions:
ready: true
hostname: pod-1
- addresses:
- 10.0.0.2
conditions:
ready: true
hostname: pod-2
ports:
- name: http
port: 80
protocol: TCP
In diesem Beispiel enthält der EndpointSlice
zwei Endpunkte mit den IP-Adressen 10.0.0.1
und 10.0.0.2
, die beide den HTTP-Port 80 verwenden.
EndpointSlices
verbessern die Effizienz und Skalierbarkeit der Netzwerkverwaltung in Kubernetes-Clustern, insbesondere bei der Handhabung großer und dynamischer Anwendungen.
Siehe auch: kubernetes-service-to-proxy-to-external-services