‫จนถึงตอนนี้สำหรับ Kubernetes เรายังไม่ได้พูดถึงที่เก็บข้อมูลหรือโวลุ่ม
‫คุณได้จัดการกับสิ่งนั้นด้วย Docker จากนั้นกับ
‫Compose และ Swarm และในระดับหนึ่ง มันก็เหมือนกันใน
‫Kubernetes
‫คุณมีตู้คอนเทนเนอร์ และเราคิดว่าตู้คอนเทนเนอร์นั้นไร้สัญชาติ
‫หมายความว่าเมื่อคุณทิ้งคอนเทนเนอร์นั้น ทุกอย่างในนั้นจะหายไป
‫เมื่อคุณแทนที่คอนเทนเนอร์ด้วยการอัปเดต หรือคุณเปลี่ยนแปลงบางสิ่งและนำไปใช้กับ
‫kubectl คุณจะสูญเสียคอนเทนเนอร์ คุณจะสูญเสียทุกอย่างในนั้น
‫เห็นได้ชัดว่า Kubernetes ก็เหมือนกับผู้จัดออร์เคสตราอื่นๆ
‫ต้องมีวิธีในการเก็บข้อมูลถาวร
‫มันยิ่งกว่าปริมาณของตัวเองเสียอีก
‫แม้แต่คอนเทนเนอร์และการปรับใช้อาจแตกต่างกันใน Kubernetes
‫ด้วยสิ่งที่เรียกว่า StatefulSets
‫เหล่านี้เป็นทรัพยากรที่แตกต่างจากการทำให้ใช้งานได้
‫โดยพื้นฐานแล้วได้รับการออกแบบโดยใช้ฐานข้อมูลและสิ่งต่าง ๆ ที่ต้องการความคงอยู่มากขึ้น
‫รวมถึงชื่อเดียวกัน IPs เดียวกันเช่นนั้น
‫เราไม่ได้นำสิ่งนั้นออกจากประตูด้วย
‫Swarm หรือ Docker
‫ไม่มีทางที่คุณจะเก็บคุณลักษณะต่างๆ เหล่านั้นไว้ระหว่างคอนเทนเนอร์ได้จริงๆ
‫StatefulSets เป็นฟีเจอร์ใหม่ใน
‫Kubernetes ที่เพิ่งออกมาไม่นาน
‫นี่คือสิ่งที่คุณจะพิจารณาหากคุณกำลังพิจารณาฐานข้อมูลหรือบางสิ่งที่มีความอ่อนไหวต่อการเปลี่ยนแปลง
‫เช่น ชื่อ ที่อยู่ IP และวอลุ่ม และข้อมูลถาวร
‫คำเตือนที่นี่
‫เหตุผลที่เราจะไม่พูดถึงรายละเอียดมากนัก
‫เพราะฉันไม่แนะนำให้ปรับใช้ Kubernetes ครั้งแรกของคุณเกี่ยวข้องกับ
‫StatefulSets จำนวนมากในนั้น
‫ตามหลักการแล้ว
‫การปรับใช้ orchestrator ครั้งแรกของ orchestrator ไม่ว่าจะเป็น Swarm หรือ Kubernetes
‫นั้นเกี่ยวข้องกับคนไร้สัญชาติเท่านั้น และคุณก็รู้ ทำให้มันเรียบง่าย
‫อาจแค่ทำส่วนหน้าของเว็บหรือ
‫API บางตัว หรือคุณลักษณะของผู้ปฏิบัติงาน หรือบางอย่างที่ไม่เกี่ยวข้องกับฐานข้อมูล
‫ที่จริงแล้ว
‫ถ้าคุณสามารถใช้ฐานข้อมูลบนคลาวด์ได้ ให้ทำอย่างนั้น
‫ฉันแนะนำการเอาท์ซอร์สฐานข้อมูลของคุณเสมอ เว้นแต่ว่าคุณมีข้อกำหนดเฉพาะที่คุณไม่สามารถหลีกเลี่ยงได้สำหรับการดำเนินการด้วยตนเอง
‫ในขั้นต้น
‫การประสานกันได้รับการออกแบบโดยเน้นที่คอนเทนเนอร์ที่ไม่เปลี่ยนรูป แจกจ่าย
‫และเปลี่ยนได้
‫แนวคิดเรื่องความคงเส้นคงวานี้จะช่วยเพิ่มงาน
‫ความซับซ้อน และการทดสอบให้คุณมากขึ้น
‫ตามหลักการแล้ว
‫คุณไม่ต้องกังวลเกี่ยวกับเรื่องนี้
‫ต่อมา เมื่อคุณคุ้นเคยกับสิ่งอื่นๆ รอบๆ Kubernetes มากขึ้นแล้ว
‫คุณสามารถกลับมาพูดว่า ตอนนี้ฉันต้องการพิจารณาฐานข้อมูลของฉัน
‫ไม่ใช่ว่าคุณไม่ควรเรียกใช้ฐานข้อมูลในกลุ่ม
‫มันเป็นเพียงการทำงานมากขึ้น มันยากกว่า
‫ฐานข้อมูลและที่เก็บข้อมูลถาวรนั้นยากกว่าเสมอและมีรายละเอียดมากขึ้นในการทำงานด้วย
‫มีเคล็ดลับมืออาชีพของฉัน
‫ด้วยคอนเทนเนอร์ใดๆ คุณสามารถเพิ่มโวลุ่มที่คล้ายกับที่คุณทำใน
‫Swarm และใน Docker และ Docker Compose
‫คุณสามารถเพิ่มคำสั่งปริมาณในเทมเพลตภายในข้อมูลจำเพาะ
‫หากคุณนึกถึงไฟล์ YAML เราสามารถใส่โวลุ่มลงไปได้ตามที่คุณคาดหวัง
‫และรูปแบบและรายละเอียดที่แน่นอนจะอยู่ในแหล่งข้อมูล
‫ไม่เหมือนกับ
‫Docker และ Swarm ที่โวลุ่มอยู่กับคอนเทนเนอร์ ในกรณีนี้คือในทางเทคนิคกับพ็อด
‫มันเชื่อมต่อกับแต่ละคอนเทนเนอร์
‫หรือเพียงหนึ่งคอนเทนเนอร์ ในพ็อด ถ้าคุณบอกให้ทำ
‫ดังนั้น คุณกำลังควบคุมมันที่ระดับคอนเทนเนอร์ แต่ความคงอยู่นั้นอยู่ที่ระดับพ็อด
‫มีคุณลักษณะใหม่กว่าที่เป็นไดรฟ์ข้อมูลแบบถาวร
‫ที่ใช้ได้กับสิ่งอื่นที่เรียกว่าการอ้างสิทธิ์
‫แนวคิดที่น่าสนใจของสิ่งนี้คือ
‫คุณกำลังใช้มัน หรือคุณกำหนดมัน
‫นอกพ็อด โดยพื้นฐานแล้ว คุณกำลังสร้างทรัพยากรนั้นด้วยตัวมันเอง
‫และจากนั้นคุณกำลังอ้างสิทธิ์ในทรัพยากรนั้นภายในข้อมูลจำเพาะของพ็อดของคุณ
‫เหตุผลที่น่าสนใจกว่าก็คือเมื่อ Kubernetes เข้ามาแทนที่องค์กร
‫คุณมักมีคนคอยดูแลพื้นที่จัดเก็บข้อมูล ซึ่งมักจะเป็นพื้นที่เก็บข้อมูลของบุคคลที่สาม
‫ซึ่งไม่ใช่ทีมเดียวกันกับที่ใช้ Kubernetes
‫พวกเขาจะเป็นคนที่เกี่ยวข้องกับการจัดการและสร้างวอลุ่มถาวรเหล่านี้
‫จากนั้นผู้ปรับใช้แอปพลิเคชันจะพูดว่า
‫เฮ้ ฉันต้องการไดรฟ์ข้อมูลประเภทนี้
‫ฉันจะอ้างสิทธิ์
‫SSD หรือเราอาจต้องการที่เก็บข้อมูล RAM หรือบางทีฉันต้องการ NFS หรืออะไรก็ตาม
‫ที่เก็บข้อมูลนั้นจะได้รับโดยอัตโนมัติเนื่องจากทีมจัดเก็บข้อมูลได้ตั้งค่าไว้ใน
‫Kubernetes แล้ว
‫นั่นเป็นแนวคิดเกี่ยวกับปริมาณที่คงอยู่
‫หากคุณต้องการพื้นที่จัดเก็บอย่างง่ายบนเซิร์ฟเวอร์เดียวชั่วคราวสำหรับพ็อด
‫ให้ใช้แอตทริบิวต์ไดรฟ์ข้อมูลมาตรฐาน
‫สิ่งสุดท้ายที่นี่คือการสร้างปลั๊กอิน
‫CSI ในประวัติของ Kubernetes
‫สิ่งใดก็ตามที่เป็นที่เก็บข้อมูลของบุคคลที่สาม
‫ไม่ว่าจะเป็นที่เก็บข้อมูลบนคลาวด์หรือที่เก็บข้อมูลของผู้ขายบุคคลที่สาม
‫หรือบางอย่างที่กำหนดเอง สิ่งนั้น ๆ จะถูกเพิ่มเข้าไปในทรี
‫นั่นหมายความว่ามันถูกเพิ่มลงในไบนารีของ Kubernetes
‫และส่งมาพร้อมกับ Kubernetes
‫นั่นหมายความว่า Kubernetes มาพร้อมกับพื้นที่จัดเก็บ Amazon
‫และ Azure ที่สร้างขึ้นตั้งแต่แกะกล่อง
‫มันค่อนข้างสะดวก แต่มันเพิ่มความท้าทายมากมาย
‫ส่วนใหญ่เกี่ยวข้องกับข้อเท็จจริงที่ว่าผู้ขายพื้นที่จัดเก็บข้อมูลในขณะนี้ได้ให้รหัสแก่แกนหลักของระบบของคุณ
‫ซึ่งคุณอาจไม่ต้องการด้วยซ้ำเพราะคุณอาจใช้ผู้ให้บริการพื้นที่เก็บข้อมูลเพียงรายเดียว
‫ดังนั้นเหตุใดจึงต้องมีทั้งหมด
‫นอกจากนี้ ผู้จำหน่ายพื้นที่จัดเก็บข้อมูลยังต้องควบคุมรอบการเผยแพร่ของตนตามรอบการเผยแพร่
‫Kubernetes และไม่ใช่รูปแบบที่ยืดหยุ่นมากนัก
‫ดังนั้น อุตสาหกรรมนี้จึงมารวมตัวกัน และเหมือนกับที่เคยทำกับระบบเครือข่าย
‫และด้วย Dockerfiles และรูปภาพเอง มันสร้างมาตรฐานขึ้นมา
‫มาตรฐานนั้นคือ CSI
‫ย่อมาจาก Container Storage Interface
‫ในตอนนี้จะมีปลั๊กอินเพื่อให้ผู้จำหน่ายพื้นที่จัดเก็บสามารถสร้างปลั๊กอินที่คุณจะติดตั้งบนโหนดทั้งหมด
‫และจะแตกต่างกันไปตามปลั๊กอินและคำแนะนำ
‫จากนั้นพวกเขาจะทำงานบน API มาตรฐานที่ CSI จัดเตรียมไว้ให้
‫เพื่อให้คอนเทนเนอร์ใดๆ ของคุณสามารถใช้ปลั๊กอินนั้นเพื่อไปยังที่จัดเก็บข้อมูลของตนได้
‫นั่นเป็นรุ่นที่ดีกว่าและยืดหยุ่นกว่ามาก
‫นั่นเป็นอนาคตของ Kubernetes แต่ก็ยังค่อนข้างใหม่
‫บ่อยครั้งในตัวอย่าง
‫และแม้แต่ผู้จำหน่ายพื้นที่จัดเก็บข้อมูลของคุณอาจแนะนำ
‫ขึ้นอยู่กับวุฒิภาวะของ CSI ที่คุณใช้ปลั๊กอินแบบเดิม ซึ่งมีอยู่ใน Kubernetes และพร้อมใช้งานทันที