SlideShare una empresa de Scribd logo
1 de 60
Descargar para leer sin conexión
Kubernetes
Core Concepts
Chi sono
francesco.dammacco@apuliasoft.com
linkedin.com/in/fdammacco
twitter.com/Fra5840
Kubernetes
Cosa significa kubernetes?
• Parola greca che significa governatore, timoniere, pilota
• Radice della parola cybernetic
• Abbreviato con K8s, sostituendo le 8 lettere "ubernete" con "8"
• 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
Cosa è?
Piattaforma open source per l'orchestrazione
di container in cluster di host
A cosa serve?
• Deployment
• Scaling
• Configuration
• Service Discovery
• Update
Perché usarlo?
Perché usarlo?
Perché usarlo?
Perché usarlo?
Principi di design
• Dichiarativo > Imperativo
Basta dichiarare lo stato desiderato
Principi di design
• Dichiarativo > Imperativo
Basta dichiarare lo stato desiderato
• Semplicità
Sforzo minimo dell'utente
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
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
Core Concepts
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
ReplicationController / ReplicaSet
Responsabili del numero di repliche di un Pod in esecuzione
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)
ReplicationController / ReplicaSet
POD
labels:
env: test
version: 1.0.0
POD
labels:
env: prod
version: 1.0.0
RC
replicas: 2
selector:
env: test
ReplicationController / ReplicaSet
POD
labels:
env: test
version: 1.0.0
POD
labels:
env: prod
version: 1.0.0
RC
replicas: 2
selector:
env: test
ReplicationController / ReplicaSet
POD
labels:
env: test
version: 1.0.0
POD
labels:
env: test
version: 1.0.0
POD
labels:
env: prod
version: 1.0.0
RC
replicas: 2
selector:
env: test
ReplicationController / ReplicaSet
POD
labels:
env: test
version: 1.0.1
POD
labels:
env: prod
version: 1.0.1
RS
replicas: 2
selector:
matchExpressions:
- {key: env, operator: In, values: [test, prod]}
Deployment
• Astrazione di Pod e ReplicaSet
• Rolling update dichiarativi
• Rollback
• Trasforma lo stato attuale in quello desiderato
Deployment
POD
labels:
version: 1.0
POD
labels:
version: 1.0
POD
labels:
version: 1.0
DEPLOYMENT
Deployment
POD
labels:
version: 1.0
POD
labels:
version: 1.0
POD
labels:
version: 1.0
POD
labels:
version: 2.0
DEPLOYMENT
Deployment
POD
labels:
version: 1.0
POD
labels:
version: 1.0
POD
labels:
version: 1.0
POD
labels:
version: 2.0
DEPLOYMENT
Deployment
POD
labels:
version: 1.0
POD
labels:
version: 1.0
POD
labels:
version: 1.0
POD
labels:
version: 2.0
DEPLOYMENT
Deployment
POD
labels:
version: 1.0
POD
labels:
version: 1.0
POD
labels:
version: 2.0
DEPLOYMENT
Deployment
POD
labels:
version: 1.0
POD
labels:
version: 1.0
POD
labels:
version: 2.0
POD
labels:
version: 2.0
DEPLOYMENT
Deployment
POD
labels:
version: 1.0
POD
labels:
version: 1.0
POD
labels:
version: 2.0
POD
labels:
version: 2.0
DEPLOYMENT
Deployment
POD
labels:
version: 1.0
POD
labels:
version: 1.0
POD
labels:
version: 2.0
POD
labels:
version: 2.0
DEPLOYMENT
Deployment
POD
labels:
version: 1.0
POD
labels:
version: 2.0
POD
labels:
version: 2.0
DEPLOYMENT
Deployment
POD
labels:
version: 1.0
POD
labels:
version: 2.0
POD
labels:
version: 2.0
DEPLOYMENT
POD
labels:
version: 2.0
Deployment
POD
labels:
version: 1.0
POD
labels:
version: 2.0
POD
labels:
version: 2.0
DEPLOYMENT
POD
labels:
version: 2.0
Deployment
POD
labels:
version: 1.0
POD
labels:
version: 2.0
POD
labels:
version: 2.0
DEPLOYMENT
POD
labels:
version: 2.0
Deployment
POD
labels:
version: 2.0
POD
labels:
version: 2.0
DEPLOYMENT
POD
labels:
version: 2.0
• 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!
Service
POD
labels:
app: backend
192.168.1.1
POD
labels:
app: frontend
DEPLOYMENT
Service
POD
labels:
app: frontend
DEPLOYMENT
Service
POD
labels:
app: frontend
DEPLOYMENT
POD
labels:
app: backend
192.168.1.2
Service
SERVICE
selector:
app: backend
Persistent IP
POD
labels:
app: frontend
DEPLOYMENT
POD
labels:
app: backend
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
Service
• ClusterIP
- Default
- Espone servizi con IP virtuale interno
- Accessibili solo dall'interno del cluster
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
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
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
ConfigMap & Secret
• Data store chiave-valore
• Fruibili come variabili d'ambiente o file montati in volumi
• Favoriscono la portabilità e il riutilizzo dei componenti
ConfigMap & Secret
• ConfigMap
- Gestione delle configurazioni
- Stringhe
• Secret
- Gestione dei dati sensibili
- Dati binari (base64)
- Minore rischio di esposizione
• Esposizione del frontend
- Service NodePort
- Ingress
• Comunicazione backend e frontend
- Service ClusterIP
• Update Applicazione
• ConfigMap per backend
• Secret per frontend
Demo Time!
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
Pro e Contro
• Open Source
• Semplicità
• Supporto
• Estendibilità
• Maturo
Pro e Contro
• Documentazione
• Ripida curva di apprendimento
• Setup non banale
• Open Source
• Semplicità
• Supporto
• Estendibilità
• Maturo
Grazie
francesco.dammacco@apuliasoft.com
linkedin.com/in/fdammacco
twitter.com/Fra5840
github.com/fdammacco/kcc-demo

