Ricerca nel sito web

Introduzione a Kubernetes | Cos'è Kubernetes


Impara i concetti di base di Kubernetes

introduzione

Benvenuti al corso introduttivo a Kubernetes. Kubernetes, noto anche come k8s o kube, è lo strumento di orchestrazione dei contenitori più popolare nel settore ed è un prodotto realizzato da Google. Questo tutorial su Kubernetes è costituito da una serie di articoli su Kubernetes. Nella prima parte discuteremo cos'è Kubernetes e i concetti di base di Kubernetes.

Questo corso è per principianti assoluti, non è necessario avere alcuna conoscenza prerequisita per apprendere questa tecnologia. Ti guideremo attraverso tutte le nozioni di base di Kubernetes per farti comprendere i concetti.

Prima di iniziare con Kubernetes, acquisiamo una conoscenza di base di Docker e dei contenitori.

Cos'è Docker?

Docker ti consente di raggruppare ed eseguire un'applicazione in un contenitore, che è un ambiente vagamente isolato. A causa dell'isolamento e della sicurezza, puoi gestire più contenitori su un singolo host.

Per eseguire più contenitori sullo stesso sistema operativo, Docker sfrutta l'isolamento delle risorse nel kernel del sistema operativo. Di solito le persone confrontano Docker con le macchine virtuali (VM).

Le macchine virtuali, d'altro canto, racchiudono un intero sistema operativo con codice eseguibile sopra uno strato di astrazione di risorse hardware fisiche.

Cos'è un contenitore?

Un'immagine contenitore è un pacchetto software pronto per l'esecuzione che include tutto ciò di cui un programma ha bisogno per essere eseguito, incluso il codice e tutti i tempi di esecuzione necessari, le librerie di applicazioni e di sistema e i valori predefiniti per qualsiasi importante impostazioni.

Le applicazioni vengono disaccoppiate dall'architettura host sottostante utilizzando i contenitori. Come mostrato nel diagramma seguente, possiamo avere più contenitori sopra il motore Docker utilizzando la macchina sottostante. Ciò facilita la distribuzione in una varietà di sistemi operativi o scenari cloud.

Figura 1

I contenitori aiutano le aziende a modernizzarsi semplificando la scalabilità e la distribuzione delle applicazioni. Tuttavia, costruendo un ambiente infrastrutturale completamente nuovo, i container hanno presentato ulteriori problemi e complessità.

Migliaia di istanze di container vengono implementate quotidianamente da organizzazioni software di grandi e piccole dimensioni, ponendo loro una sfida di scalabilità da gestire. Quindi, come riescono a farcela?

Cos'è l'orchestrazione dei contenitori?

  • L'orchestrazione dei contenitori riguarda la gestione dei cicli di vita dei contenitori, in particolare in ambienti ampi e dinamici. L'orchestrazione dei contenitori viene utilizzata dai team software per controllare e automatizzare una serie di attività sulla gestione dei contenitori.
  • L'orchestrazione dei contenitori funziona in qualsiasi contesto in cui vengono utilizzati i contenitori. Può aiutarti a distribuire lo stesso programma in diversi ambienti senza doverlo riscrivere.

Strumenti di orchestrazione dei contenitori

Le tecnologie di orchestrazione dei contenitori offrono un framework per il controllo dell'architettura dei contenitori e dei microservizi. La gestione del ciclo di vita dei container può essere realizzata con una varietà di soluzioni di orchestrazione dei container. Kubernetes, Docker Swarm e Apache Mesos sono tre soluzioni/strumenti comuni.

Docker Swarm è lo strumento nativo di Docker, molto facile da impostare e configurare. Kubernetes richiede una serie di interventi manuali per configurare i suoi componenti come etcd, flannel e docker engine.

Kubernetes domina il settore grazie ai suoi vari vantaggi e caratteristiche rispetto ad altri strumenti.

Cos'è Kubernetes?

Kubernetes è una tecnologia di orchestrazione dei container open source originariamente sviluppata da Google per automatizzare la distribuzione, il ridimensionamento e l'amministrazione delle applicazioni containerizzate.

Kubernetes semplifica la distribuzione e la gestione delle applicazioni con architettura a microservizi. Ciò avviene formando un livello di astrazione sopra un cluster, consentendo ai team di sviluppo di distribuire le applicazioni senza problemi mentre Kubernetes gestisce principalmente le seguenti attività:

  • Controllo e gestione dell'utilizzo delle risorse da parte di un'applicazione.
  • Bilanciamento automatico del carico delle richieste tra molte istanze di un'applicazione.
  • Monitoraggio dell'utilizzo e dei limiti delle risorse per impedire automaticamente alle app di consumare quantità eccessive di risorse e riprenderle.
  • Se le risorse di un host sono esaurite o l'host muore, il trasferimento di un'istanza dell'applicazione da un host a un altro è un'opzione praticabile.
  • Quando un nuovo host viene aggiunto al cluster, le risorse aggiuntive vengono automaticamente rese accessibili.

Perché il mercato consiglia Kubernetes

Kubernetes, la prima iniziativa Cloud Native Cloud Foundation (CNCF) e una fondazione di Google, è il progetto software open source in più rapida crescita dopo Linux.

Perché oggi così tante aziende si affidano a Kubernetes per soddisfare le proprie esigenze di orchestrazione dei container? Ci sono numerose ragioni per questo:

  • Portabilità e flessibilità: Kubernetes è estremamente adattabile, poiché può essere eseguito su un'ampia gamma di impostazioni di infrastruttura e ambiente. La maggior parte degli altri orchestratori non dispone di questa flessibilità; sono bloccati in runtime o infrastrutture specifici.
  • Open Source : Il CNCF è responsabile di Kubernetes, che è un progetto completamente open source, guidato dalla comunità. Ha una serie di importanti sponsor aziendali, ma nessuna singola azienda "possiede" la piattaforma o ha il controllo esclusivo su come si evolve.
  • Compatibilità multi-cloud: Kubernetes può ospitare carichi di lavoro su un singolo cloud nonché carichi di lavoro distribuiti su più cloud. Kubernetes può anche scalare facilmente il proprio ambiente da un cloud a quello successivo. Mentre altri orchestratori possono supportare architetture multi-cloud, Kubernetes probabilmente va ben oltre in termini di adattabilità multi-cloud.
  • Marker Leader: quasi tutti utilizzano Kubernetes. Secondo un sondaggio REDHAT, Kubernetes è ampiamente utilizzato dai clienti (88%), soprattutto in situazioni di produzione (74%).

Architettura Kubernetes

Kubernetes è un esempio di sistema distribuito ben progettato. Considera tutte le macchine in un cluster come parte di un singolo pool di risorse.

Kubernetes, come qualsiasi altro sistema distribuito sofisticato, ha due livelli: nodi principali e nodi di lavoro.

Il nodo principale o il nodo master è costituito dal piano di controllo e dalle applicazioni dei nodi di lavoro. Un cluster Kubernetes è formato da una raccolta di nodi head e nodi di lavoro.

figura 2

Kubernetes introduce molta terminologia per descrivere la struttura della tua applicazione. Esamineremo ogni trimestre.

Componenti Kubernetes

Il nodo Master/Head e i nodi di lavoro sono costituiti da componenti propri che garantiscono il corretto funzionamento dell'orchestrazione.

Piano di controllo

Il piano di controllo è il luogo in cui gli amministratori e gli utenti si rivolgono per gestire i diversi nodi. Riceve comandi tramite chiamate HTTP o collegandosi al sistema ed eseguendo script da riga di comando. Regola il modo in cui Kubernetes interagisce con le tue app, come suggerisce il nome.

server API

Il server API fornisce al cluster Kubernetes un'interfaccia REST. Tutte le attività su pod, servizi e altri oggetti vengono eseguite a livello di codice comunicando con gli endpoint forniti.

Pianificatore

Lo scheduler è responsabile dell'assegnazione dei compiti ai vari nodi. Monitora la capacità delle risorse e garantisce che le prestazioni di un nodo di lavoro rimangano entro limiti accettabili.

Responsabile del controllore

Il controller manager Kubernetes è un servizio che gestisce i principali loop di controllo di Kubernetes. Si assume la responsabilità di assicurarsi che lo stato condiviso del cluster funzioni correttamente.

Ecc

Kubernetes utilizza etcd, un archivio chiave-valore distribuito, per condividere informazioni sullo stato generale di un cluster.

Nodo

Il nodo è una macchina, fisica o virtuale, su cui sono in esecuzione i POD. Il piano di controllo gestisce ciascun nodo in un cluster e il nodo è costituito dai servizi richiesti per eseguire i POD.

Baccelli

Un pod Kubernetes è una raccolta di contenitori che Kubernetes gestisce su scala più piccola. I pod hanno un unico indirizzo IP assegnato a tutti i contenitori nel pod. La memoria e le risorse di archiviazione dei contenitori in un pod sono condivise. Un pod può avere un singolo contenitore anche quando l'applicazione ha un singolo processo.

Kubelet

Kubelet è un componente del nodo di lavoro. Il suo compito è tenere traccia dei pod e dei loro contenitori. Riguarda le specifiche del pod scritte in YAML o JSON. Kubelet esamina le specifiche dei pod e determina se i pod sono integri o meno.

Kube-Proxy

Kube-proxy è un proxy di rete e un bilanciatore del carico che funge da connessione tra ciascun nodo e il server API. Funziona su ciascun nodo del tuo cluster e ti consente di connetterti ai pod sia dall'interno che dall'esterno di esso.

Kubectl

Kubectl è lo strumento CLI per Kubernetes. Viene utilizzato per distribuire applicazioni, monitorare e controllare le risorse del cluster e visualizzare i log.

Dal punto di vista dell'utente, kubectl è il tuo pannello di controllo per Kubernetes. Ti consente di eseguire tutte le operazioni Kubernetes. Dal punto di vista tecnico Kubectl è un client per l'API Kubernetes.

Conclusione

In questo articolo abbiamo esaminato i concetti di base della Container Orchestration e dell'architettura di Kubernetes. Nei nostri prossimi articoli impareremo importanti funzionalità chiave di Kubernetes e l'installazione di Kubernetes a nodo singolo.

Leggi dopo:

  • Funzionalità Kubernetes spiegate in dettaglio
  • Come installare Kubernetes utilizzando Minikube in CentOS Linux
  • Installa il cluster Kubernetes utilizzando Kubeadm in RHEL, CentOS, AlmaLinux, Rocky Linux
  • Come creare e gestire i pod Kubernetes in Linux

Risorse:

  • https://kubernetes.io/docs/home/
  • https://www.redhat.com/en/topics/containers/what-is-kubernetes

Articoli correlati