Tutorial su Kubernetes: una guida completa per Kubernetes



Questo blog sul tutorial di Kubernetes ti guiderà attraverso tutti i concetti del sistema di orchestrazione dei contenitori con un pratico.

Kubernetes è una piattaforma che elimina i processi manuali coinvolti nella distribuzione di applicazioni containerizzate. In questo blog sul tutorial di Kubernetes, esaminerai tutti i concetti relativi a questa soluzione di gestione multi-container.

In questo tutorial verranno trattati i seguenti argomenti:





Ora, prima di andare avanti in questo blog, consentitemi di illustrarvi rapidamente la containerizzazione.

Quindi, prima che i container iniziassero a esistere, gli sviluppatori e i tester avevano sempre un litigio tra loro. Questo di solito accadeva perché ciò che funzionava dal lato sviluppatore non funzionava dal lato del test. Entrambi esistevano in ambienti diversi. Ora, per evitare tali scenari, sono stati introdotti contenitori in modo che sia gli sviluppatori che i tester fossero sulla stessa pagina.



Anche la gestione di un gran numero di container insieme era un problema. A volte durante l'esecuzione dei container, dal lato del prodotto, sono stati sollevati pochi problemi, che non erano presenti nella fase di sviluppo. Questo tipo di scenari ha introdotto il Container Orchestration System.

Prima di immergermi in profondità nel sistema di orchestrazione, consentitemi di elencare rapidamente le sfide affrontate senza questo sistema.



Tutorial su Kubernetes: sfide senza orchestrazione dei container

Sfide senza orchestrazione dei container - Tutorial Kubernetes - Edureka

Come puoi vedere nel diagramma sopra, quando più servizi vengono eseguiti all'interno di contenitori, potresti voler ridimensionare questi contenitori. Nelle industrie su larga scala, questo è davvero difficile da fare. Questo perché aumenterebbe il costo per mantenere i servizi e la complessità per eseguirli fianco a fianco.

Ora, per evitare di impostare i servizi manualmente e superare le sfide, era necessario qualcosa di grande. È qui che entra in gioco Container Orchestration Engine.

Questo motore ci consente di organizzare più contenitori, in modo tale che tutte le macchine sottostanti vengano avviate, i contenitori siano integri e distribuiti in un ambiente cluster. Nel mondo di oggi, ci sono principalmente due di questi motori: Governatori & Docker Swarm .

Tutorial su Kubernetes: Kubernetes contro Docker Swarm

Governatori e Docker Swarm sono strumenti di orchestrazione dei container leader nel mercato di oggi. Quindi, prima di usarli in prod, dovresti sapere cosa sono esattamente e come funzionano.

Inoltre, nel blog, approfondirò Kubernetes, ma per conoscere Docker puoi fare clic .

Come puoi fare riferimento all'immagine sopra, Kubernetes, rispetto a Docker Swarm, possiede una grande comunità attiva e consente il ridimensionamento automatico in molte organizzazioni. Allo stesso modo, Docker Swarm ha un cluster facile da avviare rispetto a Kubernetes, ma è limitato alle funzionalità dell'API Docker.

Bene, gente, queste non sono le uniche differenze tra questi strumenti migliori. Se desideri conoscere le differenze dettagliate tra entrambi questi strumenti di orchestrazione dei contenitori, puoi fare clic su

Interessato a saperne di più su Kubernetes?

Se potessi scegliere tra i due, allora dovrebbe essere Kubernetes poiché i contenitori devono essere gestiti e collegati al mondo esterno per attività come la pianificazione, il bilanciamento del carico e la distribuzione.

Ma, se pensi logicamente, Docker Swarm sarebbe un'opzione migliore, dato che funziona sopra Docker, giusto? Se fossi in te, mi sarei sicuramente confuso su quale strumento usare. Ma hey, Kubernetes è un leader indiscusso nel mercato e funziona anche su container Docker con funzionalità migliori.

Ora che hai capito la necessità di Kubernetes, è un buon momento, te lo dico Cos'è Kubernetes?

Tutorial su Kubernetes: Cos'è Kubernetes?

è un open-source sistema che gestisce il lavoro di pianificazione dei contenitori su un cluster di elaborazione e gestisce i carichi di lavoro per garantire che vengano eseguiti come desidera l'utente. Nato da un'idea di Google, offre un'eccellente community e funziona brillantemente con tutti i fornitori di cloud per diventare un soluzione di gestione multi-container.

Tutorial su Kubernetes: Caratteristiche di Kubernetes

Le caratteristiche di Kubernetes sono le seguenti:

