I servizi sono il livello di astrazione di rendere un'applicazione accessibile come servizio di rete sul set di pod. Offre un singolo nome DNS e indirizzo IP con il quale è possibile accedere ai pod. Viene aggiunto di fronte a ciascun pod per fornire un indirizzo IP statico. Questo articolo descrive la necessità di un livello di servizio e i tipi di servizi in Kubernetes. Fare riferimento a questo articolo dall'inizio alla fine se sei nuovo a questo concetto e non sai come creare un servizio Kubernetes.
Quali sono i servizi Kubernetes?
Un servizio in Kubernetes è un'astrazione che definisce una raccolta di baccelli logici in cui un componente o un'applicazione attiva è alloggiato e contiene una politica di accesso. A causa della natura fugace dei singoli baccelli, Kubernetes garantisce solo la disponibilità dei pod e delle repliche specificati, non la loro vivacità. Ciò suggerisce che altri pod che devono interagire con questa applicazione o componente non si basano sugli indirizzi IP dei loro baccelli sottostanti.
Un servizio è assegnato anche con un indirizzo IP simulato (in Kubernetes, viene quindi definito un clusterip) e sopravvive fino a quando non viene espressamente ucciso. Le query al servizio vengono inoltrate ai pod appropriati, rendendolo un'interfaccia affidabile per l'applicazione o la comunicazione del modulo. Le richieste per le applicazioni native di Kubernetes possono anche essere effettuate attraverso un'API nell'apiserver per Kubernetes che espone costantemente e mantiene gli endpoint di pod reali.
Quando abbiamo bisogno dei servizi Kubernetes?
Ecco i motivi per cui abbiamo bisogno di servizi Kubernetes:
Indirizzo IP stabile
Avere un indirizzo IP statico che rimane anche se il pod muore. Di fronte a ciascun pod, chiamiamo i servizi che forniscono accesso persistente e stabile per l'indirizzo IP a quel pod.
Bilancio del carico
Quando hai repliche POD. Ad esempio, hai tre repliche di un'applicazione di microservizio o MySQL. Il servizio ottiene ogni richiesta, prendendo di mira tale applicazione, ad esempio MySQL e lo inoltra a una di queste parti.
Accoppiamento lasco
I servizi sono una buona astrazione per l'accoppiamento sciolto o la comunicazione all'interno dei componenti del cluster.
All'interno e all'esterno del cluster
I servizi forniscono comunicazioni all'interno del cluster e al di fuori del cluster come le richieste del browser al cluster o al database.
Tipi di servizi in Kubernetes
Clusterip
Il tipo di servizio più comune o predefinito in Kubernetes. Senza concedere un accesso esterno, crea un servizio all'interno del cluster Kubernetes che può essere utilizzato dalle altre app all'interno del cluster.
Nodeport
Questo servizio apre una porta particolare su tutti i nodi implementati nel cluster e il traffico ricevuto dalla porta viene inoltrato al servizio. Non è possibile accedere al servizio dall'IP cluster esterno.
Loadbalancer
Genera gli IP pubblici per consentire un accesso tramite il cloud. Quando si utilizza il motore Google Kubernetes (GKE), viene creato un bilanciamento del carico di rete con un singolo indirizzo IP a cui è possibile accedere agli utenti esterni e dirige il traffico verso il nodo appropriato nel cluster Kubernetes. Lo stesso metodo di clusterip o nodeport può essere utilizzato per accedervi.
Nome esterno
Questo è un modo standard per rappresentare un dataStore esterno, come un database, all'interno di Kubernetes creando un servizio. Quando i pod da uno spazio dei nomi devono comunicare con un servizio in uno spazio dei nomi diverso, è possibile utilizzare quel servizio esterno (come servizio locale).
Prerequisiti:
Ecco alcune cose indispensabili prima di dirigersi verso la sezione seguente:
Come creare un servizio in Kubernetes
Qui, ti guideremo attraverso un esempio semplice che ti mostra come creare un servizio su Kubernetes. Cominciamo!
Passaggio 1: avviare il cluster minikube
Innanzitutto, avvia il cluster minikube in modo da poter utilizzare i comandi Kubectl ed eseguire l'applicazione. Il cluster Minikube ti consente di distribuire i tuoi nodi, i baccelli e persino il cluster nell'ambiente Kubernetes. Quindi, è essenziale mantenere il minikube in modalità attivo usando il comando successivo:
> Minikube Start
Questo attiva il cluster minikube e rende pronto l'ambiente Kubernetes.
Passaggio 2: COnfigure the YAML Manifest to Deployment per Nginx
Il servizio indirizza tutte le richieste in arrivo alla distribuzione che stabiliamo utilizzando il seguente comando:
> Nano campionario.Yaml
Quanto segue è il file di configurazione completo:
Passaggio 3: creare un oggetto di servizio nel cluster
Per aggiungere un oggetto di servizio a un cluster, eseguire il seguente comando:
> kubecl applicare -f campionario.Yaml
Passaggio 4: crea tre repliche per Nginx
Il comando seguente distribuisce Nginx con tre copie:
> Kubectl Ottieni distribuzione | grep nginx
Passaggio 5: specificare le informazioni (POD, replicas)
I seguenti comandi mostrano i dettagli della distribuzione, delle repliche e del pod:
> Kubectl Ottieni replicAset | grep nginx
Passaggio 6: Dettagli del pod
Qui, utilizziamo il seguente comando per vedere le copie esatte di Nginx:
> kubectl ottieni pod | grep nginx
Puoi vedere che tre copie di Nginx sono realizzate nello screenshot precedente.
Passaggio 7: Create una definizione di servizio
In questo passaggio, creiamo una definizione di servizio utilizzando il seguente comando elencato:
> Nano campioni di servizio.Yaml
Con la descrizione del servizio di cui sopra, un servizio del tipo di NodePort viene creato utilizzando lo spazio dei nomi predefinito e le richieste vengono inoltrate ai baccelli con l'etichetta NGINX come i baccelli che sono stati generati durante la fase di creazione di distribuzione precedente.
Passaggio 8: CREATE UN SERVIZIO
Per creare un servizio, utilizzare il seguente comando:
> kubectl applicare -f sampleervice.Yaml
Nell'output, puoi vedere che il servizio viene creato correttamente.
Passaggio 9: ottenere i dettagli del servizio
In questo passaggio, otteniamo le specifiche del servizio e cerchiamo il nodo in cui è accessibile. Il comando per farlo è il seguente:
> Kubectl Ottieni servizio | grep nginx
Passaggio 10: descrivi i dettagli del servizio
In questo passaggio, utilizziamo il comando Descrive per vedere i dettagli del servizio. Il comando Descrive è dato come segue:
> kubectl Descrivi il servizio nginx
Il servizio è accessibile sulla porta 30747, come mostrato nello screenshot precedente. Potresti sperimentare qualcosa di diverso perché la porta è stata scelta a caso dall'intervallo disponibile. Ora, questo servizio su Nodeip: NodePort consente l'accesso all'applicazione NGINX.
Conclusione
Abbiamo appreso che il servizio è un livello astratto che è posto davanti ai pod per fornire un indirizzo IP stabile. Possiamo accedere a Internet utilizzando il tipo di servizio loadBalancer. Successivamente, abbiamo implementato il semplice esempio di creazione di un servizio passo dopo passo su Kubernetes, consentendo un accesso all'applicazione NGINX.