Vai al contenuto

Gestione di Kubernetes

Kubernetes si è affermato come standard de facto per l'orchestrazione dei container, consentendo di automatizzare il deployment, lo scaling e la gestione di applicazioni containerizzate su larga scala.

Il nostro servizio Kubernetes nel nuovo portale Cloud Services Le offre un ambiente Kubernetes potente e gestito. In pratica, ci occupiamo della configurazione, della manutenzione e della gestione complesse del Control Plane Kubernetes (Master Nodes), permettendole di concentrarsi pienamente sullo sviluppo e sull'operatività delle Sue applicazioni.

Questo servizio è integrato in modo trasparente nel nostro portale e sfrutta l'infrastruttura robusta di OpenStack e Gardener per il provisioning dei Worker Node. Trae inoltre vantaggio dall'integrazione semplice con altri servizi del portale, come il nostro storage a oggetti compatibile S3 e il servizio di backup centralizzato.

Il servizio si rivolge a sviluppatori, team DevOps e amministratori di sistema che cercano una piattaforma scalabile, affidabile e facile da gestire per i propri carichi di lavoro containerizzati.

Questa documentazione La guida attraverso tutti i passaggi necessari: dai prerequisiti alla creazione e configurazione del Suo primo cluster, fino all'amministrazione quotidiana e allo scaling. Spieghiamo le funzionalità e le opzioni specifiche a Sua disposizione nel nostro Cloud Portal.

Dietro le quinte

Il nostro servizio Kubernetes si basa su Gardener, che gestisce il control plane del Suo cluster su un Seed cluster condiviso, mentre i Suoi worker node vengono eseguiti in OpenStack. Può creare cluster in entrambe le regioni (ch-zh1 Zurigo e ch-ge1 Ginevra).

Architettura Gardener: concetto Seed & Shoot, multi-regione, control plane vs data plane.

Kubernetes LoadBalancer e Octavia: come i servizi type: LoadBalancer creano load balancer Octavia in OpenStack.

Prerequisiti

Questi prerequisiti sono necessari per creare un cluster Kubernetes nel Cloud Services Portal.

  • Un account valido nel Cloud Services Portal.
  • Le permission/ruoli necessari nel portale per creare cluster Kubernetes.
  • Quota sufficiente (vCPU/vRAM/Storage) per la creazione.
  • Eventualmente strumenti locali (kubectl, k9s ...).

Primi passi

Overview

Le offriamo due opzioni per creare il Suo cluster Kubernetes nel nostro Cloud Services Portal:

  • Come nuovo progetto
  • In un progetto esistente

Creazione di un cluster

Per creare un cluster è indispensabile un progetto con quota sufficiente. La guida passo passo presuppone che la procedura guidata crei un progetto autonomo. Per un progetto già esistente, la selezione del nome e della dimensione del progetto viene naturalmente omessa.

Passo dopo passo

Setup Cluster

Fondamentalmente, la procedura guidata è molto semplice da usare e relativamente chiara nei campi del modulo per creare un cluster.

  • Cluster Name -> Non deve superare i 10 caratteri.

  • Purpose

    • testing -> Nessun monitoring, nessuna HA dei componenti del Kubernetes Controller.
    • production -> Monitoring e HA dei componenti del Controller.
  • Image -> Qui è possibile definire la versione dell'immagine Worker desiderata. La modifica successiva non è supportata.

  • Kube-Version -> Qui è possibile definire la versione di Kubernetes richiesta. Successivamente è possibile solo l'aggiornamento a una versione superiore, non il downgrade.

  • Flavor -> Qui vengono definiti i possibili flavor OpenStack per i Worker Node.

  • Zones -> Qui viene definita la distribuzione dei Worker Node sulle diverse AZ.

  • Worker Count -> Qui è possibile definire il numero minimo e massimo di Worker. Il nostro servizio può rilevare picchi di carico e provisionare di conseguenza più Worker/risorse per il cluster.

Note

Tenga presente che questo processo può richiedere fino a 10 minuti a seconda del numero di worker.

Una volta creato, il cluster compare nell'elenco:

Cluster Healthy

Accesso al cluster

Una volta creato il cluster Kubernetes e in stato sano, è possibile generare sia una configurazione admin sia una configurazione viewer.

