Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Le migliori pratiche di Kubernetes. Creazione di piccoli contenitori

Man mano che inizi a creare sempre più servizi Kubernetes, compiti che inizialmente sembrano semplici iniziano a complicarsi. Ad esempio, i team di sviluppo non possono creare servizi o deployment con lo stesso nome. Se hai migliaia di pod, elencarli diventa estremamente lungo, senza contare la necessità di una gestione adeguata. E questo è solo la punta dell'iceberg.

Esaminiamo come gli spazi dei nomi rendano più semplice la gestione delle risorse Kubernetes. Cos'è esattamente uno spazio dei nomi? Uno spazio dei nomi può essere visto come un cluster virtuale all'interno del tuo cluster Kubernetes. Puoi avere più spazi dei nomi isolati all'interno dello stesso cluster Kubernetes. Questi possono realmente aiutare te e i tuoi team a organizzare, garantire la sicurezza e migliorare le prestazioni del sistema.

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Nella maggior parte delle distribuzioni Kubernetes, il cluster "esce dalla scatola" con uno spazio dei nomi chiamato "default". In realtà, ci sono tre spazi dei nomi con cui Kubernetes interagisce: default, kube-system e kube-public. Al momento, kube-public non è utilizzato molto frequentemente.

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Evitare di toccare lo spazio dei nomi kube è una buona idea, specialmente in un sistema gestito come Google Kubernetes Engine. Utilizza lo spazio dei nomi "default" come il luogo in cui vengono creati i tuoi servizi e applicazioni. Non c'è nulla di particolare a riguardo, se non che Kubernetes è configurato per utilizzarlo "out of the box", e non puoi eliminarlo. È perfetto per iniziare e per sistemi a bassa carico, ma non consiglierei di usare lo spazio dei nomi default in grandi sistemi di produzione. In quest'ultimo caso, un team di sviluppo potrebbe facilmente sovrascrivere il codice di un altro team, senza nemmeno rendersene conto.

Perciò, è opportuno creare più spazi dei nomi e usarli per segmentare i tuoi servizi in sezioni gestite. Puoi creare uno spazio dei nomi con un solo comando. Se desideri creare uno spazio dei nomi chiamato test, usa il comando $ kubectl create namespace test o semplicemente crea un file YAML e usalo come qualsiasi altra risorsa Kubernetes.

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Puoi visualizzare tutti gli spazi dei nomi con il comando $ kubectl get namespace.

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Dopo aver eseguito questo comando, vedrai i tre spazi dei nomi predefiniti e un nuovo spazio dei nomi chiamato "test". Esaminiamo un semplice file YAML destinato alla creazione di un pod. Puoi notare che non c'è alcun riferimento allo spazio dei nomi.

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Se applichi kubectl per avviare questo file, creerà il modulo mypod nello spazio dei nomi attivo corrente. Questo sarà lo spazio dei nomi default, a meno che tu non lo cambi. Ci sono 2 modi per comunicare a Kubernetes in quale spazio dei nomi desideri creare la tua risorsa. Il primo modo è utilizzare il flag dello spazio dei nomi durante la creazione della risorsa.

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Il secondo modo è specificare lo spazio dei nomi nella dichiarazione YAML.

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Se specifichi lo spazio dei nomi nel YAML, la risorsa sarà sempre creata in quello spazio. Se provi a utilizzare un altro spazio dei nomi specificando un flag dello spazio dei nomi, la command line restituirà un errore. Ora, se provi a cercare il tuo pod, non potrai trovarlo.

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Questo accade perché tutti i comandi vengono eseguiti al di fuori dello spazio dei nomi attivo corrente. Per trovare il tuo pod, dovrai utilizzare il flag dello spazio dei nomi, ma questo può diventare rapidamente noioso, specialmente se lavori in un gruppo che utilizza il proprio spazio dei nomi e non desidera usare quel flag per ogni singolo comando. Vediamo come questo può essere risolto.

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Di default, il tuo spazio dei nomi attivo è chiamato default. Se non specifichi uno spazio dei nomi nel YAML della risorsa, tutti i comandi Kubernetes utilizzeranno questo spazio dei nomi attivo default. Sfortunatamente, tentare di gestire lo spazio dei nomi attivo con kubectl può risultare problematico. Tuttavia, esiste uno strumento molto utile chiamato Kubens che semplifica notevolmente questo processo. Quando esegui il comando kubens, vedrai tutti gli spazi dei nomi, con l'attuale spazio dei nomi attivo evidenziato.

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Per cambiare lo spazio dei nomi attivo in test, esegui semplicemente il comando $ kubens test. Se poi reinserisci il comando $ kubens, puoi vedere che ora è stato selezionato un nuovo spazio dei nomi attivo: test.

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Questo significa che non hai bisogno del flag dello spazio dei nomi per vedere i pod nello spazio dei nomi test.

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

In questo modo, gli spazi dei nomi sono nascosti l'uno dall'altro, ma non isolati. Un servizio in uno spazio dei nomi può comunicare facilmente con un servizio in un altro spazio dei nomi, il che spesso si rivela molto utile. La possibilità di comunicazione tra spazi dei nomi diversi significa che il servizio dei tuoi sviluppatori può interagire con il servizio di un'altra squadra di sviluppo in un altro spazio dei nomi.

Di solito, quando la tua applicazione desidera accedere a un servizio Kubernetes, utilizzi il servizio di scoperta DNS integrato e semplicemente indichi alla tua applicazione il nome del servizio. Tuttavia, in questo modo puoi creare un servizio con lo stesso nome in più spazi dei nomi, il che non è consentito.

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Fortunatamente, questo è facile da aggirare utilizzando la forma espansa dell'indirizzo DNS. I servizi in Kubernetes espongono i loro endpoint utilizzando un modello DNS comune. Questo appare pressappoco così:

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

