Configurare un cluster Kubernetes da zero può essere difficile, soprattutto se non usi i servizi Kubernetes gestiti e devi garantire l'alta disponibilità. Kops (Kubernetes Operations) è uno strumento open source che aiuta a configurare, aggiornare e gestire i cluster Kubernetes "non gestiti" sui provider di cloud pubblici. In questo post imparerai come distribuire un cluster HA Kubernetes su AWS.

Impostazione Kops up
Il primo passo qui sarà ottenere l'interfaccia della riga di comando di Kops. Supponendo che tu stia utilizzando una distribuzione Linux, puoi utilizzare i comandi seguenti. Altrimenti, controlla questo this link.
Inoltre, dovrai interagire con l'API AWS, quindi avrai bisogno della CLI AWS. Il set di comandi di seguito mostra come installarlo su distribuzioni Linux. Per qualsiasi altro sistema operativo, seguire queste istruzioni.
Kops avrà bisogno di un utente IAM AWS programmatico in modo che possa distribuire l'infrastruttura necessaria per il cluster Kubernetes. A questo utente deve essere concesso pieno accesso ai servizi IAM, EC2, S3, VPC e Route53. Per fare ciò, è possibile collegare direttamente le politiche gestite AmazonEC2FullAccess, AmazonRoute53FullAccess AmazonS3FullAccess, IAMFullAccess e AmazonVPCFullAccess.

Quando si crea l'utente, selezionare l'opzione di accesso programmatico, poiché in questo modo AWS genererà una coppia di chiavi di accesso e chiavi segrete affinché la CLI acceda all'API AWS. Conservare bene la chiave segreta, poiché è l'unica volta che verrà visualizzata. Una volta che hai entrambe le chiavi, impostale come chiavi predefinite per la CLI emettendo il seguente comando. Con questo comando, puoi anche impostare la regione AWS predefinita.

Per memorizzare lo stato dei cluster, Kops avrà bisogno di un bucket S3. Puoi utilizzare le tue nuove credenziali per creare il bucket utilizzando l'interfaccia della riga di comando di AWS. Inoltre, è consigliabile abilitare il versioning bucket, poiché può aiutarti a ripristinare lo stato del cluster in caso di errore.
Creare il cluster
Lo script seguente aiuta nella creazione del cluster, al fine di configurare meglio i parametri del cluster e alcune opzioni aggiuntive. È possibile selezionare la versione di Kubernetes, il numero di nodi master e di lavoro, il tipo di istanza e le zone di disponibilità in cui verranno distribuite le istanze. Qui è possibile impostare anche le opzioni di rete e l'intervallo CIDR di rete. Puoi controllare l'elenco delle opzioni di rete supportate qui. Inoltre, puoi scegliere se generare un output terraform o cloudformation.
Impostare i parametri in base alle proprie esigenze ed eseguire lo script. Per questo esempio, useremo un nome di cluster che termina con .k8s.local, in quanto è la configurazione più semplice, senza richiedere un server DNS esterno per propagare gli IP delle API di Kubernetes. Se è necessario utilizzare un servizio DNS esterno, consultare questa documentazione. Eseguendo lo script, Kops genererà le specifiche del cluster, ma non distribuirà ancora il cluster.
È possibile verificare le specifiche del cluster eseguendo il comando seguente. Ricorda di impostare la bandiera dello stato con il nome del tuo bucket di stato. Può anche essere usato per modificare i cluster già creati.
Il comando edit aprirà un editor vi, in cui è possibile modificare tutti i parametri in base alle proprie esigenze. Se si passa attraverso la specifica yaml, è possibile vedere che la specifica del cluster corrisponde a tutti i parametri passati al comando create e vengono aggiunti ulteriori elementi necessari per supportare l'infrastruttura del cluster, come le sottoreti.
Emettendo il seguente comando, la specifica del cluster genererà un cluster effettivo nell'account AWS. Sii paziente come ci vuole un po '. Se il comando viene eseguito senza il flag –yes, mostrerà tutte le risorse che stanno per essere create, ma le risorse non verranno create.

Una volta terminato il processo di creazione, puoi controllare la dashboard di AWS EC2 per vedere le tue nuove istanze, 3 master e 3 lavoratori in questo caso.

Un buon modo per verificare se tutto è attivo e in esecuzione sta eseguendo i seguenti comandi. Il primo stampa lo stato di tutti gli elementi del piano di controllo, mentre il secondo elenca i nodi e i loro stati.

Inoltre, Kops offre un controllo cluster integrato che è molto utile.

Pulizia
Se si desidera eliminare il cluster e tutte le risorse associate che sono state create, è sufficiente emettere il seguente comando. Se lo usi senza la bandiera –yes, verrà visualizzato un elenco dettagliato di tutti gli elementi che verranno distrutti, ma non li distruggerà fino a quando non aggiungi la bandiera.
Maggiori informazioni su Kops
Kops è uno strumento ampiamente utilizzato per la gestione dei cluster Kubernetes negli ambienti di produzione e offre molta flessibilità e funzionalità avanzate che aiutano a personalizzare ciascun cluster in base ai requisiti che deve soddisfare. Aiuta a creare, aggiornare e aggiornare i cluster in modo semplice. Tuttavia, tieni presente che Kops non supporta tutte le funzionalità offerte da Kubernetes durante la creazione di un cluster "a mano", ad esempio, non tutti i plug-in di rete sono attualmente supportati da Kops, o almeno non in modo stabile.
Se vuoi sapere di più su Kops, leggi questi documenti.