Cos'è la scoperta di servizi in kubernetes?

Cos'è la scoperta di servizi in kubernetes?
I microservizi sono utilizzati nei sistemi moderni per mantenerli scalabili e funzionali. Con i suoi strumenti e funzionalità, Kubernetes crea l'impostazione perfetta per i microservizi da collaborare. La soluzione nel suo insieme diventa molto più flessibile poiché ogni componente dell'applicazione viene distribuito in un contenitore. Service Discovery è il processo di localizzazione di app e microservizi su una rete.

La tecnica per trovare automaticamente dispositivi e servizi su una rete è nota come Service Discovery. Il Service Discovery Protocol (SDP) è uno standard di networking per rilevare reti e localizzare risorse quando gli utenti vengono forniti risorse adeguate, come una stampante o un laptop abilitato a Bluetooth.

La scoperta del servizio viene realizzata in Kubernetes utilizzando nomi di servizi creati automaticamente corrispondenti all'indirizzo IP del servizio. In Kubernetes, il modello di servizi offre il componente più semplice ma cruciale di Microservices Discovery. Riconoscere come opera un'applicazione su Kubernetes richiede una comprensione della scoperta del servizio. Il servizio Kubernetes si sincronizza e automatizza la connettività tra i servizi, affrontando i problemi di container in una progettazione di microservizi. I servizi collegano i pod alla rete in modo coerente tra i cluster.

Il processo di determinazione di come aderire al servizio è noto come Service Discovery. La scoperta del servizio sul lato server e sul lato client sono i principali tipi di scoperta del servizio. Le applicazioni client possono utilizzare gli approcci di rilevamento del servizio sul lato server per il supporto tramite un router o un bilanciamento del carico. Discovery sul servizio sul lato client consente alle applicazioni dei clienti di individuare i servizi cercando o chiedendo un registro di servizio contenente istanze di servizio ed endpoint.

Le istanze di servizio possono essere registrate e temporaneamente sospese dal registro dei servizi in due diversi metodi. Il modello di auto-registrazione consente alle entità di servizio di registrarsi in modo indipendente con il registro dei servizi. Il modello di registrazione di terze parti prevede che il componente di un altro sistema esegui la registrazione e la deregistrazione a causa del servizio. Uno dei componenti che rendono la piattaforma di container capace e adattabile è Kubernetes Service Discovery. Attraverso la standardizzazione, tecnologie avanzate come Service Mesh Render Kubernetes Service Discovery più efficace. In questo argomento esamineremo alcuni dei processi di base della scoperta di servizi in Kubernetes.

Cominciamo mettendo insieme alcuni servizi necessari per esaminare come i concetti di servizio di Kubernetes si comportano in termini pratici. Accepiamo al terminale di Ubuntu 20.04 LTS OS per parlare di Service Discovery in Kubernetes. Per questo, è possibile utilizzare l'area dell'applicazione o una chiave di scelta rapida che è "ctrl+alt+t".

Per inizializzare Minikube, eseguire il comando elencato di seguito.

$ Minikube inizi

L'attuale edizione di Minikube verrà visualizzata nell'output di questa istruzione. Ora creeremo uno spazio dei nomi chiamato "Sviluppa" usando il comando Cat nella shell.

$ cat << ENDL > Sviluppo di namespace.YML

Il contenuto verrà aggiunto direttamente al terminale senza aprirlo dal file.

Per generare uno spazio dei nomi nel terminale, utilizzare il comando come:

$ kubectl Applica -f Sviluppo Names Space.YML

Lo spazio dei nomi è stato creato in modo efficace. Ora di nuovo, creeremo un altro spazio dei nomi chiamato "produzione" usando il comando cat nella shell.

Per generare uno spazio dei nomi nel terminale, eseguire il comando come:

$ kubectl applicare -f -namespace.YML

Ancora una volta, lo spazio dei nomi è stato creato in modo efficace. Ora distribuiremo le nostre applicazioni di esempio sugli spazi dei nomi che abbiamo creato in precedenza. A tale scopo, creeremo una distribuzione denominata "Hello" per lo spazio dei nomi di sviluppo utilizzando il comando Cat nella shell.

$ cat << ENDL > Deployment-Develop-sviluppo.YML

Il contenuto verrà aggiunto direttamente al terminale senza aprirlo dal file.

Per creare una distribuzione per lo spazio dei nomi di sviluppo, eseguire il comando come:

$ kubectl appliche -f app-deployment-develop.YML

La distribuzione è stata creata in modo efficace. Ancora una volta, creeremo un'altra distribuzione per uno spazio dei nomi chiamato "Produzione" usando il comando Cat nella shell.

$ cat << ENDL > Produzione di app-distribuzione app.YML

Per creare una distribuzione per lo spazio dei nomi di produzione nel terminale, utilizzare il comando come:

$ kubectl appliche -f-app-deployment-produzione.YML

La distribuzione è stata creata in modo efficiente, come si può vedere dall'output visualizzato. Ora per definire i pod e trovare il loro indirizzo IP, eseguiremo il comando sotto l'elenco come:

$ kubectl Descrivi i baccelli-tutti i namespaces

Gli indirizzi IP per ciascun pod nell'output sopra sono interni e unici per ogni occorrenza. Ogni volta che abbiamo ridistribuito l'applicazione, verrebbe fornito un nuovo indirizzo IP. Ora possiamo verificare se possiamo o meno eseguire il ping di un baccello all'interno del cluster. Crea un file utilizzando il comando Cat come.

$ cat << ENDL >> Jumpod.YML

Per creare un pod per lo spazio dei nomi predefinito nella shell, eseguire il comando come:

kubectl applica -f jumpod.YML

Il baccello è stato creato, come si può vedere dall'immagine sopra attaccata. Ping L'indirizzo IP di un pod temporaneo all'interno dello spazio dei nomi predefinito utilizzando il comando CAT nella shell utilizzando il comando Kubectl Exec.

$ kubectl exec -it jumpod ping 10.244.0.149

Il sistema di nomi di dominio è tra gli aspetti essenziali di un servizio Internet efficace (DNS). Tutti i contenuti e i servizi Web di Internet dipendono da DNS, quindi devi essere in grado di risolvere rapidamente eventuali problemi. Uno strumento chiamato nslookup è un metodo per farlo. Nslookup sta per "Nome Server Lookup", consente di controllare le informazioni su un nome di dominio e scoprire problemi. Possiamo acquisire il FQDN del POD usando lo strumento NSLOOKUP:

$ kubectl exec -it jumpod nslookup 10.244.0.149

Ora per controllare l'indirizzo IP distribuito esterno, eseguiremo il comando seguente:

$ kubectl Get Services-All-Namespaces

Conclusione

Durante la migrazione verso i microservizi, la scoperta del servizio è probabilmente il pezzo di infrastruttura più importante da implementare. In questo tutorial, abbiamo visto quanto sia semplice esporre un'app al pubblico utilizzando Kubernetes Services.