Introduzione a Kubernetes

Похожие документы
Kops = Kubernetes per tutti

DevOps di applicazioni Python (e non solo) su OpenShift. Francesco Fiore, System Architect PyCon Nove, 20 aprile 2018

Orchestrazione di contenitori

Red Hat OpenShift: i container per il mondo enterprise

Cloud Simulator and Smart Cloud based on Knowledge Base

OpenStack Self Data Center: il cloud computing secondo TIM

Emanuele Barrano Filippo Bosi CLOUD COMPUTING E ARCHITETTURE SOFTWARE: QUALI IMPATTI SULLO SVILUPPO DI APPLICAZIONI?

Composizione e orchestrazione di contenitori Docker

Composizione e orchestrazione di contenitori Docker

AWS Una rapida introduzione al Cloud. Simone

ALLEGATO 2 - TABELLA PREZZI UNITARI DEI SERVIZI

OpenStack Self Data Center: il cloud computing secondo TIM

Gruppo di Lavoro Cloud

Prezzo unitario di base d'asta. VM 1 - small VM 2 - medium VM 4 - X large Prezzo unitario di base d'asta

VDI VIRTUAL DESKTOP INFRASTRUCTURE

Kubernetes : la piattaforma di Google per la gestione dei container

Linux Day /10/09. Cloud Computing. Diego Feruglio

IOT DAY: L internet of things, dalla programmazione del chip all automazione industriale Moving from Internet 1.0 to Iot: le tecnologie IoT

Docker. Architettura dei Sistemi Software. Luca Cabibbo. dispensa asw660 marzo Fonti. Docker.

Contratto Quadro SPC Cloud Lotto 1 CaaS - Enterprise Container as a Service Specifiche del Servizio

Contratto Quadro SPC Cloud Lotto 1 CaaS - Enterprise Container as a Service Specifiche del Servizio

Digital Transformation e Cloud. Stefano Inelli 22 Novembre 2017

CLOUD FOR IOT. Raccogli e gestisci in tempo reale le informazioni prodotte dagli oggetti connessi.

Configurazione Public Network e Load Balancer as a Service. Stefano Nicotri INFN - Sezione di Bari

Sommario. 1 La shell di Windows PowerShell... 1

Una Roadmap per il Cloud Computing: Organizzazione e tecnologie per il modello as a Service

Apache e Mysql cluster

Introduzione e panoramica. Divisione di Exclusive Networks Srl

Allegato Tecnico BaaS/CBaaS

Esperienze di Advanced Analytics nella statistica ufficiale: strumenti e progetti

Allegato Tecnico Server Virtuale

Progettazione e sviluppo di uno strumento di monitoraggio dei componenti software di un sistema per il controllo del traffico aereo

Транскрипт:

Introduzione a Kubernetes Cos è, come funziona e a cosa serve Fabio Da Soghe - Cognitio

Web Performance: 80-20 80% 20% Server Client web Back-end

Web Performance: 80-20? Fonte: https://www.speedawarenessmonth.com/when-8020-becomes-2080/

A chi è rivolto il talk Non conosce o non ha ancora usato Kubernetes Usa o almeno conosce i container (Docker)

Virtual Machine Container

Cos è Kubernetes Orchestratore di container: Cluster di nodi (fisici o virtuali) Gestione dell infrastruttura (computing e network) Automazione

Creato da Google Risultato di 15 anni di esperienza in Google Progetto Open Source donato da Google alla CNCF (Luglio 2015) Uno dei progetti Open Source più attivi Leader container orchestrator

Fonte: CNCF https://www.cncf.io/blog/2017/06/05/30-highest-velocity-open-source-projects/

Orchestratori usati in azienda Orchestratore usato più spesso in azienda Fonte: Portworx https://portworx.com/2017-container-adoption-survey/

Benefici di Kubernetes Paradigma dichiarativo Distribuzione automatica Scaling orizzontale e verticale Rollout e rollback Gestione storage Self-Healing Service discovery Gestione secret e configurazione

Paradigma dichiarativo Descrizione dello stato desiderato dell applicazione (YAML) Non come, ma cosa Definizione dell intera infrastruttura necessaria all applicazione in produzione

Distribuzione automatica Collocamento automatico dei runtime sui nodi Rispetto di requirement e constraint Applicazione di politiche di massima disponibilità e bilanciamento del carico nodoa 2 vcore 4 GB RAM nodob 4 vcore 8 GB RAM nodoa region: EU nodob region: US app 3 vcore 6 GB RAM app region: EU

Scaling orizzontale e verticale Aumento o diminuzione container in esecuzione (scaling orizzontale) Aumento o diminuzione risorse cpu/ram (scaling verticale) Manuale e automatico, in base a soglie prestabilite app 2 vcore 1 GB RAM app 2 vcore 1 GB RAM app 2 vcore 1 GB RAM app 2 vcore 1 GB RAM app 2 vcore 1 GB RAM app 6 vcore 3 GB RAM

