ยินดีต้อนรับสู่ควาร์กคอนเทนเนอร์
พื้นที่เก็บข้อมูลนี้เป็นบ้านของรหัส Quark Containers
Quark Container เป็นรันไทม์คอนเทนเนอร์ที่ปลอดภัยประสิทธิภาพสูงพร้อมคุณสมบัติดังต่อไปนี้:
ส่วนประสิทธิภาพคือ Performance.pdf ขั้นตอนและผลการทดสอบโดยละเอียดอยู่ที่นี่
Quark Container ใช้สถาปัตยกรรม Linux Virtual Machine แบบคลาสสิกดังต่อไปนี้ ประกอบด้วย HyperVisor ชื่อ QVisor และเกสต์เคอร์เนลชื่อ QKernel ไม่เหมือนกับการออกแบบ Linux Virtual Machine ทั่วไป ซึ่งอิมเมจระบบปฏิบัติการมาตรฐาน เช่น Linux/Windows สามารถทำงานบน Qemu ได้ QVisor และ QKernel เชื่อมต่อกันอย่างแน่นหนา QVisor รองรับเฉพาะ QKernel เท่านั้น
การออกแบบระดับสูงของ Quark Container มีดังต่อไปนี้ จัดการคำขอคอนเทนเนอร์แอปพลิเคชันด้วยขั้นตอนต่อไปนี้
Quark Container รองรับการถ่ายโอนการรับส่งข้อมูล TCP ของแอปพลิเคชันคอนเทนเนอร์ด้วยการเชื่อมต่อ RDMA เช่น TSoR TSoR เป็นผู้ให้บริการเครือข่ายคอนเทนเนอร์ในคลัสเตอร์ K8S และแอปพลิเคชันคอนเทนเนอร์ที่ใช้ TCP ที่มีอยู่สามารถถ่ายโอนข้อมูลผ่าน RDMA ได้โดยไม่ต้องดัดแปลงใดๆ เนื่องจาก TSoR ออฟโหลดเวิร์กโหลดสแต็กโปรโตคอล TCP/IP ไปยัง RDMA NIC สามารถบรรลุทรูพุตที่สูงขึ้น เวลาแฝงต่ำ และใช้ CPU น้อยลง ผลการทดสอบ TSOR คือผลการทดสอบเกณฑ์มาตรฐาน Redis โดยมีการเปรียบเทียบระหว่าง Quark + TSoR และ RunC + Flannel TSoR แสดงการปรับปรุงปริมาณงานมากกว่า Flannel ถึง 5 เท่า สถาปัตยกรรม TSoR มีดังต่อไปนี้ บทนำอยู่ที่นี่
Quark รองรับ X86-64 เป็นหลัก การสนับสนุน aarch64 อยู่ในเบื้องต้นและอยู่ระหว่างการพัฒนา สถาปัตยกรรมอื่นๆ จะพร้อมใช้งานในอนาคต
Quark ได้รับการพัฒนาด้วยภาษา Rust งานสร้างจำเป็นต้องติดตั้ง Rust ทุกคืน โปรดใช้เวอร์ชันปัจจุบันที่ใช้งานได้ดี nightly-2023-12-11-x86_64-unknown-linux-gnu
(แทนที่ x86_64
ด้วย aarch64
สำหรับบิลด์ aarch64)
rustup toolchain install nightly-2023-12-11-x86_64-unknown-linux-gnu
rustup default nightly-2023-12-11-x86_64-unknown-linux-gnu
เพิ่มส่วนประกอบrust-src ให้กับ toolchain ปัจจุบัน:
rustup component add rust-src
และติดตั้ง "cargo-xbuild" สำหรับการรวบรวม qkernel cross
cargo install cargo-xbuild
ติดตั้งไลบรารี libcap
sudo apt-get install libcap-dev
นอกจากนี้ ยังมีไลบรารีเพิ่มเติมสำหรับการคอมไพล์โมดูล RDMA:
sudo apt-get install build-essential cmake gcc libudev-dev libnl-3-dev
libnl-route-3-dev ninja-build pkg-config valgrind python3-dev cython3
python3-docutils pandoc libclang-dev
และยังมีไลบรารีพิเศษสำหรับการรวบรวมโมดูล GPU:
(โปรดทราบว่าคุณสามารถใช้คำสั่งต่อไปนี้ได้แม้ในเครื่องที่ไม่ใช่ NVIDIA เพื่อให้สามารถคอมไพล์โมดูล GPU ได้)
sudo apt-get install libelf-dev nvidia-driver-535
git clone [email protected]:QuarkContainer/Quark.git
cd Quark
make
make install
make cuda_all
make install
make install
"quark" มีโค้ด QVisor และใช้อินเทอร์เฟซ OCI ด้วยsudo mkdir /var/log/quark
sudo systemctl restart docker
แอปพลิเคชันตัวอย่าง Hello-World Docker สามารถดำเนินการได้ดังต่อไปนี้:
sudo systemctl restart docker
sudo systemctl restart docker.service
docker run --rm --runtime=quark hello-world
ไฟล์คอนฟิกูเรชันของ Quark Container อยู่ที่ /etc/quark/config.json รายละเอียดการกำหนดค่าคือ TBD...
บันทึกการดีบักของ Quark Container ถูกใส่ไว้ใน /var/log/quark/quark.log มันสามารถเปิดหรือปิดการใช้งานโดย "DebugLevel" ของ /etc/quark/config.json ค่าที่เป็นไปได้ของ "DebugLevel" มี 5 ค่าดังนี้
Off,
Error,
Warn,
Info,
Debug,
Trace,
เมื่อเปิดใช้งานบันทึก เช่น Debug หลังจากรันอิมเมจนักเทียบท่าด้วย Quark Container แล้ว บันทึกจะถูกสร้างขึ้นใน /var/log/quark/quark.log ดูวิกิสำหรับเคล็ดลับการแก้ไขข้อบกพร่องเพิ่มเติม
โปรดดูลิงก์นี้เพื่อตั้งค่า k8 โดยใช้คอนเทนเนอร์ควาร์กและการรองรับ RDMA
ขณะนี้ Quark มีการสนับสนุน aarch64 เบื้องต้นแล้ว (ยังอยู่ระหว่างการพัฒนา)
หมายเหตุเกี่ยวกับสถาปัตยกรรม arm64 รุ่นใหม่ :
สถาปัตยกรรม arm64 ที่ใหม่กว่าจะเพิ่มบิต PAN (การเข้าถึงสิทธิพิเศษไม่เคย) ใน pstate ซึ่งป้องกันไม่ให้เคอร์เนล (el1) เข้าถึงหน่วยความจำผู้ใช้ (el0) การสนับสนุนอย่างเต็มที่คือ WIP เพื่อเป็นวิธีแก้ปัญหาชั่วคราว เราเพียงแค่ล้าง PAN ใน qkernel ในการดำเนินการนี้ คุณจะต้องใช้โปรแกรมแก้ไขนี้ด้วยตนเอง
~quark/[email protected]
หากต้องการสมัครรับรายชื่อ ให้ส่งอีเมลเปล่าไปที่ ~quark/[email protected]
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการใช้รายชื่อผู้รับอีเมล โปรดดูมารยาทในรายชื่อผู้รับจดหมาย