Arrow pointing to Download-Kubeconfig

Kube-admin-Form

Warning

Tenga presente che queste credenziali di accesso sono valide solo per 24 ore per motivi di sicurezza, indipendentemente dal numero di giorni indicato nel campo!

Utilizzare la configurazione Kubernetes con Kubectl

Dopo il download, riceverà un file YAML simile al seguente:

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQ1akNDQWs2Z0F3SUJBZ0lRSlRoRUhBWjlrMzJMZDlnQWg5bFhGREFOQmdrcWhraUc5dzBCQVFzRkFEQU4KTVFzd0NRWURWUVFERXdKallUQWVGdzB5TlRBME1UUXhNRFExTVRsYUZ3MHpOVEEwTVRReE1EUTJNVGxhTUEweApDekFKQmdOVkJBTVRBbU5oTUlJQm9qQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FZOEFNSUlCaWdLQ0FZRUE0aEU1CmpQUHZFNDFiUnNuUHV5a0J2WkthR3ovTWJKa3Ewb0liQzlVVlVYTW1EV0hqeWpjeHdLK0haZ2NSNG1VY0VseXQKVVk1dSt1UGF1SlpFQjk3a3hCRTY0U2h4WFdDK0VReDJzNHZBdFhjVkxadFdyTGJ4cjNrVnY4ZjUxY280SWpoOApJOGZmVk51cDVvbmpia0ZqWTQwQjg2c0gzeUg3OUoyWVEyWC9zUTZrajhDVEVxUFRRZGcvNGZ3Ymh5WUpRQVpqCjQwbHZWTTVCcndPVm1KMDEzZkkyNVlmME15dDJuUjRlMGo2TVlVZEhxclFScjh2bStXc1BzbHN0M1YzdE02YWcKQ0p3NU40VXlrSDZRUVNRcmdLS0ZmNmMrbVJNT0VIWS9WZGVack5SWWtIQmVZY2x0OVIxTkMzK3hjK2ZaM3ZyeAp5ZVFsS3NzV0x1Ly8yTElVWVlCbE5FWDhadzhuRW9Id3Q5OEZkQTN4ZHRHdXJkcGJ6MHFNZVVRK1VtblZPWTRLCldpTlR6WHkvVlpLVFFmWkFER1dJdVZxUFAxVnh0Z2I5d2tscjhRd28xVFljV25aMFRML3JLa3gvemNYK1pGbW8KbXVseUg2OTl6ZnZpdFBkWWdLT0c5MVl0Q2grM1F2bmlxbEFIUy9BZjRYL2F4Z2dsbWYwZURUaXVXMFhwQWdNQgpBQUdqUWpCQU1BNEdBMVVkRHdFQi93UUVBd0lCcGpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXCkJCU3hIYm9seTV4NFJXbS9aeW1ibENndllrL3d4ekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBWUVBS0FIL0RBRlUKZ0Jibm5zV3JRVWppMVYxajVWNW5TWHM3K2JCT2MxSVdqT3VjSDVhc3Y3OGlHaC9WV21pblFwS0ZPNTAwWFREMgp3T29ubVN1dE9sLzFpa0E1M29Mb25TdU9JWG5vdXYzVFc2SUo1WExsT3k4QU1FY0FrQy9KN2NrdS9CZUJ1QTMvClJ2eU51U1RpN2p5S1l4WnhXZDRzYnNESkZ1Qi9ycFBhSmtEcTZYRTFCTWJOeUd2UTduZDJucXhINDBCaWtiZ2MKOEpuTjFRb2N3b25WSFR2YWtkZGtUa1E2emgraDlMcUJBdy9UR0pvdmJRM1o1bFJJUDBqdGFXVnVrNlovK3k2RApIZWdDZkMraWlOOTVpalVrY25nMkZMVE9wSm5BdHloRnNtUlFKSjM3cGZhcWxrMXNPeHoyUUIxaGpMOHRveHNTCmJwbkZURW5tclQwc29uQjhUZXgzSzlrT2FrcGVuQXZ3cG1OQXhCd2RodHpyRFdUSnAzUmx4S2F0NENLR2U0R0kKVjFrSEVkczN6RjFJK0VjOW5obXVxcEViNEdXbzNsVTJMVllwSnBscnd3QnhFbHU1TzN4b0IxM1hTME96TittTgpmdWpNemZNakkzazBpODd5cVFlRm5kcVQ4ZjJhVFFieVovYWNLdVNGTDRzV0xQTWtmTDFoQWVBOAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    server: https://api.kc-6iizv1z.ew5cmpb.gardener.ewcs.ch
  name: garden-8586188f435346b4af787015734ef963--kc-6iizv1z-external
  • Il nome corrisponde al Cluster Name + ruolo.

