Sistemare un problema LVM in Kubernetes su AWS
Abbiamo migrato la nostra infrastruttura ereditata in Kubernetes. La capacità di dispiegamento in pochi secondi fa un'enorme differenza in termini di numero di magra esperimenti che possiamo intraprendere. Kubernetes ci offre un modo per gestire la semplicità del container Docker su una scala che può gestire 1 miliardo di eventi widget con la corrispondente elaborazione dei dati che deve avvenire.
Anche se Kubernetes è fantastico, è ancora relativamente nuovo e ci sono molti posti dove contribuire. Tutto è iniziato quando il nostro nodo principale è sceso su AWS - non è risalito. Avrebbe dovuto. I nodi su AWS sono impostati per tornare su senza problemi. Questo ha portato al mio primo Impegnarsi. Dopo aver scavato nei registri del sistema ho visto questo evidente errore:
The disk drive for /mnt/ephemeral is not ready yet or not present.
keys:Continue to wait, or Press S to skip mounting or M for manual recovery
Scavando nella fonte, ho scoperto che su AWS, gli script di Kubernetes creano un volume LVM per memorizzare i dati.
lvcreate -l 100%FREE --thinpool pool-ephemeral vg-ephemeral
L'esecuzione del codice sembrava funzionare. Inoltre, il master ha lavorato all'avvio. Cosa stava succedendo? Mi sono collegato ad un master esistente e ho cercato il volume logico. Non c'era! La directory era lì, ma il volume non c'era.
Tornando ai log di sistema (dal primo avvio), vediamo questo errore su 'lvcreate':
Insufficient free space: 3905 extents needed, but only 3897 available
A quanto pare, questo è un problema su lvcreate in generale: non si può usare 100% GRATIS con una piscina sottile! Fallirà. Potete vedere maggiori dettagli nella sezione biglietto.
Beh, non c'era bisogno di usare una piscina sottile per questo. Non stiamo sovraprovisionando il disco in Kubernetes -> la mia prima richiesta di pull! Ho firmato il contratto di licenza del contribuente e il resto è storia.
Ora abbiamo 4 cluster di produzione Kubernetes con decine di baccelli (e nodi master riavviabili) e non vediamo l'ora che il lavoro di stabilità e di alta disponibilità arrivi in "Ubernetes". Se siete interessati a risolvere problemi come questo, ci piacerebbe avervi unisciti al nostro team!