tipo di dati data nell'esempio sql
  • Pianificazione automatizzata: Kubernetes fornisce un'utilità di pianificazione avanzata per avviare il contenitore sui nodi del cluster in base ai requisiti delle risorse e ad altri vincoli, senza sacrificare la disponibilità.
  • Capacità di autoguarigione: Kubernetes consente di sostituire e riprogrammare i contenitori quando i nodi muoiono. Inoltre, elimina i contenitori che non rispondono al controllo di integrità definito dall'utente e non li pubblicizza ai clienti finché non sono pronti per la pubblicazione.
  • Implementazioni e rollback automatizzati: Kubernetes implementa le modifiche all'applicazione o alla sua configurazione monitorando al contempo l'integrità dell'applicazione per garantire che non uccida tutte le istanze contemporaneamente. Se qualcosa va storto, con Kubernetes puoi annullare la modifica.
  • Scalabilità orizzontale e bilanciamento del carico: Kubernetes può aumentare e ridurre le dimensioni dell'applicazione in base ai requisiti con un semplice comando, utilizzando un'interfaccia utente o automaticamente in base all'utilizzo della CPU.

Tutorial su Kubernetes: Architettura Kubernetes

Kubernetes Architecture ha i seguenti componenti principali:

  • Nodi master
  • Nodi di lavoro / slave

Ho intenzione di discuterne uno per uno. Quindi, inizialmente iniziamo con la comprensione del Master Node .

Master Node

Il nodo master è responsabile della gestione del cluster Kubernetes. È principalmente il punto di ingresso per tutte le attività amministrative. Può esserci più di un nodo master nel cluster per verificare la tolleranza agli errori.

Come puoi vedere nel diagramma sopra, il nodo master ha vari componenti come API Server, Controller Manager, Scheduler ed ETCD.

  • Server API: Il server API è il punto di ingresso per tutti i comandi REST utilizzati per controllare il cluster.
  • Controller Manager: È un daemon che regola il cluster Kubernetes e gestisce diversi loop di controllo non terminanti.
  • Scheduler: Lo scheduler pianifica le attività sui nodi slave. Memorizza le informazioni sull'utilizzo delle risorse per ogni nodo slave.
  • ETCD: ETCD è un archivio chiave-valore semplice, distribuito e coerente. Viene utilizzato principalmente per la configurazione condivisa e il rilevamento dei servizi.

Nodi di lavoro / slave

I nodi di lavoro contengono tutti i servizi necessari per gestire la rete tra i contenitori, comunicare con il nodo master e assegnare risorse ai contenitori pianificati.

Come puoi vedere nel diagramma sopra, il nodo di lavoro ha vari componenti come Docker Container, Kubelet, Kube-proxy e Pods.

  • Contenitore Docker: Docker viene eseguito su ciascuno dei nodi di lavoro ed esegue i pod configurati
  • Kubelet: Kubelet ottiene la configurazione di un pod dal server API e garantisce che i contenitori descritti siano attivi e funzionanti.
  • Proxy di Cuba: Kube-proxy funge da proxy di rete e bilanciamento del carico per un servizio su un singolo nodo di lavoro
  • Cialde: Un pod è uno o più contenitori che vengono eseguiti logicamente insieme sui nodi.

Se desideri una spiegazione dettagliata di tutti i componenti di Kubernetes Architecture, puoi fare riferimento al nostro blog su

Vuoi ottenere la certificazione in Kubernetes?

Tutorial su Kubernetes: Case study su Kubernetes

Y ahoo! GIAPPONE è un provider di servizi web con sede a Sunnyvale, California. Poiché la società mirava a virtualizzare l'hardware, l'azienda ha iniziato a utilizzare OpenStack nel 2012. Il loro ambiente interno è cambiato molto rapidamente. Tuttavia, a causa del progresso della tecnologia cloud e container, l'azienda voleva il capapossibilità di lanciare servizi su varie piattaforme.

Problema: Come creare immagini per tutte le piattaforme richieste da un codice dell'applicazione e distribuire quelle immagini su ciascuna piattaforma?

Per una migliore comprensione, fare riferimento all'immagine sottostante. Quando il codice viene modificato nel registro del codice, le immagini bare metal, i contenitori Docker e le immagini VM vengono creati dagli strumenti di integrazione continua, inseriti nel registro delle immagini e quindi distribuiti su ciascuna piattaforma dell'infrastruttura.


Ora, concentriamoci sul flusso di lavoro del contenitore per capire come hanno utilizzato Kubernetes come piattaforma di distribuzione. Fare riferimento all'immagine sottostante per dare un'occhiata all'architettura della piattaforma.

Vengono utilizzate istanze di OpenStack, con Docker, Kubernetes, Calico, ecc. Per eseguire varie operazioni come Container Networking, Container Registry e così via.

Quando hai un numero di cluster, diventa difficile gestirli, giusto?

