เมื่อวันที่ 29 มกราคม คณะกรรมการด้านเทคนิคของ CNCF (Cloud Native Computing Foundation) องค์กรเบื้องหลัง Kubernetes, Prometheus และผลิตภัณฑ์โอเพ่นซอร์สอื่นๆ จากโลกแห่งคอนเทนเนอร์และคลาวด์เนทิฟ
ร็อคแบบไหน?
โปรเจ็กต์นี้อยู่ในขั้นอัลฟ่าและเชี่ยวชาญในการจัดเตรียมระบบจัดเก็บข้อมูลแบบกระจาย Ceph ในคลัสเตอร์ Kubernetes ผู้เขียนยังได้ประกาศแผนการที่จะสนับสนุนระบบจัดเก็บข้อมูลอื่นๆ ด้วย แต่สิ่งนี้จะไม่เกิดขึ้นในรุ่นถัดไป
ส่วนประกอบและอุปกรณ์ทางเทคนิค
งานของ Rook ภายใน Kubernetes ขึ้นอยู่กับผู้ดำเนินการพิเศษ (เราเขียนเพิ่มเติมเกี่ยวกับตัวดำเนินการ Kubernetes ใน
ดังนั้น ผู้ประกอบการโกง ดูเหมือนจะเป็นคอนเทนเนอร์ที่มีทุกสิ่งที่จำเป็นสำหรับการปรับใช้และการบำรุงรักษาพื้นที่เก็บข้อมูลในภายหลัง ความรับผิดชอบของผู้ปฏิบัติงานประกอบด้วย:
- การสร้าง DaemonSet สำหรับ daemons หน่วยเก็บข้อมูล Ceph (
ceph-osd ) ด้วยคลัสเตอร์ RADOS แบบธรรมดา - การสร้างพ็อดสำหรับการตรวจสอบ Ceph (กับ
เซ็ฟ-จันทร์ การตรวจสอบสถานะของคลัสเตอร์ สำหรับองค์ประชุม ในกรณีส่วนใหญ่จะมีการปรับใช้สำเนาสามชุด และหากชุดใดชุดหนึ่งตก ชุดใหม่จะเพิ่มขึ้น); - การจัดการ CRD (
คำจำกัดความของทรัพยากรที่กำหนดเอง ) เพื่อตัวเขาเองกลุ่ม ,พูลจัดเก็บข้อมูล ,ร้านค้าวัตถุ (ชุดทรัพยากรและบริการสำหรับการให้บริการคำขอ HTTP ที่ทำ PUT/GET บนอ็อบเจ็กต์ - เข้ากันได้กับ S3 และ Swift API)และระบบไฟล์ ; - การเริ่มต้นพ็อดเพื่อเปิดบริการที่จำเป็นทั้งหมด
- การสร้างตัวแทน Rook
ตัวแทนของ Rook แสดงโดยพ็อดแยกกันที่ใช้งานบนแต่ละโหนด Kubernetes วัตถุประสงค์ของเอเจนต์คือการกำหนดค่าปลั๊กอิน
ตำแหน่งและบทบาทของส่วนประกอบ Rook ในโครงการคลัสเตอร์ Kubernetes โดยรวม
Rook มีพื้นที่เก็บข้อมูลสามประเภท:
-
ปิดกั้น (ปิดกั้น,StorageClass
) — ติดตั้งที่เก็บข้อมูลไว้ที่เตาไฟเดียว -
วัตถุ (วัตถุ,ObjectStore
) - พร้อมใช้งานทั้งภายในและภายนอกคลัสเตอร์ Kubernetes (ผ่าน S3 API) -
ระบบไฟล์ที่ใช้ร่วมกัน (ระบบไฟล์ที่ใช้ร่วมกัน,Filesystem
) คือระบบไฟล์ที่สามารถติดตั้งเพื่ออ่านและเขียนจากหลายพ็อดได้
โครงสร้างภายในของ Rook ประกอบด้วย:
- มอนส์ - พ็อดสำหรับการตรวจสอบ Ceph (พร้อม ceph-mon ที่กล่าวถึงแล้ว)
- OSD - พ็อดที่มี ceph-osd daemons (Object Storage Daemons)
- มจพ - ฝักกับปีศาจ
Ceph-Mgr (Ceph Manager) ซึ่งให้ความสามารถในการตรวจสอบเพิ่มเติมและอินเทอร์เฟซสำหรับระบบภายนอก (การตรวจสอบ/การควบคุม) - อาร์.จี.วาย (ไม่จำเป็น) - พ็อดพร้อมที่เก็บวัตถุ
- MDS (ไม่จำเป็น) - พ็อดพร้อมระบบไฟล์ที่ใช้ร่วมกัน
Rook daemons ทั้งหมด (Mons, OSDs, MGR, RGW, MDS) จะถูกรวบรวมเป็นไบนารี่เดียว (rook
) ทำงานในคอนเทนเนอร์
สำหรับการแนะนำโดยย่อเกี่ยวกับโครงการ Rook เรื่องสั้น (12 สไลด์) นี้อาจมีประโยชน์เช่นกัน
ปฏิบัติการเรือ Rook
ตัวดำเนินการ Rook รองรับ Kubernetes เวอร์ชัน 1.6 ขึ้นไปอย่างสมบูรณ์ (และบางส่วนคือ K8s รุ่นเก่า - 1.5.2). ของเขา การติดตั้ง в
cd cluster/examples/kubernetes
kubectl create -f rook-operator.yaml
kubectl create -f rook-cluster.yaml
นอกจากนี้เจ้าหน้าที่ Rook ก็เตรียมพร้อมแล้ว
helm repo add rook-alpha https://charts.rook.io/alpha
helm install rook-alpha/rook
มีปริมาณน้อย helm install
ผ่านพารามิเตอร์ --set key=value[,key=value]
(หรือเก็บไว้ในไฟล์ YAML แยกต่างหากและส่งผ่าน -f values.yaml
).
หลังจากติดตั้งตัวดำเนินการ Rook และเปิดตัวพ็อดด้วยตัวแทนแล้ว สิ่งที่เหลืออยู่คือการสร้างคลัสเตอร์ Rook เอง การกำหนดค่าที่ง่ายที่สุดซึ่งมีลักษณะดังนี้ (rook-cluster.yaml
):
apiVersion: v1
kind: Namespace
metadata:
name: rook
---
apiVersion: rook.io/v1alpha1
kind: Cluster
metadata:
name: rook
namespace: rook
spec:
dataDirHostPath: /var/lib/rook
storage:
useAllNodes: true
useAllDevices: false
storeConfig:
storeType: bluestore
databaseSizeMB: 1024
journalSizeMB: 1024
หมายเหตุ: ควรให้ความสนใจเป็นพิเศษกับคุณลักษณะ dataDirHostPath
ซึ่งเป็นค่าที่ถูกต้องซึ่งจำเป็นต่อการบันทึกคลัสเตอร์หลังจากรีบูต ในกรณีที่ใช้เป็นสถานที่จัดเก็บข้อมูลถาวรสำหรับข้อมูล Rook บนโฮสต์ Kubernetes ผู้เขียนแนะนำให้มีพื้นที่ว่างในดิสก์อย่างน้อย 5 GB ในไดเร็กทอรีนี้
สิ่งที่เหลืออยู่คือการสร้างคลัสเตอร์จากการกำหนดค่าจริง ๆ และตรวจสอบให้แน่ใจว่าพ็อดถูกสร้างขึ้นในคลัสเตอร์ (ในเนมสเปซ rook
):
kubectl create -f rook-cluster.yaml
kubectl -n rook get pod
NAME READY STATUS RESTARTS AGE
rook-api-1511082791-7qs0m 1/1 Running 0 5m
rook-ceph-mgr0-1279756402-wc4vt 1/1 Running 0 5m
rook-ceph-mon0-jflt5 1/1 Running 0 6m
rook-ceph-mon1-wkc8p 1/1 Running 0 6m
rook-ceph-mon2-p31dj 1/1 Running 0 6m
rook-ceph-osd-0h6nb 1/1 Running 0 5m
อัพเกรด Rookคลัสเตอร์ (จนถึงเวอร์ชันใหม่) เป็นขั้นตอนที่ในขั้นตอนนี้จำเป็นต้องมีการอัปเดตส่วนประกอบทั้งหมดตามลำดับในลำดับที่แน่นอน และคุณสามารถเริ่มต้นได้หลังจากที่คุณแน่ใจว่าการติดตั้ง Rook ปัจจุบันอยู่ใน "ประสิทธิภาพ" ที่สมบูรณ์ สถานะ. คำแนะนำโดยละเอียดทีละขั้นตอนโดยใช้ตัวอย่างการอัปเดต Rook เวอร์ชัน 0.5.0 เป็น 0.5.1 สามารถพบได้ใน
เมื่อเดือนพฤศจิกายนปีที่แล้วในบล็อก Rook
อนาคต
สถานะปัจจุบันของ Rook คืออัลฟ่า และเวอร์ชันหลักล่าสุดคือ
ตามที่
การโกงเข้าไปในจำนวน
PS
อ่านเพิ่มเติมในบล็อกของเรา:
- «
การสร้างพื้นที่เก็บข้อมูลถาวรด้วยการจัดเตรียมใน Kubernetes ตาม Ceph "; - «
ตัวดำเนินการสำหรับ Kubernetes: วิธีเรียกใช้แอปพลิเคชันแบบเก็บสถานะ "; - «
CoreDNS - เซิร์ฟเวอร์ DNS สำหรับโลกคลาวด์เนทีฟและ Service Discovery สำหรับ Kubernetes "; - «
Container Networking Interface (CNI) - อินเทอร์เฟซเครือข่ายและมาตรฐานสำหรับคอนเทนเนอร์ Linux "; - «
โครงสร้างพื้นฐานที่มี Kubernetes เป็นบริการราคาประหยัด '
ที่มา: will.com