Che cos’è Kubernetes? A cosa serve? Perché usarlo?
Queste sono alcune delle domande alle quali questo talk darà una risposta: verranno illustrate le origini della piattaforma, i problemi che mira a risolvere e il modo in cui li risolve.
Introdurremo e vedremo in azione alcuni dei concetti chiave di Kubernetes utili a gestire il deployment e lo scaling di applicazioni containerizzate, arrivando a discutere la gestione di aspetti più specifici tramite ConfigMaps, Secrets e Services.
4. Cosa significa kubernetes?
• Parola greca che significa governatore, timoniere, pilota
• Radice della parola cybernetic
• Abbreviato con K8s, sostituendo le 8 lettere "ubernete" con "8"
5.
6.
7. • Sviluppo e design influenzati da Borg (Google)
• Annunciato da Google a metà 2014
• Release v1.0 luglio 2015
• Primo progetto affidato da Google alla CNCF
Un po' di storia
15. Principi di design
• Dichiarativo > Imperativo
Basta dichiarare lo stato desiderato
16. Principi di design
• Dichiarativo > Imperativo
Basta dichiarare lo stato desiderato
• Semplicità
Sforzo minimo dell'utente
17. Principi di design
• Dichiarativo > Imperativo
Basta dichiarare lo stato desiderato
• Semplicità
Sforzo minimo dell'utente
• Self-Healing
Restart, scheduling e replicazione dei container tramite control loops
18. Principi di design
• Dichiarativo > Imperativo
Basta dichiarare lo stato desiderato
• Semplicità
Sforzo minimo dell'utente
• Self-Healing
Restart, scheduling e replicazione dei container tramite control loops
• Modularità
Componenti connesse da interfacce facili da monitorare o sostituire
20. Pod
Rappresentazione logica di un'applicazione
• Uno o più container
• Volumi condivisi
• Unico IP virtuale e port space condivisi
• Namespace condiviso
• Contenuti allocati sullo stesso nodo
POD
Vol 1 Vol 2
Container A
Container B
Indirizzo IP
22. ReplicationController / ReplicaSet
Responsabili del numero di repliche di un Pod in esecuzione
• ReplicationController
- Selettori label-based
- Rolling update imperativi
• ReplicaSet
- Selettori set-based
- Rolling update dichiarativi (tramite Deployment)
41. • Creazione di Pod
• Creazione di ReplicationController
• Scaling dei Pod con RC
• Rolling Update con RC
• Creazione di ReplicaSet
• Scaling dei Pod con RS
• Creazione di Deployment
• Scaling e Rolling Update con Deployment
• Deploy di un'applicazione
Demo Time!
46. Service
• Astrazione di un insieme logico di Pod
• Rende accessibili i Pod a prescindere dal loro ciclo di vita
• Indirizzo IP virtuale persistente
• Tipi diversi per esporre i Pod all'interno o all'esterno del cluster
48. Service
• ClusterIP
- Default
- Espone servizi con IP virtuale interno
- Accessibili solo dall'interno del cluster
• NodePort
- Espone servizi con IP del nodo
- Porta statica
- Accessibili dall'esterno
49. Service
• ClusterIP
- Default
- Espone servizi con IP virtuale interno
- Accessibili solo dall'interno del cluster
• NodePort
- Espone servizi con IP del nodo
- Porta statica
- Accessibili dall'esterno
• LoadBalancer
- Disponibile su infrastrutture cloud che lo supportano
- Espone servizi sfruttando il load balancer di un cloud provider
- Accessibili dall'esterno
50. Ingress
• Routing traffico esterno verso i servizi interni, tipicamente
tramite protocollo HTTP
• Name-based virtual hosting
• Per funzionare, il cluster deve avere un Ingress Controller in
esecuzione
51. ConfigMap & Secret
• Data store chiave-valore
• Fruibili come variabili d'ambiente o file montati in volumi
• Favoriscono la portabilità e il riutilizzo dei componenti
52. ConfigMap & Secret
• ConfigMap
- Gestione delle configurazioni
- Stringhe
• Secret
- Gestione dei dati sensibili
- Dati binari (base64)
- Minore rischio di esposizione
53. • Esposizione del frontend
- Service NodePort
- Ingress
• Comunicazione backend e frontend
- Service ClusterIP
• Update Applicazione
• ConfigMap per backend
• Secret per frontend
Demo Time!
54. Un po' di numeri
In meno di quattro anni ha fortemente attratto l’attenzione di
comunità e aziende
• 65.6k Commits
• 1.6k Contributors
• 12.8k Forks
• 36.5k Stars
• 8.3k Domande su StackOverflow
55.
56.
57. Pro e Contro
• Open Source
• Semplicità
• Supporto
• Estendibilità
• Maturo
58. Pro e Contro
• Documentazione
• Ripida curva di apprendimento
• Setup non banale
• Open Source
• Semplicità
• Supporto
• Estendibilità
• Maturo