มีเซิร์ฟเวอร์เครื่องหนึ่งที่มีผู้ใช้ร่วมกันหลายสิบคน
แต่ละคนกำลังให้บริการโปรเจกต์ของตัวเองผ่านคอนเทนเนอร์
เมื่อเกิดปัญหาอย่างเช่นการรีบูตเซิร์ฟเวอร์ ผู้ดูแลระบบจะรับมือกับคอนเทนเนอร์เหล่านี้ได้ค่อนข้างลำบาก
ควรให้แต่ละคนส่งคำสั่งสำหรับรัน Docker container ที่ใช้อยู่เป็นประจำมา แล้วให้ผู้ดูแลรันให้ทีละอันหรือไม่
หรือควรทำเป็น Docker Compose แล้วต้องเข้าไปในโฟลเดอร์ของแต่ละโปรเจกต์ทีละอันเพื่อ compose up ให้ หรือแนวทางอื่น ๆ
ในฐานะผู้ดูแลระบบ ขอคำแนะนำว่าควรบริหารจัดการคอนเทนเนอร์จำนวนมากอย่างไร
8 ความคิดเห็น
ผมก็คิดคล้ายกับคุณ tujuc เช่นกัน แต่ผมมองว่าการนำ k8s มาใช้คนเดียวโดยไม่มีผู้เชี่ยวชาญ แล้วจะดูแลระบบให้เสถียรโดยไม่เกิดปัญหาเลยนั้นมีความเสี่ยงพอสมควร
แต่กรณีนี้คุณบอกว่าเป็นสถานการณ์ที่มีการใช้เซิร์ฟเวอร์ร่วมกัน 4 เครื่องโดยคนหลายสิบคน เลยค่อนข้างตัดสินใจยากอยู่บ้าง
อย่างไรก็ตาม แทนที่จะตัดสินจากจำนวนคนที่เกี่ยวข้อง ถ้าสถานการณ์คือมีจำนวนโปรแกรมฝั่งเซิร์ฟเวอร์มากเกินไปและซับซ้อนมาก ก็น่าจะคุ้มที่จะพิจารณาเรียนรู้ k8s ครับ
ถ้าเป็นผมและอยู่ในสถานการณ์เดียวกับเจ้าของโพสต์ ผมน่าจะค่อย ๆ ปรับปรุงสภาพแวดล้อมตามขั้นตอนด้านล่างนี้
ขอบคุณทุกท่านที่ช่วยตอบครับ/ค่ะ เป้าหมายของปีนี้คงต้องตั้งไว้เป็นการนำ Kubernetes มาใช้งานแล้วครับ/ค่ะ
วิธีที่ง่ายที่สุดคือทำให้คอนเทนเนอร์รันแบบเดมอน เพื่อให้ตอนที่ OS บูตขึ้นมา คอนเทนเนอร์ก็เริ่มทำงานด้วย
ถ้าเป็นสาย EL (Enterprise Linux, ใช้เรียกรวมตระกูล RHEL) ก็สามารถลงทะเบียนคอนเทนเนอร์เป็นบริการของ systemd ได้ครับ เห็นว่าเรียกว่า Quadlet
ถ้าดูจากคำถามอย่างเดียว ก็ดูเหมือนจะแก้ได้ด้วย
depend on,restart alwaysหรือunless stopedแต่ก็น่าจะมีสถานการณ์ยาก ๆ ที่ไม่ได้รวมอยู่ในคำถามนะครับ แต่ถ้ามีระดับหลายสิบคน สุดท้ายก็น่าจะต้องไปใช้ Kubernetesเอาคำถามนี้ไปถาม AI ตรง ๆ ก็น่าจะหาคำตอบได้ครับ
ถ้ามีข้อมูลข้างต้น จะคุยกันได้ง่ายขึ้นมากครับ
ถ้าจะตอบโดยยึดจากที่คุณบอกมาแบบตรง ๆ....
ผมไม่แน่ใจว่าทำไมถึงต้องมีคำสั่งรันคอนเทนเนอร์ ขอให้ทำไฟล์ Compose ขึ้นมา แล้วจัดให้ทุกอย่างสามารถรันได้ด้วยคำสั่งเดียวกันทั้งหมด (
docker composecommand) โดยอิงจากไฟล์นั้นจะดีที่สุด:) ในเมื่อคุณเป็นผู้ดูแล ก็สั่งให้ทำแบบนั้นได้เลยครับ เดี๋ยวคนอื่นก็ช่วยทำให้เอง ดันต่อไปได้เลย :)
ส่วนตัวผมมองว่า k8s เป็นโซลูชันที่ภาระค่อนข้างมากสำหรับสภาพแวดล้อมที่ต้องดูแลคนเดียว เลยไม่ค่อยแนะนำเท่าไร
ผมคิดว่าโครงสร้างพื้นฐานควรจัดให้เรียบง่ายไว้ก่อนจะดีที่สุดเสมอ
มีเซิร์ฟเวอร์ on-premises 4 เครื่องครับ
ทำคนเดียวครับ
ตอนนี้หลังผ่านเรื่องความปลอดภัยแล้ว บริษัทเพิ่งเริ่มนำ Docker มาใช้ได้ 4 เดือน และผมรู้จักแค่แนวคิดของ k8s เท่านั้น การนำ HARBOR สำหรับ Docker เข้ามาใช้ก็คงจะเป็นงานที่ผมต้องทำในเร็ว ๆ นี้ และหลังจากติดตั้ง Harbor แล้วก็น่าจะมีการบล็อก Docker Hub ครับ น่าจะกลายเป็นว่ามีแค่ผมคนเดียวที่เปิดใช้ Docker Hub ได้ แล้วถ้ามีคำขอเข้ามา ผมก็จะเป็นคนดึงอิมเมจจาก Docker Hub แล้วอัปโหลดขึ้น Harbor ภายในบริษัท
ผมมองว่าการฝืนใช้คำสั่ง compose และต้องเข้าไปหาโฟลเดอร์ของแต่ละโปรเจ็กต์เพื่อรัน compose up ทีละตัวเป็นเรื่องที่ไม่สมจริงเลยไม่ได้ทำแบบนั้น แต่แทนที่จะทำแบบนั้น ผมกลับขอให้ใช้คำสั่ง Docker ด้วย absolute path แทน ซึ่งช่วงหลังมานี้ผมเริ่มสลัดความคิดไม่ได้ว่านี่อาจเป็นแนวทางที่ผิดครับ
แค่กำหนดตัวเลือกรีสตาร์ตของ Docker ก็พอไม่ใช่เหรอ?
ในกรณีแบบนี้ แนะนำให้ใช้ Kubernetes และจัดสรร context ให้กับผู้ใช้แต่ละคนจะดีกว่าครับ
และยังสามารถจำกัดสิทธิ์ให้ผู้ใช้แต่ละคนใช้งานได้เฉพาะ context นั้นได้ด้วย