In generale, ti basta il nome del servizio e il DNS determina automaticamente l'indirizzo completo.

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Tuttavia, se hai bisogno di accedere a un servizio in un altro spazio dei nomi, usa semplicemente il nome del servizio seguito dal nome dello spazio dei nomi:

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Ad esempio, se desideri connetterti al database del servizio nello spazio dei nomi di test, puoi utilizzare l'indirizzo database.test.

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Se invece desideri connetterti al database del servizio nello spazio dei nomi di produzione, utilizzi database.prod.

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Se desideri davvero isolare e limitare l'accesso a uno spazio dei nomi, Kubernetes consente di farlo utilizzando le politiche di rete di Kubernetes Network Policies. Ne parlerò nella prossima serie.

Spesso mi viene chiesto quanti spazi dei nomi sia necessario creare e a quali scopi. Cos'è esattamente un frammento di dati gestito?

Se crei troppi spazi dei nomi, questi ti ostacoleranno. Se invece ce ne sono troppo pochi, perderai tutti i vantaggi di una tale soluzione. Penso che ci siano quattro fasi principali che ogni azienda attraversa nel processo di creazione della propria struttura organizzativa. A seconda della fase di sviluppo in cui si trova il tuo progetto o la tua azienda, puoi adottare una strategia adeguata per la creazione degli spazi dei nomi.

Immagina di far parte di un piccolo team che sta sviluppando 5-10 microservizi e puoi facilmente riunire tutti gli sviluppatori in una stanza. In questa situazione, ha senso eseguire tutti i servizi di produzione nello spazio dei nomi predefinito. Certamente, per avere maggiore flessibilità, puoi utilizzare 2 spazi dei nomi, uno per la produzione e l'altro per lo sviluppo. È molto probabile che tu stia testando il tuo sviluppo sul computer locale utilizzando qualcosa come Minikube.

Supponiamo che le condizioni siano cambiate e ora hai un team in rapida crescita che sta lavorando contemporaneamente su più di 10 microservizi. Arriva un momento in cui è necessario utilizzare più cluster o spazi dei nomi, separatamente per produzione e sviluppo. Puoi suddividere il team in sottogruppi in modo che ciascuno di essi abbia i propri microservizi e che ciascuno di questi team possa scegliere il proprio spazio dei nomi per semplificare la gestione dello sviluppo e del rilascio del software.

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Man mano che ogni membro del team acquisisce familiarità con il funzionamento del sistema globale, coordinare ciascuna modifica con gli altri sviluppatori diventa sempre più difficile. Tentare di far girare l'intero stack sul tuo computer locale diventa sempre più complicato.

Nelle grandi aziende, gli sviluppatori spesso non sanno chi sta lavorando a cosa in particolare. I team comunicano attraverso contratti di servizio o utilizzano tecnologie come Service mesh, che aggiungono un livello di astrazione sulla rete, come il tool di configurazione Istio. Cercare di eseguire l'intero stack localmente è semplicemente impossibile. Ti consiglio vivamente di utilizzare in Kubernetes una piattaforma di distribuzione continua (CD) come Spinnaker. Pertanto, arriva un momento in cui ogni team ha decisamente bisogno del proprio spazio dei nomi. Ogni team può anche scegliere più spazi dei nomi per l'ambiente di sviluppo e l'ambiente di produzione.

Finalmente, ci sono grandi aziende imprenditoriali in cui un gruppo di sviluppatori non sa nemmeno dell'esistenza di altri gruppi. Queste aziende possono addirittura assumere sviluppatori esterni che interagiscono tramite API ben documentate. In ogni gruppo c'è un certo numero di team e di microservizi. In questo caso, è necessario utilizzare tutti gli strumenti di cui ho parlato in precedenza.

Le migliori pratiche di Kubernetes. Organizzazione di Kubernetes con gli spazi dei nomi

Gli programmatori non devono distribuire i servizi manualmente e non devono avere accesso a spazi dei nomi che non li riguardano. A questo punto, è utile avere diversi cluster per ridurre il "raggio d'esplosione" di applicazioni mal configurate, semplificando i processi di fatturazione e gestione delle risorse.

Pertanto, un uso corretto degli spazi dei nomi da parte della vostra organizzazione rende Kubernetes più gestibile, controllabile, sicuro e flessibile.

Le migliori pratiche di Kubernetes. Verifica della vitalità di Kubernetes tramite test di Readiness e Liveness

Riproduci video

Un po' di pubblicità 🙂

Grazie per essere con noi. Ti piacciono i nostri articoli? Vuoi vedere più contenuti interessanti? Supportaci effettuando un ordine o raccomandandoci ai tuoi conoscenti, VPS cloud per sviluppatori a partire da $4,99, un'alternativa unica ai server entry-level, che abbiamo creato per te: Tutta la verità su VPS (KVM) E5-2697 v3 (6 Core) 10GB DDR4 480GB SSD 1Gbps a partire da $19. Come dividere il server correttamente? (disponibili opzioni con RAID1 e RAID10, fino a 24 core e fino a 40GB DDR4).

Dell R730xd a metà prezzo nel data center Equinix Tier IV ad Amsterdam? Solo da noi 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TB a partire da $199 nei Paesi Bassi! Dell R420 — 2x E5-2430 2.2GHz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB — a partire da $99! Scopri di più su Come costruire un'infrastruttura di classe enterprise con server Dell R730xd E5-2650 v4 dal costo di 9000 euro a prezzi stracciati?

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster