OpenShift - Architettura
OpenShift è un sistema a più livelli in cui ogni livello è strettamente legato all'altro livello utilizzando Kubernetes e il cluster Docker. L'architettura di OpenShift è progettata in modo tale da poter supportare e gestire i contenitori Docker, che sono ospitati su tutti i livelli utilizzando Kubernetes. A differenza della versione precedente di OpenShift V2, la nuova versione di OpenShift V3 supporta l'infrastruttura containerizzata. In questo modello, Docker aiuta nella creazione di contenitori leggeri basati su Linux e Kubernetes supporta l'attività di orchestrazione e gestione dei contenitori su più host.
Componenti di OpenShift
Uno dei componenti chiave dell'architettura OpenShift è la gestione dell'infrastruttura containerizzata in Kubernetes. Kubernetes è responsabile della distribuzione e della gestione dell'infrastruttura. In qualsiasi cluster Kubernetes, possiamo avere più di un master e più nodi, il che garantisce che non vi siano punti di errore nella configurazione.
Componenti della macchina master Kubernetes
Etcd- Memorizza le informazioni di configurazione, che possono essere utilizzate da ciascuno dei nodi del cluster. È un archivio di valori chiave ad alta disponibilità che può essere distribuito tra più nodi. Dovrebbe essere accessibile solo dal server API Kubernetes in quanto potrebbe contenere informazioni sensibili. È un archivio di valori chiave distribuito accessibile a tutti.
API Server- Kubernetes è un server API che fornisce tutte le operazioni sul cluster utilizzando l'API. Il server API implementa un'interfaccia che significa che diversi strumenti e librerie possono comunicare prontamente con esso. Un kubeconfig è un pacchetto insieme agli strumenti lato server che possono essere utilizzati per la comunicazione. Espone l'API Kubernetes ”.
Controller Manager- Questo componente è responsabile della maggior parte dei raccoglitori che regolano lo stato del cluster ed eseguono un'attività. Può essere considerato come un daemon che viene eseguito in un ciclo senza interruzione ed è responsabile della raccolta e dell'invio di informazioni al server API. Funziona per ottenere lo stato condiviso del cluster e quindi apportare modifiche per portare lo stato corrente del server a uno stato desiderato. I controller chiave sono controller di replica, controller di endpoint, controller dello spazio dei nomi e controller dell'account di servizio. Il controller manager esegue diversi tipi di controller per gestire nodi, endpoint, ecc.
Scheduler- È un componente chiave di Kubernetes master. È un servizio in master che è responsabile della distribuzione del carico di lavoro. È responsabile del monitoraggio dell'utilizzo del carico di lavoro sui nodi del cluster e quindi del posizionamento del carico di lavoro su cui sono disponibili le risorse e dell'accettazione del carico di lavoro. In altre parole, questo è il meccanismo responsabile dell'allocazione dei pod ai nodi disponibili. Lo scheduler è responsabile dell'utilizzo del carico di lavoro e dell'allocazione di un pod a un nuovo nodo.
Componenti del nodo Kubernetes
Di seguito sono riportati i componenti chiave del server Node, necessari per comunicare con il master Kubernetes.
Docker - Il primo requisito di ogni nodo è Docker che aiuta a eseguire i contenitori di applicazioni incapsulati in un ambiente operativo relativamente isolato ma leggero.
Kubelet Service- Questo è un piccolo servizio in ogni nodo, che è responsabile della trasmissione delle informazioni al e dal servizio del piano di controllo. Interagisce con l'archivio etcd per leggere i dettagli di configurazione ei valori di Wright. Questo comunica con il componente master per ricevere comandi e lavorare. Il processo kubelet si assume quindi la responsabilità di mantenere lo stato di lavoro e il server del nodo. Gestisce le regole di rete, il port forwarding, ecc.
Kubernetes Proxy Service- Questo è un servizio proxy che viene eseguito su ogni nodo e aiuta a rendere i servizi disponibili per l'host esterno. Aiuta a inoltrare la richiesta per correggere i contenitori. Il servizio proxy Kubernetes è in grado di eseguire il bilanciamento del carico primitivo. Si assicura che l'ambiente di rete sia prevedibile e accessibile ma allo stesso tempo sia anche isolato. Gestisce pod su nodo, volumi, segreti, creazione di nuovi controlli di integrità dei contenitori, ecc.
Registro dei contenitori OpenShift integrato
Il registro dei contenitori OpenShift è un'unità di archiviazione incorporata di Red Hat, utilizzata per archiviare le immagini Docker. Con l'ultima versione integrata di OpenShift, ha messo a punto un'interfaccia utente per visualizzare le immagini nella memoria interna di OpenShift. Questi registri sono in grado di contenere immagini con tag specificati, che vengono successivamente utilizzati per creare contenitori al di fuori di esso.
Termini usati frequentemente
Image- Le immagini Kubernetes (Docker) sono i mattoni fondamentali dell'infrastruttura containerizzata. Al momento, Kubernetes supporta solo le immagini Docker. Ogni contenitore in un pod ha la sua immagine Docker in esecuzione al suo interno. Quando si configura un pod, la proprietà dell'immagine nel file di configurazione ha la stessa sintassi del comando Docker.
Project - Possono essere definiti come la versione rinominata del dominio che era presente nella versione precedente di OpenShift V2.
Container - Sono quelli che vengono creati dopo che l'immagine è stata distribuita su un nodo del cluster Kubernetes.
Node- Un nodo è una macchina funzionante nel cluster Kubernetes, noto anche come minion per master. Sono unità di lavoro che possono essere un'istanza fisica, VM o cloud.
Pod- Un pod è una raccolta di contenitori e il relativo spazio di archiviazione all'interno di un nodo di un cluster Kubernetes. È possibile creare un pod con più contenitori al suo interno. Ad esempio, mantenendo il contenitore del database e il contenitore del server web all'interno del pod.