In qualità di commiter di CloudFoundry (passato) e Kubernetes (presente), probabilmente sono qualificato in modo univoco per rispondere a questo.
PaaS-like
Mi piace chiamare CloudFoundry un "Application PaaS" e Kubernetes un "Container PaaS", ma la distinzione è abbastanza sottile e fluida, dato che entrambi i progetti cambiano nel tempo per competere negli stessi mercati.
La distinzione tra i due è che CF ha un livello di staging che accetta un'app utente (a 12 fattori) (ad esempio jar o gem) e un buildpack in stile Heroku (ad esempio Java + Tomcat o Ruby) e produce un droplet (analogo a un Immagine Docker). CF non espone l'interfaccia di containerizzazione all'utente, ma Kubernetes sì.
Pubblico
Il pubblico principale di CloudFoundry sono gli sviluppatori di applicazioni aziendali che desiderano distribuire app stateless a 12 fattori utilizzando i buildpack in stile Heroku.
Il pubblico di Kubernetes è un po 'più ampio, inclusi sviluppatori di applicazioni senza stato e di servizi con stato che forniscono i propri contenitori.
Questa distinzione potrebbe cambiare in futuro:
Confronto delle caratteristiche
Man mano che entrambi i progetti maturano e competono, le loro somiglianze e differenze cambieranno. Quindi prendi il seguente confronto delle caratteristiche con un grano di sale.
Sia CF che K8 condividono molte funzionalità simili, come containerizzazione, spazio dei nomi, autenticazione,
Vantaggi competitivi di Kubernetes:
- Raggruppa e ridimensiona pod di contenitori che condividono uno stack di rete, anziché ridimensionarli in modo indipendente
- Porta il tuo contenitore
- Livello di persistenza con stato
- Comunità OSS più ampia e attiva
- Architettura più estensibile con componenti sostituibili e plug-in di terze parti
- GUI web gratuita
Vantaggi competitivi di CloudFoundry:
- Autenticazione matura, raggruppamento di utenti e supporto multi-tenancy [x]
- Porta la tua app
- Bilanciatore del carico incluso
- Distribuito, ridimensionato e mantenuto in vita da BOSH [x]
- Registrazione robusta e aggregazione di metriche [x]
- GUI Web aziendale [x]
[x] Queste funzionalità non fanno parte di Diego né sono incluse in Lattice.
Distribuzione
Uno dei vantaggi competitivi di CloudFoundry è che ha un motore di distribuzione maturo, BOSH, che abilita funzionalità come il ridimensionamento, la resurrezione e il monitoraggio dei componenti CF principali. BOSH supporta anche molti livelli IaaS con un'astrazione di provider di cloud collegabile. Sfortunatamente, la curva di apprendimento di BOSH e la gestione della configurazione della distribuzione sono da incubo. (In qualità di committer BOSH, penso di poterlo dire con precisione.)
L'astrazione della distribuzione di Kubernetes è ancora agli inizi. Più ambienti di destinazione sono disponibili nel repository principale, ma non tutti funzionano, sono ben testati o supportati dagli sviluppatori principali. Questa è principalmente una questione di maturità. Ci si potrebbe aspettare che questo migliori nel tempo e aumenti l'astrazione. Ad esempio, Kubernetes su DCOS consente di distribuire Kubernetes a un cluster DCOS esistente con un singolo comando.
Contesto storico
Diego è una riscrittura di Droplet Execution Agent di CF. È stato originariamente sviluppato prima dell'annuncio di Kubernetes e ha assunto un ambito di funzionalità più ampio con l'evoluzione del panorama competitivo. Il suo obiettivo originale era quello di generare droplet (applicazione utente + buildpack CF) ed eseguirli in contenitori Warden (rinominati Garden quando riscritti in Go). Fin dal suo inizio è stato anche riconfezionato come Lattice , che è un po 'un CloudFoundry-lite (sebbene quel nome sia stato preso da un progetto esistente). Per questo motivo, Lattice è in qualche modo simile a un giocattolo, in quanto ha deliberatamente ridotto il pubblico e l'ambito dell'utente, mancando esplicitamente di funzionalità che lo renderebbero "pronto per le imprese". Funzionalità già fornite da CF. Ciò è in parte dovuto al fatto che Lattice viene utilizzato per testare i componenti principali, senza alcun sovraccarico derivante dalla CF più complessa, ma è anche possibile utilizzare Lattice in ambienti interni ad alta affidabilità in cui la sicurezza e il multi-tenancy non sono un problema così importante .
Vale anche la pena ricordare che CloudFoundry e Warden (il suo motore di container) sono anteriori a Docker di un paio di anni.
Kubernetes, d'altra parte, è un progetto relativamente nuovo sviluppato da Google sulla base di anni di utilizzo di container con BORG e Omega. Kubernetes potrebbe essere considerato come l'orchestrazione di container di terza generazione in Google, allo stesso modo in cui Diego è l'orchestrazione di container di terza generazione in Pivotal / VMware (v1 scritta su VMware; v2 su VMware con l'aiuto di Pivotal Labs; v3 su Pivotal dopo che ha rilevato il progetto) .