KWOK, Kubernetes WithOut Kubelet, un toolkit per testare deployment Kubernetes su infrastrutture… Finte!

0

Presentato il primo di marzo sul blog ufficiale di Kubernetes, KWOK è un toolkit in grado di simulare migliaia di nodi Kubernetes senza che in realtà ne esista alcuno.

L’acronimo di questo tool sta per Kubernetes WithOut Kubelet ed il progetto è formato da due componenti essenziali:

  • kwok: la componente che simula i finti nodi, pod e le altre risorse di Kubernetes.
  • kwokctl: la command line interface che permette di gestire la creazione dei cluster su nodi simulati da kwok.

Ma partiamo dall’inizio. Quale è il ruolo di kubelet e perché è determinante in Kubernetes? kubelet è definito un node agent , ossia una componente responsabile della gestione della distribuzione dei pod ai nodi Kubernetes. Riceve i comandi dal server API e indica alla container runtime di sistema di avviare o arrestare i container secondo necessità.

Quindi sì, senza kubelet non potrebbe esistere Kubernetes, ma ovviamente questa componente ha un suo peso computazionale, ed è qui che entra in gioco KWOK.

Quello che fa KWOK è simulare l’esistenza di nodi e fare in modo che questi rispondano come se fossero reali, il tutto utilizzando un insieme di risorse estremamente minimale, che quindi lo rendono utilizzabile in qualsiasi contesto di test.

Quello che fa KWOK è riassunto in questa immagine che ne illustra il funzionamento:

Per i curiosi, la definizione di un nodo fake generato da KWOK è questa:

apiVersion: v1
kind: Node
metadata:
  annotations:
    kwok.x-k8s.io/node: fake
    node.alpha.kubernetes.io/ttl: "0"
  labels:
    beta.kubernetes.io/arch: amd64
    beta.kubernetes.io/os: linux
    kubernetes.io/arch: amd64
    kubernetes.io/hostname: fake-node
    kubernetes.io/os: linux
    kubernetes.io/role: agent
    node-role.kubernetes.io/agent: ""
    type: kwok-controller
  name: fake-node
spec:
  taints:
    - effect: NoSchedule
      key: kwok-controller/provider
      value: fake

I vantaggi dell’utilizzo di KWOK sono evidenziati nel blog post:

  • Velocità: è possibile creare ed eliminare cluster e nodi quasi istantaneamente, senza attendere l’avvio o il provisioning (cosa che invece è vincolante quando si usa kubelet).
  • Compatibilità: KWOK funziona con qualsiasi strumento o client conforme alle API di Kubernetes, quindi kubectl, helm, e via dicendo.
  • Portabilità: KWOK non ha requisiti hardware o software specifici e quindi è possibile eseguirlo utilizzando immagini predefinite, una volta installato Docker o Nerdctl (come, non avete mai sentito parlare di Nerdctl?). In ogni caso i binari sono disponibili per tutte le piattaforme, pronti per essere scaricati.
  • Flessibilità: è possibile configurare diversi tipi di nodi, label, taints, capacità, condizioni e simulare svariati comportamenti dei pod in modo da testare diversi scenari e casi limite.
  • Prestazioni: è possibile simulare migliaia di nodi su un singolo laptop senza che vi sia un consumo significativo di CPU o risorse di memoria.

Quindi se state imparando Kubernetes, se siete sviluppatori e dovete testare i vostri workload simulando ambienti composti da migliaia di nodi, bene KWOK potrebbe fare al caso vostro!

Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *