Cos'è un endpointslice in kubernetes?
EndpointSlice in Kubernetes è un tracker di endpoint di rete. Consente di monitorare gli endpoint di rete in un cluster Kubernetes. In parole semplici, è un oggetto che ottiene gli indirizzi IP da ciascun pod assegnato. Il servizio Kubernetes si riferisce a questo oggetto per ottenere il record degli indirizzi IP interni del pod per la comunicazione. Inoltre, questi endpoint sono utilizzati dai pod per essere esposti a un servizio.
Nel regno di Kubernetes, questi endpoint funzionano come un livello di astrazione che aiuta il servizio Kubernetes a assicurarsi che ci sia una distribuzione del traffico verso i baccelli nel cluster. Tuttavia, quando un carico di traffico aumenta, si verifica il problema del ridimensionamento del traffico. Questo perché un singolo endpoint contiene tutti gli endpoint di rete per ciascun servizio. E quando queste fonti crescono fino a una dimensione inaccettabile, le prestazioni di Kubernetes vengono influcate negativamente su. In altre parole, quando il numero di endpoint di rete cresce immensamente, la capacità di Kubernetes di ridimensionare la distribuzione viene influenzata negativamente. Facciamolo capire con l'aiuto della seguente immagine grafica:
Qui, puoi vedere che un endpoint contiene tutti i baccelli nel cluster e gli endpointslices sono l'alternativa estensibile e scalabile all'endpoint esistente. C'è solo una risorsa endpoint per l'intero servizio ma ci sono più di un endpointslices per lo stesso servizio. Gli endpointslices ti aiutano a ridimensionare le risorse di rete in questo modo. Per capire quanto sia significativo questo problema di scalabilità, facciamo un esempio.
Ad esempio, il servizio Kubernetes ha circa 9.000 pod che in qualche modo finiscono in risorse endpoint da 2 MB. Un unico endpoint ha tutte queste risorse endpoint dei servizi. Se qualsiasi endpoint di rete cambia nell'endpoint, l'intera risorsa dell'endpoint deve essere distribuita tra ciascun nodo nel cluster. Quando si tratta di gestire un cluster con 3000 nodi, diventa un grosso problema poiché è necessario inviare un numero enorme di aggiornamenti a ciascun nodo. Quindi, quando si ridimensiona di più in un solo endpoint, più difficile la rete diventa.
Tuttavia, gli endpointslices risolvono questo problema consentendo ai Kubernetes di ridimensionare il più possibile. Invece di utilizzare un singolo endpoint che contiene un enorme elenco di indirizzi IP e numeri di porta associati, utilizzare più endpointslices. Questi endpointslices sono piccoli pezzi di un enorme endpoint singolo. Queste fette sono molto più piccole, ma mitigano il carico causato dall'enorme endpoint. Puoi archiviare fino a 100 pod in un endpointslice. Questi endpointslices ti aiutano a distribuire il servizio a un pod specifico. Se qualsiasi endpoint di rete cambia, è necessario inviare aggiornamenti a un endpointslice che contiene un massimo di 100 pod. Tutti gli altri pod nella rete rimangono intatti.
Ora, apprendiamo come possiamo creare un endpointslice Kubernetes.
Come vengono creati gli endpointslices in kubernetes?
Kubernetes EndpointSlices è la migliore alternativa a un unico endpoint nel cluster Kubernetes. Non solo ti aiuta a tenere traccia di tutti gli endpoint di rete in modo semplice ed efficiente, ma offre anche prestazioni migliori rispetto a un singolo endpoint. Mostra anche il traffico di rete inferiore offrendo al contempo l'affidabilità del ridimensionamento. Inoltre, l'uso degli endpointslices multipli consente di mettere meno lavoro sul piano di controllo e sui nodi nel cluster Kubernetes.
Puoi avere i passaggi che ti consentono di imparare come creare gli endpointslices nel cluster Kubernetes nei seguenti esempi.
Passaggio 1: avviare il cluster minikube
Il primo e principale passo è garantire che il cluster minikube sia attivo. Un cluster di minikube inattivo non consentirà di eseguire alcun lavoro nell'ambiente Kubernetes, quindi assicurati che sia in modalità attiva. Per garantire che il cluster minikube sia attivo e funzionante, utilizzare il seguente comando:
> Minikube StartSe il cluster minikube non è stato avviato prima o se è in modalità sospensione, questo comando lo sveglia e lo fa funzionare. Ora hai un cluster attivo minikube. Sei pronto a creare l'EndpointSlice nel tuo ambiente Kubernetes.
Passaggio 2: creare una distribuzione con il file YAML
Il file YAML è più comunemente usato in Kubernetes per creare distribuzioni. È possibile utilizzare il file YAML di distribuzione preesistente o puoi crearne uno nuovo con il seguente comando:
> Nano Endpoint.YamlQuesto crea un nuovo file Yaml chiamato "Endpoint.YAML ”dove è possibile salvare la definizione di distribuzione per la configurazione. Fare riferimento alla definizione di distribuzione nella seguente schermata:
Passaggio 3: creare EndpointSlice usando il file YAML
Ora che abbiamo un file YAML che contiene la definizione di distribuzione, lo utilizziamo per creare gli endpointslices nel nostro cluster Kubernetes. Dobbiamo distribuire il file di configurazione in modo da poter avere gli endpointslices nel cluster Kubernetes. Utilizziamo il seguente comando per distribuire il file di configurazione:
> kubectl crea -f endpoint.YamlNell'ambiente Kubernetes, le risorse vengono create utilizzando il comando "Kubectl Crea". Quindi, utilizziamo il comando "Kubectl Crea" per creare gli endpointslices dal file di configurazione YAML.
Conclusione
Abbiamo esplorato gli endpointslices nell'ambiente Kubernetes. L'EndpointSlice in Kubernetes è un oggetto utilizzato per tracciare tutti gli endpoint di rete nel cluster Kubernetes. È la migliore alternativa a un endpoint enorme e singolo nel cluster Kubernetes poiché consente una migliore scalabilità ed estensibilità. Questi endpointslices consentono al cluster Kubernetes di offrire prestazioni migliori posizionando meno lavoro sui nodi e sul piano di controllo. Con l'aiuto di un esempio, abbiamo imparato a creare gli endpointslices nel cluster Kubernetes.