Sul Suo client

Ora può copiare questo file YAML in /home/[user]/.kube/config

Oppure definire un export che fa riferimento a questo YAML:

export KUBECONFIG=/tmp/kubeconfig-kv-6iiuvlz-admin.yml

Esempio

Ora può interrogare facilmente il cluster tramite lo strumento da riga di comando kubectl:

root@kube-trial:~/# kubectl get nodes
NAME                                                       STATUS   ROLES    AGE   VERSION
shoot--ew5cmpb--kc-6iizv1z-default-worker-z1-5c69c-mpnzr   Ready    <none>   84m   v1.31.3

In questo caso il cluster dispone di un solo Worker Node.

Modifica del cluster

Può accedere al modulo di aggiornamento tramite il menu a discesa:

Cluster-Update

Qui sono disponibili le seguenti opzioni:

  • Aggiornare la versione di Kubernetes
  • Aggiornare il Purpose da Testing a Production

Note

A seconda della cronologia, potrebbe già trovarsi in stato Production. Tenga presente che non è possibile tornare allo stato testing, poiché tecnicamente non è possibile.

Lo stesso vale per la versione Kubernetes del cluster; se ha già selezionato la versione più recente, non gliene verrà offerta una più nuova. Ci impegneremo sempre a fornirle le versioni più recenti di Kubernetes.

Warning

Tenga presente che le modifiche al Purpose o alla versione comportano un'operazione importante sul cluster e richiedono quindi tempo.

Worker Node

I Suoi Worker possono essere gestiti tramite il menu a discesa Worker-Groups.

worker-group

  • Per i Worker-Group esistenti è possibile modificare solo il numero.
  • Se desidera una distribuzione su più AZ, deve creare un nuovo Worker-Group ed eventualmente eliminare quello vecchio.

Creare un nuovo Worker-Group

Il pulsante [Create worker group]{.title-ref} apre il seguente modulo per definire un nuovo Worker-Group.

worker-group-form

  • Qui, analogamente al modulo iniziale, può definire Worker-Group aggiuntivi per il Suo cluster Kubernetes.

Note

Anche qui occorre rispettare la quota del progetto, poiché non può essere superata, il che potrebbe causare un errore durante la creazione dei Worker Node. Verifichi la scheda Notifications.

Worker Group in Kubectl

root@kube-trial:~/.kube# kubectl get nodes
NAME                                                       STATUS   ROLES    AGE    VERSION
shoot--ew5cmpb--kc-6iizv1z-default-worker-z1-5c69c-mpnzr   Ready    <none>   127m   v1.31.3
shoot--ew5cmpb--kc-6iizv1z-test-z1-5cc9c-wb2zf             Ready    <none>   2m2s   v1.31.3
  • I Worker-Group si distinguono per il nome.

Eliminare un Worker-Group

Può eliminare i Worker Group esistenti fino a lasciarne uno solo, in modo che il cluster rimanga funzionante.

Warning

A seconda del deployment e della definizione dell'affinità dei worker node, può succedere che uno dei Suoi Worker-Group non possa essere eliminato, poiché altrimenti comprometterebbe l'integrità del Suo deployment.

L'eliminazione dei Group viene avviata tramite il pulsante [Delete it]{.title-ref}.

Note

Tenga presente che anche questo processo richiede tempo, poiché i Node devono essere "drained" e i Pod spostati.

Eliminazione del cluster

L'eliminazione del cluster è altrettanto semplice di quella dei Worker-Group; l'intero cluster può essere eliminato tramite il menu a discesa nella pagina Cluster Management.

Prerequisiti per eliminare un cluster:

Warning

I cluster su cui sono ancora in esecuzione deployment non possono essere eliminati !!!