อัปเดต!. ในความคิดเห็นผู้อ่านคนหนึ่งแนะนำให้ลอง
พูดตามตรงฉันยอมแพ้และยอมแพ้
ใช่แล้ว ฉันใช้เวลามากมายในการตัดสินใจว่าจะเลือกพื้นที่จัดเก็บข้อมูลใดเมื่อประเมินสแต็ก Kubernetes ที่เป็นไปได้ ฉันชอบโซลูชันโอเพ่นซอร์สมากกว่า ไม่ใช่แค่เพราะราคาเท่านั้น แต่ฉันได้ดูตัวเลือกที่ต้องชำระเงินสองสามตัวเลือกด้วยความอยากรู้อยากเห็น เนื่องจากมีเวอร์ชันฟรีที่มีข้อจำกัด ฉันได้จดตัวเลขบางส่วนจากการทดสอบล่าสุดเมื่อเปรียบเทียบตัวเลือกต่างๆ และตัวเลขเหล่านี้อาจเป็นที่สนใจสำหรับผู้ที่เรียนรู้เกี่ยวกับพื้นที่เก็บข้อมูล Kubernetes แม้ว่าตอนนี้ฉันจะบอกลา Kubernetes เป็นการส่วนตัวแล้วก็ตาม ฉันยังต้องการที่จะพูดถึง
ฉันทดสอบโซลูชันการจัดเก็บข้อมูล 6-7 รายการ:
โอเพ่นอีบีเอส
อย่างที่บอกไปแล้ว
โดยสรุป Jiva นั้นเร็วกว่าเล็กน้อย และโดยทั่วไป LocalPV ก็เร็ว ไม่แย่ไปกว่าเกณฑ์มาตรฐานของดิสก์โดยตรง ปัญหาของ LocalPV คือสามารถเข้าถึงโวลุ่มได้บนโหนดที่เตรียมไว้เท่านั้น และไม่มีการจำลองเลย ฉันมีปัญหาในการกู้คืนข้อมูลสำรองผ่าน
โกง
Rook ยังเป็นโอเพ่นซอร์สและแตกต่างจากตัวเลือกที่เหลือในรายการตรงที่เป็นตัวจัดการพื้นที่จัดเก็บข้อมูลที่ดำเนินงานการจัดการพื้นที่จัดเก็บข้อมูลที่ซับซ้อนด้วยแบ็กเอนด์ที่แตกต่างกัน เช่น
Ceph มีสแนปช็อต แต่เท่าที่ฉันรู้ ไม่สามารถนำมาใช้โดยตรงใน Rook/Kubernetes ได้ จริงอยู่ที่ฉันไม่ได้เจาะลึกเรื่องนี้ แต่ไม่มีการสำรองข้อมูลนอกสถานที่ ดังนั้นคุณจะต้องใช้บางอย่างกับ Velero/Restic แต่มีการสำรองข้อมูลระดับไฟล์เท่านั้น ไม่ใช่สแน็ปช็อต ณ เวลาใดเวลาหนึ่ง สิ่งที่ฉันชอบเกี่ยวกับ Rook มากคือการทำงานกับ Ceph ได้ง่ายเพียงใด โดยซ่อนสิ่งที่ซับซ้อนเกือบทั้งหมดและมีเครื่องมือในการพูดคุยกับ Ceph โดยตรงเพื่อแก้ไขปัญหา น่าเสียดายที่ในระหว่างการทดสอบความเครียดของวอลุ่ม Ceph ฉันยังคงประสบปัญหาอยู่
แรนเชอร์ ลองฮอร์น
ฉันชอบลองฮอร์นมาก ในความคิดของฉัน นี่เป็นวิธีแก้ปัญหาที่น่าหวัง จริงอยู่ นักพัฒนาเอง (Rancher Labs) ยอมรับว่ายังไม่เหมาะกับสภาพแวดล้อมการทำงาน และสิ่งนี้แสดงให้เห็น เป็นโอเพ่นซอร์สและมีประสิทธิภาพที่ดี (แม้ว่าจะยังไม่ได้เพิ่มประสิทธิภาพก็ตาม) แต่โวลุ่มใช้เวลานานมากในการเชื่อมต่อกับพ็อด และในกรณีที่เลวร้ายที่สุดจะใช้เวลา 15-16 นาที โดยเฉพาะอย่างยิ่งหลังจากกู้คืนข้อมูลสำรองขนาดใหญ่หรือ การอัพเกรดภาระงาน มีสแน็ปช็อตและการสำรองข้อมูลนอกสถานที่ของสแน็ปช็อตเหล่านี้ แต่ใช้ได้กับวอลุ่มเท่านั้น ดังนั้นคุณยังคงต้องใช้บางอย่างเช่น Velero เพื่อสำรองข้อมูลทรัพยากรอื่น ๆ การสำรองและกู้คืนข้อมูลมีความน่าเชื่อถือมาก แต่ช้าอย่างไม่เหมาะสม อย่างจริงจังเพียงช้าอย่างไม่น่าเชื่อ การใช้งาน CPU และโหลดของระบบมักจะเพิ่มขึ้นอย่างรวดเร็วเมื่อทำงานกับข้อมูลจำนวนปานกลางใน Longhorn มีแดชบอร์ดที่สะดวกในการจัดการ Longhorn ฉันบอกไปแล้วว่าฉันชอบลองฮอร์น แต่มันต้องมีการปรับปรุงบ้าง
ระบบปฏิบัติการสตอเรจ
StorageOS เป็นผลิตภัณฑ์ที่ต้องชำระเงินตัวแรกในรายการ มีเวอร์ชันสำหรับนักพัฒนาซอฟต์แวร์ที่มีขนาดพื้นที่จัดเก็บข้อมูลที่มีการจัดการจำกัดที่ 500GB แต่ฉันไม่คิดว่าจะมีการจำกัดจำนวนโหนด แผนกขายบอกฉันว่าราคาเริ่มต้นที่ 125 ดอลลาร์ต่อเดือนสำหรับ 1 TB ถ้าฉันจำไม่ผิด มีแดชบอร์ดพื้นฐานและ CLI ที่สะดวกสบาย แต่มีบางอย่างแปลก ๆ เกิดขึ้นกับประสิทธิภาพ: ในการวัดประสิทธิภาพบางอย่างมันค่อนข้างดี แต่ในการทดสอบความเครียดของระดับเสียงฉันไม่ชอบความเร็วเลย โดยทั่วไปฉันไม่รู้ว่าจะพูดอะไร ฉันก็เลยไม่ค่อยเข้าใจมากนัก ที่นี่ไม่มีการสำรองข้อมูลนอกสถานที่ และคุณจะต้องใช้ Velero กับ Retic เพื่อสำรองข้อมูลโวลุ่มด้วย แปลกเพราะสินค้ามีการชำระเงิน และนักพัฒนาก็ไม่กระตือรือร้นที่จะสื่อสารบน Slack
นกเล็กชนิดหนึ่ง
ฉันเรียนรู้เกี่ยวกับ Robin บน Reddit จากผู้อำนวยการด้านเทคนิคของพวกเขา ฉันไม่เคยได้ยินเกี่ยวกับเขามาก่อน อาจเป็นเพราะฉันกำลังมองหาวิธีแก้ปัญหาฟรี แต่ Robin ก็ได้รับค่าตอบแทน พวกเขามีเวอร์ชันฟรีที่ค่อนข้างใจกว้างพร้อมพื้นที่เก็บข้อมูล 10TB และสามโหนด โดยรวมแล้วผลิตภัณฑ์ค่อนข้างดีและมีคุณสมบัติที่ดี มี CLI ที่ยอดเยี่ยม แต่สิ่งที่ยอดเยี่ยมที่สุดคือคุณสามารถสแนปช็อตและสำรองข้อมูลแอปพลิเคชันทั้งหมดได้ (ในตัวเลือกทรัพยากรซึ่งเรียกว่า Helm release หรือ “แอปแบบยืดหยุ่น”) รวมถึงวอลุ่มและทรัพยากรอื่นๆ ดังนั้นคุณจึงสามารถทำได้โดยไม่ต้องใช้ Velero และทุกอย่างจะยอดเยี่ยมถ้าไม่ใช่สำหรับรายละเอียดเล็ก ๆ น้อย ๆ: หากคุณกู้คืน (หรือ "นำเข้า" ตามที่เรียกใน Robin) แอปพลิเคชันบนคลัสเตอร์ใหม่ - ตัวอย่างเช่นในกรณีของการกู้คืนจากภัยพิบัติ - การฟื้นฟู แน่นอนใช้งานได้ แต่ยังคงสำรองข้อมูลแอปพลิเคชันต่อไปซึ่งเป็นสิ่งต้องห้าม สิ่งนี้เป็นไปไม่ได้ในรุ่นนี้ ดังที่ผู้พัฒนาได้ยืนยันแล้ว พูดง่ายๆ ก็คือแปลก โดยเฉพาะอย่างยิ่งเมื่อพิจารณาถึงข้อดีอื่นๆ (เช่น การสำรองและกู้คืนข้อมูลที่รวดเร็วอย่างไม่น่าเชื่อ) นักพัฒนาสัญญาว่าจะแก้ไขทุกอย่างในรุ่นถัดไป โดยทั่วไปแล้วประสิทธิภาพดี แต่ฉันสังเกตเห็นสิ่งแปลก: ถ้าฉันรันการวัดประสิทธิภาพโดยตรงบนวอลลุมที่เชื่อมต่อกับโฮสต์ ความเร็วในการอ่านจะเร็วกว่าการรันวอลลุมเดียวกันจากภายในพ็อดมาก ผลลัพธ์อื่นๆ ทั้งหมดเหมือนกัน แต่ในทางทฤษฎีแล้วไม่ควรมีความแตกต่างกัน แม้ว่าพวกเขากำลังดำเนินการแก้ไขอยู่ แต่ฉันก็ไม่พอใจกับปัญหาในการกู้คืนและสำรองข้อมูล - ฉันคิดว่าในที่สุดฉันก็พบวิธีแก้ปัญหาที่เหมาะสมแล้ว และฉันก็เต็มใจที่จะจ่ายเงินเมื่อฉันต้องการพื้นที่เพิ่มหรือเซิร์ฟเวอร์เพิ่มเติม
portworx
ฉันไม่มีอะไรจะพูดมากที่นี่ นี่เป็นผลิตภัณฑ์ที่ต้องชำระเงิน เจ๋งและแพงไม่แพ้กัน การแสดงนั้นยอดเยี่ยมมาก นี่คือตัวบ่งชี้ที่ดีที่สุดจนถึงตอนนี้ Slack บอกฉันว่าราคาเริ่มต้นที่ 205 ดอลลาร์ต่อเดือนต่อโหนด ตามที่ระบุไว้ใน GKE Marketplace ของ Google ไม่รู้ว่าถ้าซื้อตรงจะถูกกว่าไหม ฉันไม่สามารถจ่ายได้ ดังนั้นฉันจึงผิดหวังมากที่ใบอนุญาตสำหรับนักพัฒนา (สูงสุด 1 TB และ 3 โหนด) นั้นไม่มีประโยชน์จริง ๆ กับ Kubernetes เว้นแต่คุณจะพอใจกับการจัดเตรียมแบบคงที่ ฉันหวังว่า Volume License จะดาวน์เกรดเป็นนักพัฒนาโดยอัตโนมัติเมื่อสิ้นสุดช่วงทดลองใช้งาน แต่นั่นกลับไม่เกิดขึ้น สิทธิ์การใช้งานสำหรับนักพัฒนาสามารถใช้ได้โดยตรงกับ Docker เท่านั้น และการกำหนดค่าใน Kubernetes นั้นยุ่งยากและจำกัดมาก แน่นอนว่าฉันชอบโอเพ่นซอร์สมากกว่า แต่ถ้าฉันมีเงิน ฉันจะเลือก Portworx อย่างแน่นอน จนถึงตอนนี้ ประสิทธิภาพของมันก็ไม่สามารถเปรียบเทียบกับตัวเลือกอื่นๆ ได้
ลินสตอร์
ฉันเพิ่มส่วนนี้หลังจากการเผยแพร่โพสต์ เมื่อผู้อ่านคนหนึ่งแนะนำให้ลองใช้ Linstor ฉันลองแล้วฉันชอบมัน! แต่เรายังต้องขุดลึกลงไป ตอนนี้ฉันสามารถพูดได้ว่าประสิทธิภาพก็ไม่เลว (ฉันเพิ่มผลลัพธ์การวัดประสิทธิภาพด้านล่าง) โดยพื้นฐานแล้ว ฉันได้รับประสิทธิภาพเช่นเดียวกับดิสก์โดยตรง โดยไม่มีค่าใช้จ่ายใดๆ (อย่าถามว่าทำไม Portworx ถึงมีตัวเลขที่ดีกว่าเกณฑ์มาตรฐานของไดรฟ์โดยตรง ฉันไม่รู้เลย ฉันคิดว่าเป็นเวทย์มนตร์) ดังนั้น Linstor จึงดูมีประสิทธิภาพมากจนถึงตอนนี้ การติดตั้งไม่ใช่เรื่องยาก แต่ก็ไม่ง่ายเหมือนกับตัวเลือกอื่นๆ ก่อนอื่น ฉันต้องติดตั้ง Linstor (โมดูลเคอร์เนลและเครื่องมือ/บริการ) และกำหนดค่า LVM สำหรับการจัดเตรียมแบบบางและการสนับสนุนสแน็ปช็อตภายนอก Kubernetes บนโฮสต์โดยตรง จากนั้นสร้างทรัพยากรที่จำเป็นในการใช้พื้นที่เก็บข้อมูลจาก Kubernetes ฉันไม่ชอบที่มันใช้งานไม่ได้บน CentOS และฉันต้องใช้ Ubuntu แน่นอนว่าไม่แย่นัก แต่น่ารำคาญนิดหน่อย เพราะเอกสาร (ซึ่งก็ยอดเยี่ยมมาก) กล่าวถึงแพ็คเกจต่างๆ ที่ไม่สามารถพบได้ในที่เก็บ Epel ที่ระบุ Linstor มีสแน็ปช็อต แต่ไม่ใช่การสำรองข้อมูลนอกสถานที่ ดังนั้นฉันจึงต้องใช้ Velero กับ Retic อีกครั้งเพื่อสำรองข้อมูลวอลลุม ฉันต้องการสแน็ปช็อตแทนการสำรองข้อมูลระดับไฟล์ แต่สิ่งนี้สามารถยอมรับได้หากโซลูชันมีประสิทธิภาพและเชื่อถือได้ Linstor เป็นโอเพ่นซอร์สแต่ได้ให้การสนับสนุนแล้ว ถ้าฉันเข้าใจถูกต้อง ก็สามารถใช้ได้โดยไม่มีข้อจำกัด แม้ว่าคุณจะไม่มีสัญญาสนับสนุนก็ตาม แต่สิ่งนี้จะต้องมีการชี้แจง ฉันไม่รู้ว่า Linstor ผ่านการทดสอบสำหรับ Kubernetes อย่างไร แต่ชั้นพื้นที่จัดเก็บข้อมูลนั้นอยู่นอก Kubernetes และเห็นได้ชัดว่าโซลูชันไม่ปรากฏขึ้นเมื่อวานนี้ ดังนั้นจึงอาจได้รับการทดสอบในสภาพจริงแล้ว มีวิธีแก้ไขที่จะทำให้ฉันเปลี่ยนใจและกลับไปใช้ Kubernetes อีกครั้งหรือไม่ ฉันไม่รู้. เรายังต้องเจาะลึกและศึกษาการจำลองแบบ มาดูกัน. แต่ความประทับใจแรกนั้นดี ฉันอยากจะใช้คลัสเตอร์ Kubernetes ของตัวเองแทน Heroku เพื่อให้มีอิสระมากขึ้นและเรียนรู้สิ่งใหม่ๆ เนื่องจาก Linstor ติดตั้งไม่ง่ายเหมือนคนอื่นๆ ฉันจะเขียนโพสต์เกี่ยวกับเรื่องนี้เร็วๆ นี้
เกณฑ์มาตรฐาน
น่าเสียดายที่ฉันไม่ได้จดบันทึกการเปรียบเทียบไว้มากนักเพราะฉันไม่คิดว่าจะเขียนถึงการเปรียบเทียบนั้น ฉันมีเพียงผลลัพธ์จากการวัดประสิทธิภาพ fio พื้นฐานและสำหรับคลัสเตอร์โหนดเดียวเท่านั้น ดังนั้นฉันจึงยังไม่มีตัวเลขสำหรับการกำหนดค่าที่จำลองแบบ แต่จากผลลัพธ์เหล่านี้ คุณสามารถเข้าใจคร่าวๆ ได้ว่าคาดหวังอะไรจากแต่ละตัวเลือก เพราะฉันเปรียบเทียบพวกมันบนเซิร์ฟเวอร์คลาวด์เดียวกัน 4 คอร์ RAM 16 GB พร้อมดิสก์เพิ่มเติม 100 GB สำหรับโวลุ่มที่ทดสอบ ฉันรันการวัดประสิทธิภาพสามครั้งสำหรับแต่ละโซลูชันและคำนวณผลลัพธ์โดยเฉลี่ย พร้อมทั้งรีเซ็ตการตั้งค่าเซิร์ฟเวอร์สำหรับแต่ละผลิตภัณฑ์ ทั้งหมดนี้ไม่มีหลักวิทยาศาสตร์เลย เพียงเพื่อให้คุณมีแนวคิดทั่วไป ในการทดสอบอื่นๆ ฉันคัดลอกรูปภาพและวิดีโอขนาด 38 GB จากเล่มนี้เพื่อทดสอบการอ่านและการเขียน แต่น่าเสียดายที่ฉันไม่ได้บันทึกตัวเลขไว้ กล่าวโดยย่อ: Portworkx เร็วกว่ามาก
สำหรับการวัดประสิทธิภาพปริมาณ ฉันใช้รายการนี้:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: dbench
spec:
storageClassName: ...
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
apiVersion: batch/v1
kind: Job
metadata:
name: dbench
spec:
template:
spec:
containers:
- name: dbench
image: sotoaster/dbench:latest
imagePullPolicy: IfNotPresent
env:
- name: DBENCH_MOUNTPOINT
value: /data
- name: FIO_SIZE
value: 1G
volumeMounts:
- name: dbench-pv
mountPath: /data
restartPolicy: Never
volumes:
- name: dbench-pv
persistentVolumeClaim:
claimName: dbench
backoffLimit: 4
ขั้นแรก ฉันสร้างวอลลุมที่มีคลาสพื้นที่จัดเก็บที่เหมาะสม จากนั้นจึงรันงานกับ fio เบื้องหลัง ฉันใช้เวลา 1 GB เพื่อประเมินประสิทธิภาพและไม่ต้องรอนานเกินไป นี่คือผลลัพธ์:
ฉันได้ไฮไลต์ค่าที่ดีที่สุดสำหรับแต่ละเมตริกด้วยสีเขียวและค่าที่แย่ที่สุดเป็นสีแดง
ข้อสรุป
อย่างที่คุณเห็น ในกรณีส่วนใหญ่ Portworx ทำงานได้ดีกว่าตัวอื่น แต่สำหรับฉันมันแพง ฉันไม่รู้ว่า Robin มีราคาเท่าไหร่ แต่มีเวอร์ชันฟรีที่ยอดเยี่ยม ดังนั้นหากคุณต้องการผลิตภัณฑ์แบบชำระเงิน คุณสามารถลองใช้ได้ (หวังว่าพวกเขาจะแก้ไขปัญหาด้วยการคืนค่าและการสำรองข้อมูลในเร็วๆ นี้) จากโปรแกรมฟรีทั้งสามตัว ฉันมีปัญหาน้อยที่สุดกับ OpenEBS แต่ประสิทธิภาพของมันต่ำมาก น่าเสียดายที่ฉันไม่ได้บันทึกผลลัพธ์เพิ่มเติม แต่ฉันหวังว่าตัวเลขและความคิดเห็นของฉันจะช่วยคุณได้
ที่มา: will.com