Quindi, volevano solo creare un semplice cluster OpenStack di base per fornire le funzionalità di base necessarie per Kubernetes e rendere l'ambiente OpenStack più facile da gestire.

Combinando il flusso di lavoro per la creazione di immagini e Kubernetes, hanno creato la seguente toolchain che semplifica il passaggio dal codice alla distribuzione.


Questo tipo di toolchain ha assicurato che tutti i fattori per la distribuzione della produzione come multi-tenancy, autenticazione, archiviazione, rete e rilevamento dei servizi fossero considerati.

È così che gente, Yahoo! GIAPPONE ha creato una toolchain di automazione per la distribuzione del codice 'con un clic' su Kubernetes in esecuzione su OpenStack, con l'aiuto di Google e Solinea .

Tutorial del governatore: pratico

In questo pratico, ti mostrerò come creare una distribuzione e un servizio. Utilizzo un'istanza Amazon EC2 per utilizzare Kubernetes. Bene, Amazon ha escogitato Amazon Elastic Container Service per Governatori (Amazon EKS) , che consente loro di creare cluster Kubernetes nel cloud in modo molto rapido e semplice. Se vuoi saperne di più, puoi fare riferimento al blog

Passo 1: Primo crea una cartella all'interno del quale creerai la tua distribuzione e il tuo servizio. Successivamente, usa un editor e aprire un file di distribuzione .

mkdir passa su cd passa su vi Deploy.yaml

Passo 2: Una volta aperto il file di distribuzione, menziona tutte le specifiche dell'applicazione che desideri distribuire. Qui sto cercando di distribuire un file httpd applicazione.

apiVersion: apps / v1 #Definisce il tipo di versione API: il parametro Deployment #Kinds definisce di che tipo di file si tratta, qui è Metadati di distribuzione: name: dep1 # Memorizza il nome della specifica di distribuzione: # Sotto Specifiche, menzioni tutto le specifiche per le repliche di distribuzione: 3 # Il numero di repliche sarebbe 3 selettore: matchLabels: app: httpd # Il nome dell'etichetta che verrebbe cercata è httpd template: metadati: labels: app: httpd #Il nome del modello sarebbe httpd spec: # Under Specifiche, si menzionano tutte le specifiche per i contenitori contenitori: - nome: httpd # Il nome dei contenitori sarebbe httpd image: httpd: latest # L'immagine che deve essere scaricata è httpd: latest port: - containerPort: 80 # L'applicazione sarebbe esposto sulla porta 80

Passaggio 3: Dopo aver scritto il file di distribuzione, applica la distribuzione utilizzando il seguente comando.

kubectl apply -f Deploy.yaml

Qui -f è un nome di flag utilizzato pertlui filenome.

Passaggio 4: Ora, una volta applicata la distribuzione, ottieni l'elenco dei pod in esecuzione.

kubectl ottiene pod -o larghi

Qui, -o wide viene utilizzato per sapere su quale nodo è in esecuzione la distribuzione.

Passaggio 5: Dopo aver creato una distribuzione, ora devi creare un servizio. Per questo usa di nuovo un editor e apri uno spazio vuoto servizio. yaml file .

vi service.yaml

Passaggio 6: Dopo aver aperto un file di servizio, menziona tutte le specifiche per il servizio.

apiVersion: v1 #Definisce il tipo di versione API: il parametro Service #Kinds definisce di che tipo di file si tratta, qui è Metadati del servizio: nome: netsvc # Memorizza il nome della specifica del servizio: # Sotto Specifiche, menzionate tutte le specifiche per il tipo di servizio: selettore NodePort: app: porte httpd: -protocol: porta TCP: 80 targetPort: 8084 #Target Il numero della porta è 8084

Passaggio 7: Dopo aver scritto il file di servizio, applica il file di servizio utilizzando il seguente comando.

java interrompe il metodo
kubectl applica -f service.yaml

Passaggio 8: Ora, una volta applicato il servizio per verificare se il servizio è in esecuzione o meno, utilizzare il seguente comando.

kubectl ottieni svc

Passaggio 9: Ora, per vedere le specifiche del servizio e controllare quale endpoint èassociato a, utilizzare il seguente comando.

kubectl descrive svc

Passaggio 10: Ora poiché stiamo usando l'istanza ec2 di amazon, per recuperare la pagina web e controllare l'output, usa il seguente comando.

curl indirizzo ip

Se hai trovato pertinente questo blog del tutorial di Kubernetes, controlla il da Edureka, una società di formazione online affidabile con una rete di oltre 250.000 studenti soddisfatti sparsi in tutto il mondo.

Hai domande per noi? Si prega di menzionarlo nella sezione commenti di ' Tutorial su Kubernetes 'E ti ricontatterò.