Más contenido relacionado

La actualidad más candente

Javascript task automation
Javascript task automationJavascript task automation
Javascript task automation
DotNetCampus
 

La actualidad más candente (19)

Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
 
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
 
Cloud Native PostgreSQL - Italiano
Cloud Native PostgreSQL - ItalianoCloud Native PostgreSQL - Italiano
Cloud Native PostgreSQL - Italiano
 
Con Aruba, a lezione di cloud #lezione 29: 'GitLab e Cloud Server Smart - Ins...
Con Aruba, a lezione di cloud #lezione 29: 'GitLab e Cloud Server Smart - Ins...Con Aruba, a lezione di cloud #lezione 29: 'GitLab e Cloud Server Smart - Ins...
Con Aruba, a lezione di cloud #lezione 29: 'GitLab e Cloud Server Smart - Ins...
 
Monitoring Applications in AKS
Monitoring Applications in AKSMonitoring Applications in AKS
Monitoring Applications in AKS
 
Docker & DevOps
Docker  & DevOpsDocker  & DevOps
Docker & DevOps
 
Introduzione a Docker
Introduzione a DockerIntroduzione a Docker
Introduzione a Docker
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOps
 
Building infrastructure as code with typescript and aws cdk
Building infrastructure as code with typescript and aws cdkBuilding infrastructure as code with typescript and aws cdk
Building infrastructure as code with typescript and aws cdk
 
Introduzione DevOps con Ansible
Introduzione DevOps con AnsibleIntroduzione DevOps con Ansible
Introduzione DevOps con Ansible
 
AWS CDK infrastructure is code
AWS CDK infrastructure is codeAWS CDK infrastructure is code
AWS CDK infrastructure is code
 
Javascript task automation
Javascript task automationJavascript task automation
Javascript task automation
 
Porting Android application from ARM to x86
Porting Android application from ARM to x86Porting Android application from ARM to x86
Porting Android application from ARM to x86
 
CI CD per .Net 5? Facile con Azure Pipelines e GitHub Actions
 CI CD per .Net 5? Facile con Azure Pipelines e GitHub Actions  CI CD per .Net 5? Facile con Azure Pipelines e GitHub Actions
CI CD per .Net 5? Facile con Azure Pipelines e GitHub Actions
 
Introduzione A Docker
Introduzione A DockerIntroduzione A Docker
Introduzione A Docker
 
Introduzione a .Net Core
Introduzione a .Net CoreIntroduzione a .Net Core
Introduzione a .Net Core
 
Alla scoperta di gRPC
Alla scoperta di gRPCAlla scoperta di gRPC
Alla scoperta di gRPC
 
Blazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiBlazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi reali
 
Building Large Java Codebase with Bazel - CodeOne
Building Large Java Codebase with Bazel - CodeOneBuilding Large Java Codebase with Bazel - CodeOne
Building Large Java Codebase with Bazel - CodeOne
 

Similar a Kubernetes Core Concepts

Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie Google
Diego Giorgini
 
JBoss Clouds - JBug Roma october 2009
JBoss Clouds -  JBug Roma october 2009JBoss Clouds -  JBug Roma october 2009
JBoss Clouds - JBug Roma october 2009
Sanne Grinovero
 
Signal r to the-max
Signal r to the-maxSignal r to the-max
Signal r to the-max
DotNetCampus
 
Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-max
DotNetCampus
 
Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017
MongoDB
 
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e MongodbRealizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
MongoDB
 

Similar a Kubernetes Core Concepts (20)

Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie Google
 
Meetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e KubernetesMeetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e Kubernetes
 
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...
Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indic...
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFSLa nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastruttura
 
Docker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptx
Docker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptxDocker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptx
Docker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptx
 
Da DotNet a DotNetCore
Da DotNet a DotNetCoreDa DotNet a DotNetCore
Da DotNet a DotNetCore
 
October 2009 - JBoss Cloud
October 2009 - JBoss CloudOctober 2009 - JBoss Cloud
October 2009 - JBoss Cloud
 
JBoss Clouds - JBug Roma october 2009
JBoss Clouds -  JBug Roma october 2009JBoss Clouds -  JBug Roma october 2009
JBoss Clouds - JBug Roma october 2009
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
 
OpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studioOpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studio
 
Kubernetes as HA time series server, a proposal
Kubernetes as HA time series server, a proposalKubernetes as HA time series server, a proposal
Kubernetes as HA time series server, a proposal
 
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
 
Signal r to the-max
Signal r to the-maxSignal r to the-max
Signal r to the-max
 
Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-max
 
Cuckoo Sandbox: Automated malware analysis
Cuckoo Sandbox: Automated malware analysisCuckoo Sandbox: Automated malware analysis
Cuckoo Sandbox: Automated malware analysis
 
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
 
Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017
 
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e MongodbRealizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
 

Kubernetes Core Concepts