Rollout e rollback Applicazione progressiva di modifiche e aggiornamenti (supporto a canary release) Monitoraggio costante dello stato Processo automatico Rollback in caso di problemi v1 v1 v1 v1 v1 v1 v2 v2 v2 v2 v1 v1 v2 v1 v1 v1 v2 v1 v1 v1

Gestione storage Supporto a diversi storage provider: locale, network (NFS, iscsi, Gluster, Ceph, Cinder, Flocker, ), cloud (GCP, AWS, Azure) Estendibile da terze parti Manuale o auto-provisioned

Self-healing Riavvio container in errore (possibile ricollocamento) Ricollocamento automatico in caso crash nodi Health check definiti dall utente wl1 nodoa wl5 nodob wl7 nodoc wl8 wl2 wl6 wl1 wl8 nodoa wl7 wl5 wl2 nodob wl6 wl7 wl6 nodoc

Service discovery Meccanismi built-in per pubblicazione servizi ed endpoint DNS interno per assegnare ai container gli IP Networking virtuale sull intero cluster Load Balancing dei servizi esposti web.myapp.svc.cluster.local Service 10.2.12.7 replica1 10.2.5.72 replica2 10.2.28.33 replica3

Gestione secret e configurazione Gestione esplicita informazioni sensibili (secret) Disaccoppiamento esplicito configurazione dai container

Architettura generale Kubectl Worker Storage Web UI Dashboard A P I Master Worker Storage 3th party client Worker Storage

Oggetti Kubernetes Workload: Deployment Replica Set Stateful Set Daemon Set Job / Cron Job Pod Networking: Service Ingress Configuration: Namespace Secret Config Map Storage: Volume Persistent Volume Persistent Volume Claim

Pod: l unità di elaborazione Network IP address Pod Container Volume

Pod: l unità di elaborazione Pod Network IP address Container Localhost Container Volume

Struttura (core) di un applicazione Master Spawn Worker Worker Declare Declare Deployment Spawn Replica Set Spawn Pod Container A Pod Container A Client Deployment Spawn Replica Set Spawn Container B Pod Container C Mount Declare Persistent Volume Claim Provision Volume Storage Provider

It s demo time! Applicazione web: Frontend web Meteor (-> Node.js) Database MongoDB

Architettura logica K8s Demo Frontend Web Database HTTP Ingress Service Internet Service Stateful Set Persistent Volume Claim Provision Deployment Mount Volume

YAML frontend web (1/2) kind: Ingress apiversion: extensions/v1beta1 metadata: name: k8s-demo spec: backend: servicename: k8s-demo serviceport: 80 kind: Service apiversion: v1 metadata: name: k8s-demo spec: type: NodePort ports: - port: 80 targetport: http selector: app: k8s-demo

YAML frontend web (2/2) kind: Deployment apiversion: apps/v1beta1 metadata: name: nodejs spec: replicas: 1 strategy: type: RollingUpdate rollingupdate: maxsurge: 2 maxunavailable: 1 template: metadata: labels: app: k8s-demo spec: containers: - image: "eu.gcr.io/myrepo/k8s-demo" name: nodejs resources: limits: cpu: "0.1" requests: cpu: "0.01" env: - name: MONGO_URL value: " mongodb://mongo-0.mongo:27017/k8s-demo?replicaset=rs0" - [...] ports: - containerport: 3000 name: http readinessprobe: httpget: path: /rest/data/add?size=10&numdocs=0&work=0 port: 3000 initialdelayseconds: 10 periodseconds: 1 failurethreshold: 1

YAML database (1/3) kind: Service apiversion: v1 metadata: name: mongo labels: name: mongo spec: ports: - port: 27017 targetport: 27017 clusterip: None selector: role: mongo

YAML database (2/3) kind: StatefulSet apiversion: apps/v1beta1 metadata: name: mongo spec: servicename: "mongo" replicas: 1 updatestrategy: type: RollingUpdate template: metadata: labels: role: mongo spec: terminationgraceperiodseconds: 10 containers: - name: mongo image: mongo resources: limits: cpu: "0.1" requests: cpu: "0.01" command: - "mongod" - "--replset" - "rs0" - "--smallfiles" - "--noprealloc" ports: - containerport: 27017 volumemounts: - name: mongo-persistent-storage mountpath: /data/db

YAML database (3/3) - name: mongo-sidecar image: cvallance/mongo-k8s-sidecar env: - name: MONGO_SIDECAR_POD_LABELS value: "role=mongo" - name: KUBERNETES_MONGO_SERVICE_NAME value: "mongo" volumeclaimtemplates: - metadata: name: mongo-persistent-storage annotations: volume.beta.kubernetes.io/storage-class: "standard" spec: accessmodes: [ "ReadWriteOnce" ] resources: requests: storage: 10Gi

Kubernetes in Cognitio Plenus: Platform-as-a-Service basato su Kubernetes www.plenus.cloud