Kubernetes เทียบกับ Docker: ทำความเข้าใจกับคอนเทนเนอร์และการจัดระเบียบ
หากคุณเคยเก็บไว้กับแนวโน้มล่าสุดในการพัฒนาซอฟต์แวร์มีสองคำที่คุณได้พบอย่างไม่ต้องสงสัยอีกครั้งและอีกครั้ง: หางและ Kubernetes ซึ่งเป็นหลักจดชวเลขสำหรับ ภาชนะบรรจุ และ การประสาน
คอนเทนเนอร์ Docker ช่วยเพิ่มความคล่องตัวในกระบวนการเคลื่อนย้ายแอปพลิเคชันผ่านการพัฒนาและการทดสอบและไปสู่การผลิตในขณะที่ทั้ง Docker และ Kubernetes ได้ช่วยกันคิดค้นวิธีการสร้างและใช้งานแอปพลิเคชันขึ้นมาใหม่โดยเป็นการรวบรวมไมโครเซอร์วิสแทนการใช้สแต็กเสาหิน
เหตุใด Docker และ Kubernetes จึงมีความสำคัญพวกเขาเปลี่ยนแปลงการพัฒนาซอฟต์แวร์อย่างไรและแต่ละอย่างมีบทบาทอย่างไรในกระบวนการนี้ ฉันจะพยายามตอบคำถามเหล่านี้ด้านล่าง
Docker และคอนเทนเนอร์
คอนเทนเนอร์ที่รองรับใน Linux, Windows และระบบปฏิบัติการสมัยใหม่อื่น ๆ - อนุญาตให้ซอฟต์แวร์ทำงานในสภาพแวดล้อมขนาดเล็กที่มีในตัวซึ่งแยกออกจากส่วนที่เหลือของระบบ คอนเทนเนอร์เปรียบเสมือน VM แต่ไม่ใช่ VM - มีขนาดเล็กกว่ามากเริ่มต้นและหยุดได้เร็วขึ้นและมีความยืดหยุ่นและพกพาได้มากกว่า เนื่องจากคอนเทนเนอร์สามารถหมุนขึ้นหรือลงหรือปรับขนาดเข้าหรือออกได้ในไม่กี่วินาทีจึงทำให้เรียกใช้แอปในสภาพแวดล้อมที่ยืดหยุ่นเช่นคลาวด์ได้ง่ายขึ้น
ลินุกซ์และระบบปฏิบัติการอื่น ๆ ได้รองรับแอพที่มีคอนเทนเนอร์มาหลายปีแล้ว แต่การทำงานกับคอนเทนเนอร์นั้นไม่ได้ใช้งานง่าย Docker ทั้งในรูปแบบโอเพ่นซอร์สและการค้าเป็นซอฟต์แวร์ที่ทำให้คอนเทนเนอร์เป็นสินค้าที่ใช้งานง่ายและเป็นมิตรกับนักพัฒนา Docker มีชุดเครื่องมือและอุปลักษณ์ทั่วไปสำหรับคอนเทนเนอร์เพื่อให้คุณสามารถจัดแพคเกจแอปในอิมเมจคอนเทนเนอร์ที่สามารถปรับใช้และใช้ซ้ำได้ง่ายในองค์กรของคุณเองหรือที่อื่น ๆ
ในระยะสั้น Docker ทำให้การสร้างอิมเมจคอนเทนเนอร์เป็นเวอร์ชันแชร์ย้ายไปรอบ ๆ และปรับใช้กับโฮสต์ที่เข้ากันได้กับ Docker เป็นคอนเทนเนอร์ที่รัน
ฉันจะใช้ Docker และคอนเทนเนอร์เมื่อใด
นักเทียบท่าและคอนเทนเนอร์เหมาะที่สุดสำหรับเมื่อคุณจัดการกับเวิร์กโหลดที่ต้องมีคุณสมบัติดังต่อไปนี้อย่างน้อยหนึ่งอย่าง:
- ความยืดหยุ่นในการปรับขนาดได้ คุณไม่รู้ว่าจะต้องใช้แอปกี่อินสแตนซ์เพื่อตอบสนองความต้องการ แอปหรือบริการที่มีคอนเทนเนอร์สามารถปรับขนาดได้ตามความต้องการโดยปรับใช้อินสแตนซ์ของคอนเทนเนอร์ให้น้อยลง
- การแยกตัว. คุณไม่ต้องการให้แอปยุ่งเกี่ยวกับแอปอื่น ๆ บางทีคุณอาจใช้แอปหลายเวอร์ชันเคียงข้างกันเพื่อตอบสนองการแก้ไข API ที่แตกต่างกัน หรือบางทีคุณอาจต้องการรักษาระบบพื้นฐานให้สะอาด (เป็นความคิดที่ดีเสมอ)
- การพกพา คุณต้องเรียกใช้แอปนี้ในสภาพแวดล้อมที่หลากหลายและคุณต้องการให้การตั้งค่าแต่ละครั้งสามารถทำซ้ำได้ คอนเทนเนอร์ช่วยให้คุณจัดแพ็กเกจสภาพแวดล้อมรันไทม์ทั้งหมดของแอปพลิเคชันของคุณทำให้แอปใช้งานได้ง่ายทุกที่ที่คุณพบโฮสต์ที่เข้ากันได้กับ Docker ไม่ว่าจะเป็นเดสก์ท็อปสำหรับนักพัฒนาเครื่องทดสอบ QA เตารีดในเครื่องหรือคลาวด์ระยะไกล
เรียนรู้เพิ่มเติมเกี่ยวกับ Docker และคอนเทนเนอร์
- Docker คืออะไร? จุดประกายสำหรับการปฏิวัติตู้คอนเทนเนอร์
- ทำไมคุณควรใช้ Docker และคอนเทนเนอร์
- เริ่มต้นกับ Docker
- ประโยชน์ที่ซ่อนอยู่ของ Docker สำหรับ QA
- 12 เครื่องมือโอเพนซอร์สที่ทำให้ Docker ดีขึ้น
- ข่าวนักเทียบท่าการวิเคราะห์วิธีการบทวิจารณ์และคำแนะนำเพิ่มเติม
Kubernetes และการจัดระเบียบตู้คอนเทนเนอร์
คอนเทนเนอร์ได้รับการออกแบบมาโดยส่วนใหญ่เพื่อแยกกระบวนการหรือแอปพลิเคชันออกจากกันและระบบพื้นฐาน การสร้างและปรับใช้คอนเทนเนอร์แต่ละตู้เป็นเรื่องง่าย แต่จะเกิดอะไรขึ้นถ้าคุณต้องการประกอบหลายคอนเทนเนอร์เช่นฐานข้อมูลส่วนหน้าของเว็บส่วนแบ็คเอนด์ด้านการคำนวณเข้าไว้ในแอปพลิเคชันขนาดใหญ่ที่สามารถจัดการเป็นหน่วยได้โดยไม่ต้องกังวลกับการปรับใช้การเชื่อมต่อการจัดการ และปรับขนาดของแต่ละคอนเทนเนอร์แยกกัน? คุณต้องมีวิธีในการ จัด ระเบียบชิ้นส่วนทั้งหมดให้เป็นส่วนที่ใช้งานได้ทั้งหมด
นั่นคืองานที่ Kubernetes ต้องทำ หากตู้คอนเทนเนอร์เป็นผู้โดยสารบนเรือ Kubernetes เป็นผู้อำนวยการฝ่ายเดินเรือ
Kubernetes ตามโครงการที่สร้างขึ้นที่ Google เป็นวิธีการทำให้การใช้งานและการจัดการแอปพลิเคชันหลายคอนเทนเนอร์เป็นไปโดยอัตโนมัติในหลาย ๆ โฮสต์โดยไม่ต้องจัดการแต่ละคอนเทนเนอร์โดยตรง นักพัฒนาจะอธิบายเค้าโครงของแอปพลิเคชันในหลายคอนเทนเนอร์รวมถึงรายละเอียดเช่นวิธีการใช้งานระบบเครือข่ายและที่เก็บข้อมูล Kubernetes จัดการส่วนที่เหลือขณะรันไทม์ นอกจากนี้ยังจัดการการจัดการรายละเอียดที่ยุ่งเหยิงเช่นความลับและการกำหนดค่าแอป
Kubernetes ต้องการความเชี่ยวชาญระดับหนึ่งเพื่อให้ใช้งานได้ดีแม้ว่าจะเป็นโซลูชันแบบครบวงจรมากกว่าที่เคยเป็นมาก็ตาม ความคืบหน้าในการใช้งานง่ายบางส่วนเกิดจากสูตรอาหารที่หาได้ง่ายสำหรับการใช้งานทั่วไป (แผนภูมิ Helm); บางส่วนเกิดจากการแจกจ่าย Kubernetes จำนวนมากที่ผลิตโดย บริษัท แบรนด์เนม (Red Hat, Canonical, Docker) ซึ่งทำงานร่วมกันกับแอปพลิเคชันที่เป็นที่นิยมและกรอบการพัฒนา
ฉันจะใช้ Kubernetes และการจัดระเบียบคอนเทนเนอร์ได้เมื่อใด
แอปคอนเทนเนอร์แบบเรียบง่ายที่ให้บริการผู้ใช้จำนวนน้อยโดยทั่วไปไม่จำเป็นต้องมีการควบคุมดูแล Kubernetes เพียงอย่างเดียว แต่หากแอปมีฟังก์ชันการทำงานที่ไม่สำคัญหรือมีผู้ใช้จำนวนมากก็ยากที่จะไม่สร้างวงล้อใหม่ที่ระบบการจัดเตรียม ต่อไปนี้เป็นกฎง่ายๆในการพิจารณาว่าเมื่อใดที่การจัดเรียงควรเข้าสู่ภาพ
- แอปของคุณมีความซับซ้อน แอปพลิเคชันใด ๆ ที่เกี่ยวข้องกับตู้คอนเทนเนอร์มากกว่าสองตู้อาจเหมาะกับใบเสร็จ ที่กล่าวว่าแอพที่เรียบง่ายที่ให้บริการผู้ใช้เพียงจำนวนน้อยอาจถูกปรับแต่งโดยใช้โซลูชันขั้นต่ำเช่น Docker swarm mode แทนที่จะเป็น Kubernetes
- แอปของคุณมีความต้องการสูงในการปรับขนาดและความยืดหยุ่น Kubernetes และ Orchestrator อื่น ๆ ช่วยให้คุณปรับสมดุลของโหลดและหมุนคอนเทนเนอร์เพื่อตอบสนองความต้องการอย่างเปิดเผยโดยการอธิบายสถานะที่ต้องการของระบบแทนการเข้ารหัสปฏิกิริยากับการเปลี่ยนแปลงเงื่อนไขด้วยมือ
- คุณต้องการใช้เทคนิค CI / CD สมัยใหม่ให้เกิดประโยชน์สูงสุด ระบบ Orchestration รองรับรูปแบบการปรับใช้สำหรับแอปที่ใช้การปรับใช้สีน้ำเงิน / เขียวหรือการอัปเกรดแบบต่อเนื่อง
อาจมีสักวันที่ Docker และ Kubernetes ถูกบดบังด้วยสิ่งที่เป็นนามธรรมที่เป็นมิตรกว่าและให้วิธีการที่หรูหรามากขึ้นในการสร้างและจัดการคอนเทนเนอร์ สำหรับตอนนี้ Docker และ Kubernetes เป็นสิ่งสำคัญที่จะต้องรู้และเข้าใจ
เรียนรู้เพิ่มเติมเกี่ยวกับ Kubernetes และการจัดระเบียบ
- Kubernetes คืออะไร? แพลตฟอร์มแอปพลิเคชันถัดไปของคุณ
- 4 เหตุผลที่คุณควรใช้ Kubernetes
- การกระจาย Kubernetes 10 แบบนำไปสู่การปฏิวัติตู้คอนเทนเนอร์
- จัดการ Kubernetes: AWS เทียบกับ Azure เทียบกับ Google Cloud
- สวัสดี MicroK8s: Kubernetes ที่เรียบง่ายกว่า
- มีอะไรใหม่ใน Kubernetes
- ข่าว Kubernetes วิธีใช้บทวิจารณ์คำแนะนำและการวิเคราะห์เพิ่มเติม