ในฐานะที่เป็นทั้งผู้สื่อสาร CloudFoundry (อดีต) และ Kubernetes (ปัจจุบัน) ฉันอาจมีคุณสมบัติที่ไม่เหมือนใครที่จะตอบคำถามนี้
PaaS เหมือน
ฉันชอบเรียก CloudFoundry ว่า "Application PaaS" และ Kubernetes ว่า "Container PaaS" แต่ความแตกต่างนั้นค่อนข้างละเอียดอ่อนและลื่นไหลเนื่องจากทั้งสองโครงการเปลี่ยนแปลงตลอดเวลาเพื่อแข่งขันในตลาดเดียวกัน
ความแตกต่างระหว่างทั้งสองคือ CF มีเลเยอร์การจัดเตรียมที่ใช้แอพผู้ใช้ (12 ปัจจัย) (เช่น jar หรือ gem) และ buildpack สไตล์ Heroku (เช่น Java + Tomcat หรือ Ruby) และสร้างหยด (คล้ายกับ a อิมเมจ Docker) CF ไม่เปิดเผยอินเทอร์เฟซการจัดคอนเทนเนอร์ให้กับผู้ใช้ แต่ Kubernetes ทำ
ผู้ชม
ผู้ชมหลักของ CloudFoundry คือนักพัฒนาแอปพลิเคชันระดับองค์กรที่ต้องการปรับใช้แอพไร้สถานะ 12 ปัจจัยโดยใช้บิลด์แพ็คสไตล์ Heroku
กลุ่มเป้าหมายของ Kubernetes นั้นกว้างขึ้นเล็กน้อยรวมถึงทั้งแอปพลิเคชันไร้สัญชาติและนักพัฒนาบริการที่มีสถานะเป็นผู้จัดหาคอนเทนเนอร์ของตนเอง
ความแตกต่างนี้อาจเปลี่ยนแปลงได้ในอนาคต:
การเปรียบเทียบคุณสมบัติ
เมื่อทั้งสองโครงการเติบโตเต็มที่และแข่งขันกันความเหมือนและความแตกต่างก็จะเปลี่ยนไป ดังนั้นลองเปรียบเทียบคุณสมบัติต่อไปนี้กับเกลือหนึ่งเม็ด
ทั้ง CF และ K8 มีคุณสมบัติที่คล้ายกันมากมายเช่น containerization, namespacing, authentication,
ข้อได้เปรียบในการแข่งขันของ Kubernetes:
- จัดกลุ่มและปรับขนาดพ็อดของคอนเทนเนอร์ที่ใช้สแต็กเครือข่ายร่วมกันแทนที่จะปรับขนาดอย่างอิสระ
- นำภาชนะของคุณมาเอง
- เลเยอร์สถานะคงอยู่
- ชุมชน OSS ที่ใหญ่ขึ้นและมีการใช้งานมากขึ้น
- สถาปัตยกรรมที่ขยายได้มากขึ้นพร้อมส่วนประกอบที่เปลี่ยนได้และปลั๊กอินของบุคคลที่สาม
- GUI เว็บฟรี
ข้อดีในการแข่งขันของ CloudFoundry:
- การรับรองความถูกต้องตามผู้ใหญ่การจัดกลุ่มผู้ใช้และการสนับสนุนหลายผู้เช่า [x]
- นำแอปของคุณเอง
- รวมตัวจัดสรรภาระงาน
- ปรับใช้ปรับขนาดและรักษาชีวิตโดย BOSH [x]
- การบันทึกที่มีประสิทธิภาพและการรวมเมตริก [x]
- GUI เว็บสำหรับองค์กร [x]
[x] คุณสมบัติเหล่านี้ไม่ได้เป็นส่วนหนึ่งของ Diego หรือรวมอยู่ใน Lattice
การปรับใช้
ข้อได้เปรียบในการแข่งขันอย่างหนึ่งของ CloudFoundry คือมี BOSH ซึ่งเป็นเอ็นจินการปรับใช้ที่ครบวงจรซึ่งเปิดใช้งานคุณลักษณะต่างๆเช่นการปรับขนาดการคืนชีพและการตรวจสอบส่วนประกอบ CF หลัก BOSH ยังรองรับเลเยอร์ IaaS จำนวนมากพร้อมกับนามธรรมของผู้ให้บริการคลาวด์แบบเสียบได้ น่าเสียดายที่เส้นโค้งการเรียนรู้และการจัดการการกำหนดค่าการปรับใช้ของ BOSH นั้นช่างฝันร้าย (ในฐานะผู้ให้บริการ BOSH ฉันคิดว่าฉันสามารถพูดสิ่งนี้ได้อย่างแม่นยำ)
สิ่งที่เป็นนามธรรมในการทำให้ใช้งานได้ของ Kubernetes ยังอยู่ในวัยเด็ก สภาพแวดล้อมเป้าหมายหลายสภาพพร้อมใช้งานใน repo หลัก แต่ไม่ได้ใช้งานได้ทั้งหมดผ่านการทดสอบอย่างดีหรือสนับสนุนโดยนักพัฒนาหลัก ส่วนใหญ่เป็นสิ่งที่มีวุฒิภาวะ เราอาจคาดหวังว่าสิ่งนี้จะดีขึ้นเมื่อเวลาผ่านไปและเพิ่มความเป็นนามธรรม ตัวอย่างเช่นKubernetes บน DCOSอนุญาตให้ใช้ Kubernetes กับคลัสเตอร์DCOSที่มีอยู่ด้วยคำสั่งเดียว
บริบททางประวัติศาสตร์
Diego เป็นการเขียนซ้ำของ Droplet Execution Agent ของ CF เดิมได้รับการพัฒนาก่อนที่ Kubernetes จะประกาศและมีการใช้ขอบเขตคุณลักษณะมากขึ้นเนื่องจากแนวการแข่งขันมีการพัฒนา เป้าหมายเดิมคือการสร้างหยด (แอปพลิเคชันผู้ใช้ + CF buildpack) และเรียกใช้ในคอนเทนเนอร์ Warden (เปลี่ยนชื่อเป็นการ์เด้นเมื่อเขียนใหม่ใน Go) นับตั้งแต่ก่อตั้งขึ้นก็ยังได้รับการบรรจุใหม่เป็นLatticeซึ่งค่อนข้างเป็น CloudFoundry-lite (แม้ว่าชื่อนี้จะถูกนำมาใช้โดยโครงการที่มีอยู่). ด้วยเหตุนี้ Lattice จึงค่อนข้างคล้ายของเล่นเนื่องจากมีการลดจำนวนผู้ชมและขอบเขตของผู้ใช้ลงโดยเจตนาขาดคุณสมบัติที่จะทำให้ "พร้อมสำหรับองค์กร" อย่างชัดเจน คุณสมบัติที่ CF มีให้แล้ว ส่วนหนึ่งเป็นเพราะ Lattice ใช้ในการทดสอบส่วนประกอบหลักโดยไม่มีค่าใช้จ่ายบางส่วนจาก CF ที่ซับซ้อนมากขึ้น แต่คุณยังสามารถใช้ Lattice ในสภาพแวดล้อมที่มีความน่าเชื่อถือสูงภายในซึ่งการรักษาความปลอดภัยและการเช่าหลายรายไม่ได้เป็นสิ่งที่น่ากังวลมากนัก .
นอกจากนี้ยังควรค่าแก่การกล่าวถึงว่า CloudFoundry และ Warden (เอนจิ้นคอนเทนเนอร์) ก่อนหน้า Docker ด้วยเช่นกันภายในสองสามปี
ในทางกลับกัน Kubernetes เป็นโครงการค่อนข้างใหม่ที่ Google พัฒนาขึ้นตามการใช้งานคอนเทนเนอร์หลายปีกับ BORG และ Omega Kubernetes อาจถูกมองว่าเป็นการจัดระเบียบคอนเทนเนอร์รุ่นที่ 3 ที่ Google เช่นเดียวกับ Diego คือการจัดเตรียมคอนเทนเนอร์รุ่นที่ 3 ที่ Pivotal / VMware (v1 เขียนที่ VMware; v2 ที่ VMware พร้อมความช่วยเหลือของ Pivotal Labs; v3 ที่ Pivotal หลังจากเข้ายึดโครงการ) .