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
EndpointSliceenthält eine Gruppe von Netzwerkendpunkten (IP-Adressen, Ports und zugehörige Metadaten), die zu einem bestimmten Kubernetes-Service gehören. - Jeder
EndpointSlicekann eine begrenzte Anzahl von Endpunkten enthalten (standardmäßig bis zu 100).
- Ein
- Skalierbarkeit:
- Durch die Aufteilung der Endpunkte eines Services in mehrere kleinere
EndpointSliceswird die Skalierbarkeit verbessert. Dies ist besonders wichtig für große Services mit vielen Pods, da das Verwalten einer einzelnen, riesigen Endpunktliste (wie es beiEndpointsder Fall ist) ineffizient und schwierig sein kann.
- Durch die Aufteilung der Endpunkte eines Services in mehrere kleinere
- Effizienz:
EndpointSlicessind effizienter hinsichtlich der Netzwerkbandbreite und der Verarbeitungszeit, da nur die relevantenEndpointSlicesaktualisiert werden müssen, wenn sich die Endpunkte eines Services ändern.
- Automatische Erstellung und Verwaltung:
- Kubernetes erstellt und verwaltet
EndpointSlicesautomatisch basierend auf den Pods, die einem Service zugeordnet sind.
- Kubernetes erstellt und verwaltet
- API Version:
EndpointSliceswurden 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