Docker/Rancher Orchestration Frameworks

ว่าด้วยเรื่อง Rancher และ orchestration framework ต่าง ๆ


สำหรับ Rancher นั้นเอง อันที่จริงแล้วมันประกอบขึ้นมาจากหลาย ๆ ส่วนประกอบเข้าด้วยกัน ซึ่งในที่นี้จะพูดถึง orchestration framework เป็นหลัก อันได้แก่

  • Cattle — เป็นตัวมาตรฐานที่ติดมากับ Rancher เอง
  • Kubernetes — เป็นตัวจัดการ container โดย Google
  • Docker Swarm — เป็นตัวจัดการ container ของทาง Docker เอง

Cattle

Cattle เป็นตัวจัดการ container ที่มากับ Rancher ซึ่งพัฒนามาพร้อมกับ Rancher ตั้งแต่สร้าง จึงมีความเข้ากันได้สูง เริ่มมีความเสถียรมากพอในระดับหนึ่ง มีการจัดการ network ระหว่าง containers ให้โดยอัตโนมัติ สามารถใช้งานร่วมกับ distributed file system อย่าง GlusterFS และ NFS ได้ และมีกลไกในการตรวจสอบสภาพของ service stack ที่สร้างขึ้นมาอีกด้วย

และรองรับไฟล์ docker-compose.yml v.1 ที่ใช้ในการกำหนด configuration ต่าง ๆ ของ service (เช่น wordpress + MySQL) ที่ต้องการสร้างขึ้นมา แต่ยังสามารถกำหนดค่าที่จำเพาะกับ Rancher ได้ เช่น ต้องการ scale container เป็นจำนวนเท่าใด ผ่าน rancher-compose.yml ได้อีกด้วย

Docker Swarm

Docker Swarm เป็นตัวจัดการ container ของทาง Docker เอง ซึ่งออกแบบมาขยายความสามารถของการใช้ docker-compose (รองรับ docker-compose.yml v.2) และ Docker เดิมที่มีอยู่แล้วให้ครอบคลุมกรณีที่มีการทำงานกับ Host จำนวนมาก ๆ ได้ โดยใช้งานได้อย่างไม่ยากเย็นนัก โดยเฉพาะเมื่อใช้ร่วมกับ Rancher ก็ทำให้ลดขึ้นตอนของการจัดการ network และ service discovery ระหว่าง container ออกไป และมีความเข้ากันได้กับตัว docker สมบูรณ์ที่สุดจากทั้งสาม framework ที่กล่าวมา

Kubernetes

Kubernetes เป็นตัวจัดการ container จาก Google และมีโครงสร้างที่แตกต่างที่สุดจาก framework ทั้งหมดที่กล่าวมา โดยมีโครงสร้างหลัก ๆ ในระบบคือ pods, services, labels และ replication controllers

  • pods: เป็นกลุ่มของ container ที่ทำงานร่วมกันเป็น 1 Application ซึ่งอาจมีเพียง container เดียวหรือหลาย ๆ container ประกอบกันก็ได้
  • Labels and Selectors: เป็น key-value pair ที่ kubernetes ใช้ในการจัดกลุ่มและแบ่งหมวดหมู่ของทรัพยากรในระบบ เช่น pod หนึ่งอาจมี label ของ tier และ environment เป็นดังที่แสดงด้านล่างนี้
“tier” : “front-end”,
“environment”: “production”
  • services: ในระบบของ kubernetes คำนี้เป็นคำที่มีความหมายเฉพาะเจาะจง และอาจแตกต่างจากที่ใช้กันทั่วไป คือ service เป็นเสมือน interface และ load-balancers ของ pods แต่ละกลุ่ม ทำให้ pods มีความอิสระจากการใช้งานภายนอก กล่าวคือ แม้ว่า pods ที่ทำงานอยู่ภายในอาจจะไม่ใช่ตัวเดิม แต่ผู้ใช้บริการของ application นั้น ๆ ก็จะไม่รู้สึกถึงการเปลี่ยนแปลง เพราะมี service เป็นเสมือนส่วนติดต่อกับผู้ใช้บริการเพียงอย่างเดียว
  • Replication Controller: เป็นส่วนที่ใช้สำหรับกำหนดจำนวนของ horizontal scaling ว่าควรเป็นเท่าไร และทำการเพิ่ม-ลด pods ให้ตรงตามที่กำหนดไว้

บทสรุป

หากเริ่มต้นใช้งานระบบจัดการ container โดยที่ไม่มีระบบเก่าที่ทำงานอยู่ การเลือกใช้ Cattle ก็ดูจะเป็นทางเลือกที่เหมาะสมที่สุด เนื่องจากเป็น framework ที่มีความวุ่นวายน้อยที่สุดในการจัดการ และรองรับเทคโนโลยีต่าง ๆ ครอบคลุมการใช้งานของ Docker Swarm และมี Command Line Interface ที่คล้ายกับ Docker Swarm อีกด้วย

ถึงแม้โดยประสบการณ์แล้ว Docker Swarm เป็นทางเลือกที่น่าจะเหมาะที่สุด แต่เมื่อนำมาใช้ร่วมกับ Rancher ก็จะเห็นได้ว่า Cattle มีความเข้ากันได้กับ Rancher มากกว่า และ rancher-compose ก็มีความสามารถเหนือกว่า docker-compose ขึ้นไปอีกในด้านของการกำหนดตั้งค่าที่เกี่ยวข้องกับ scale ของ service และการจัดการ volume ของ container

ในส่วนของ kubernetes นั้น เป็น framework ที่มีความแตกต่างจากระบบอื่นค่อนข้างมาก ทั่งในแง่ของโครงสร้างภายใน และคำสั่งที่ใช้ในการทำงาน เป็น framework ที่มีความซับซ้อนในการใช้งานและมี learning curve ที่สูงกว่าตัวอื่น ๆ แต่ก็นับว่าเป็น orchestration framework ตัวแรกสุดที่เกิดขึ้นมาเพื่อใช้จัดการกับ docker container

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.