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.