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 วิธีใช้บทวิจารณ์คำแนะนำและการวิเคราะห์เพิ่มเติม