KlusterKit: un insieme di strumenti open source per semplificare i deployment di Kubernetes e lavorare in ambienti locali fisicamente isolati

Oggi siamo lieti di annunciare che Platform9 apre il codice sorgente di Klusterkit, un set di tre strumenti, con licenza Apache v2.0 su GitHub.
I nostri clienti distribuiscono software in data center privati, spesso non connessi a Internet (per motivi di sicurezza o per altre ragioni). Queste grandi aziende desiderano sfruttare i vantaggi di Kubernetes e modernizzare le proprie applicazioni, distribuendole in diversi data center che spesso non hanno connessione con il mondo esterno. Qui entra in gioco Klusterkit, che semplifica la fornitura e la gestione dei cluster K8s in ambienti fisicamente isolati.
Klusterkit comprende tre strumenti indipendenti che possono essere utilizzati insieme o separatamente per gestire il ciclo di vita di un cluster Kubernetes in produzione:
- , CLI per gestire in modo semplificato il cluster etcd.
- , CLI per l'amministrazione dei nodi, che integra kubeadm e implementa le dipendenze necessarie a kubeadm.
- , uno strumento di gestione del ciclo di vita del cluster che adotta il Cluster API della comunità Kubernetes e utilizza nodeadm ed etcdadm per fornire e mantenere senza problemi cluster Kubernetes altamente disponibili in ambienti locali e fisicamente isolati.
Insieme, questi tre strumenti svolgono le seguenti funzioni:
- Fornitura e gestione semplici di un cluster etcd altamente disponibile e del pannello di gestione Kubernetes in ambienti locali fisicamente isolati tramite Cluster API.
- Ripristino del pannello di gestione del cluster dopo un guasto utilizzando un backup di etcd.
- Imballaggio di tutti gli artefatti necessari per la fornitura di Kubernetes in ambienti fisicamente isolati.
Funzionalità di Klusterkit
- Supporto per più master (cluster K8s HA).
- Fornitura e gestione di cluster etcd sicuri.
- Funzionamento in ambienti fisicamente isolati.
- Supporto per aggiornamenti e rollback sequentiali.
- Flannel (vxlan) come CNI per il backend; supporto per altri CNI in programma.
- Riserva e ripristino di cluster etcd dopo la perdita di quorum.
- Protezione del pannello di gestione da esaurimento di memoria e CPU.
Architettura della soluzione Klusterkit
Per garantire l'affidabilità e la semplicità, Klusterkit utilizza un unico file cctl-state.yaml per memorizzare i metadati del cluster Kubernetes. Tramite l'interfaccia a riga di comando cctl è possibile gestire il ciclo di vita del cluster Kubernetes su qualsiasi macchina in cui si trovi questo file di stato. Può essere un laptop dell'operatore o qualsiasi altro computer che accede al cluster Kubernetes.
Cctl implementa e richiama dall'upstream l'interfaccia cluster-api come libreria per operazioni CRUD sui cluster. Utilizza , un fornitore cluster-api open source su "bare metal" di Platform9, che a sua volta richiama etcdadm e nodeadm per eseguire operazioni sul cluster.
Come utilizzare Klusterkit e i suoi componenti:
1 – Qualsiasi dei tre strumenti può essere facilmente scaricato con il comando go get:
go get -u github.com/platform9/cctl
go get -u github.com/platform9/nodeadm
go get -u github.com/kubernetes-sigs/etcdadm2 – Successivamente, questi file eseguibili possono essere impacchettati e copiati sulle macchine target dove deve funzionare un cluster Kubernetes ad alta disponibilità. Posizionare i file nodeadm e etcdadm nelle directory delle versioni:
cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm//
cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm//3 – Se è necessario orchestrare un cluster Kubernetes localmente, in un ambiente fisicamente isolato, è possibile scaricare facilmente le dipendenze necessarie in anticipo su un computer con accesso a Internet utilizzando il comando di download nodeadm e etcdadm. Successivamente, gli elementi scaricati (cioè kubelet e il file unit kubelet per systemd, i file eseguibili CNI, il file kubeadm, tutte le immagini dei container, inclusi Kubernetes, l'immagine keepalived e il file systemd, l'immagine del container etcd e i relativi file di configurazione) possono essere facilmente copiati su host fisicamente isolati insieme a cctl, nodeadm e etcdadm. (Per dettagli, vedi in ).
4 – Quando tutto è a posto, il primo cluster Kubernetes può essere creato con un paio di comandi:
– Prima di tutto, crea le credenziali per il cluster.
$GOPATH/bin/cctl create credential --user root --private-key ~/.ssh/id_rsa– Poi crea l'oggetto cluster. –help richiama l'elenco dei parametri supportati.
$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24– Infine, crea la prima macchina nel cluster.
$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role masterPer ulteriori documentazioni, leggi su .
Fonte: habr.com
