CRI-O เป็นไปตามรอบการเปิดตัว Kubernetes โดยคำนึงถึงเวอร์ชันรอง ( 1.xy ) การเผยแพร่แพตช์ ( 1.xz ) สำหรับ Kubernetes จะไม่ซิงค์กับแพตช์จาก CRI-O เนื่องจากมีกำหนดการไว้ในแต่ละเดือน ในขณะที่ CRI-O จะจัดเตรียมให้เมื่อจำเป็นเท่านั้น หากการเปิดตัว Kubernetes สิ้นสุดอายุการใช้งาน เวอร์ชัน CRI-O ที่เกี่ยวข้องก็จะได้รับการพิจารณาในลักษณะเดียวกัน
ซึ่งหมายความว่า CRI-O ยังปฏิบัติตามนโยบายการบิดเบือนเวอร์ชันของ Kubernetes n-2 เมื่อพูดถึงเรื่องการเปลี่ยนสถานะ การเลิกใช้งาน หรือการลบออก นอกจากนี้ยังใช้กับฟีเจอร์ที่ไม่ขึ้นอยู่กับ Kubernetes ด้วย อย่างไรก็ตาม คุณลักษณะแบ็คพอร์ตไปยังสาขารีลีสที่รองรับ ซึ่งเป็นอิสระจาก Kubernetes หรือเครื่องมืออื่นๆ เช่น cri-tools ยังคงเป็นไปได้ ซึ่งช่วยให้ CRI-O แยกตัวจากวงจรการเปิดตัว Kubernetes และมีความยืดหยุ่นเพียงพอเมื่อต้องใช้คุณลักษณะใหม่ๆ ทุกฟีเจอร์ที่จะแบ็คพอร์ตจะเป็นการตัดสินใจเป็นกรณีไปของชุมชน ในขณะที่เมทริกซ์ความเข้ากันได้โดยรวมไม่ควรถูกบุกรุก
หากต้องการข้อมูลเพิ่มเติม โปรดไปที่นโยบายการเอียงเวอร์ชันของ Kubernetes
| CRI-O | คูเบอร์เนเตส | สถานะการบำรุงรักษา |
|---|---|---|
สาขา main | สาขา master | มีการนำฟีเจอร์จากที่เก็บ Kubernetes หลักมาใช้อย่างแข็งขัน |
สาขา release-1.x ( v1.xy ) | release-1.x สาขา ( v1.xz ) | การบำรุงรักษาเป็นแบบแมนนวล เฉพาะการแก้ไขข้อบกพร่องเท่านั้นที่จะถูกแบ็คพอร์ต |
บันทึกประจำรุ่นสำหรับ CRI-O จัดทำขึ้นด้วยมือและสามารถเรียกดูได้อย่างต่อเนื่องจากเว็บไซต์หน้า GitHub ของเรา
CRI-O มีวัตถุประสงค์เพื่อให้เส้นทางบูรณาการระหว่างรันไทม์ที่สอดคล้องกับ OCI และ Kubelet โดยเฉพาะอย่างยิ่งจะใช้ Kubelet Container Runtime Interface (CRI) โดยใช้รันไทม์ที่สอดคล้องกับ OCI ขอบเขตของ CRI-O เชื่อมโยงกับขอบเขตของ CRI
ในระดับสูง เราคาดว่าขอบเขตของ CRI-O จะถูกจำกัดอยู่เพียงฟังก์ชันต่อไปนี้:
CRI-O คือการนำ Kubernetes Container Runtime Interface (CRI) มาใช้ ซึ่งจะช่วยให้ Kubernetes เปิดใช้และจัดการคอนเทนเนอร์ Open Container Initiative (OCI) ได้โดยตรง
แผนคือการใช้โครงการ OCI และห้องสมุดสายพันธุ์ที่ดีที่สุดสำหรับด้านต่างๆ:
ขณะนี้อยู่ในการพัฒนาอย่างแข็งขันในชุมชน Kubernetes ผ่านข้อเสนอการออกแบบ ควรถามคำถามและประเด็นต่างๆ ในช่องทาง Slack ของ Kubernetes sig-node
แผนงานที่อธิบายทิศทางของ CRI-O สามารถพบได้ที่นี่ โครงการกำลังติดตามความพยายามที่กำลังดำเนินอยู่ทั้งหมดโดยเป็นส่วนหนึ่งของโครงการ Feature Roadmap GitHub
CI ของ CRI-O ถูกแยกระหว่างการดำเนินการ GitHub และ OpenShift CI (Prow) อิมเมจเครื่องเสมือนที่เกี่ยวข้องที่ใช้สำหรับงานหัวเรือถูกสร้างขึ้นเป็นระยะในงาน:
งานจะได้รับการดูแลจากพื้นที่เก็บข้อมูล openshift/release และกำหนดเวิร์กโฟลว์ที่ใช้สำหรับงานเฉพาะ คำจำกัดความของงานจริงสามารถพบได้ในพื้นที่เก็บข้อมูลเดียวกันภายใต้ ci-operator/jobs/cri-o/cri-o/cri-o-cri-o-main-presubmits.yaml สำหรับสาขา main รวมถึงไฟล์ที่เกี่ยวข้องสำหรับ สาขาที่วางจำหน่าย การกำหนดค่าอิมเมจพื้นฐานสำหรับงานเหล่านั้นมีอยู่ในที่เก็บเดียวกันภายใต้ ci-operator/config/cri-o/cri-o
| สั่งการ | คำอธิบาย |
|---|---|
| คริโอ(8) | ดีมอนรันไทม์คอนเทนเนอร์ OCI Kubernetes |
ตัวอย่างของเครื่องมือบรรทัดคำสั่งเพื่อโต้ตอบกับ CRI-O (หรือรันไทม์ที่เข้ากันได้กับ CRI อื่นๆ) ได้แก่ Crictl และ Podman
| ไฟล์ | คำอธิบาย |
|---|---|
| crio.conf(5) | ไฟล์การกำหนดค่า CRI-O |
| นโยบาย.json(5) | ไฟล์นโยบายการตรวจสอบลายเซ็น |
| registries.conf(5) | ไฟล์การกำหนดค่ารีจิสทรี |
| ที่เก็บข้อมูล.conf(5) | ไฟล์การกำหนดค่าการจัดเก็บข้อมูล |
กระบวนการรักษาความปลอดภัยสำหรับการรายงานช่องโหว่มีอธิบายไว้ใน SECURITY.md
คุณสามารถกำหนดค่า CRI-O เพื่อแทรก OCI Hooks เมื่อสร้างคอนเทนเนอร์ได้
เราให้ข้อมูลที่เป็นประโยชน์สำหรับการถ่ายโอนการดำเนินงานและการพัฒนาที่เกี่ยวข้องกับโครงสร้างพื้นฐานที่ใช้ CRI-O
สำหรับการสื่อสารแบบอะซิงก์และการสนทนาระยะยาว โปรดใช้ปัญหาและดึงคำขอบนที่เก็บ GitHub นี่จะเป็นสถานที่ที่ดีที่สุดในการหารือเกี่ยวกับการออกแบบและการใช้งาน
สำหรับการสื่อสารด้วยการแชท เรามีช่องทางบน Kubernetes slack ที่ทุกคนสามารถเข้าร่วมและพูดคุยเกี่ยวกับการพัฒนาได้
เราเก็บรักษารายการลิงก์ที่เกี่ยวข้องกับ CRI-O ที่คัดสรรแล้ว คุณพบสิ่งที่น่าสนใจบนเว็บเกี่ยวกับโครงการนี้หรือไม่? เยี่ยมมาก อย่าลังเลที่จะเปิด PR และเพิ่มลงในรายการ
หากต้องการติดตั้ง CRI-O คุณสามารถปฏิบัติตามคู่มือการติดตั้งของเรา หรือหากคุณต้องการสร้าง CRI-O จากแหล่งที่มา โปรดดูคู่มือการตั้งค่าของเรา
ก่อนที่คุณจะเริ่มต้น คุณจะต้องเริ่ม CRI-O
คุณสามารถรัน Kubernetes เวอร์ชันโลคัลด้วย CRI-O ได้โดยใช้ local-up-cluster.sh :
CGROUP_DRIVER=systemd
CONTAINER_RUNTIME=remote
CONTAINER_RUNTIME_ENDPOINT='unix:///var/run/crio/crio.sock'
./hack/local-up-cluster.sh สำหรับคำแนะนำเพิ่มเติมในการใช้งาน CRI-O โปรดไปที่หน้าบทช่วยสอนของเรา
CRI-O เปิดเผย gRPC API ตามค่าเริ่มต้นเพื่อรองรับ Container Runtime Interface (CRI) ของ Kubernetes นอกจากนี้ยังมี HTTP API เพิ่มเติมเพื่อดึงข้อมูลสถานะรันไทม์เพิ่มเติมเกี่ยวกับ CRI-O โปรดทราบว่า API นี้ไม่ถือว่ามีเสถียรภาพและกรณีการใช้งานจริงไม่ควรพึ่งพา API ดังกล่าว
บนอินสแตนซ์ CRI-O ที่ทำงานอยู่ เราสามารถเข้าถึง API ผ่านเครื่องมือถ่ายโอน HTTP เช่น curl:
$ sudo curl -v --unix-socket /var/run/crio/crio.sock http://localhost/info | jq
{
"storage_driver": "btrfs",
"storage_root": "/var/lib/containers/storage",
"cgroup_driver": "systemd",
"default_id_mappings": { ... }
}ขณะนี้รองรับจุดเข้าใช้งาน API ต่อไปนี้:
| เส้นทาง | ประเภทเนื้อหา | คำอธิบาย |
|---|---|---|
/info | application/json | ข้อมูลทั่วไปเกี่ยวกับรันไทม์ เช่น storage_driver และ storage_root |
/containers/:id | application/json | ข้อมูลคอนเทนเนอร์เฉพาะ เช่น name , pid และ image |
/config | application/toml | การกำหนดค่า TOML ที่สมบูรณ์ (ค่าเริ่มต้นคือ /etc/crio/crio.conf ) ที่ใช้โดย CRI-O |
/pause/:id | application/json | หยุดคอนเทนเนอร์ที่ทำงานอยู่ชั่วคราว |
/unpause/:id | application/json | ยกเลิกการหยุดคอนเทนเนอร์ที่หยุดชั่วคราว |
/debug/goroutines | text/plain | พิมพ์กอง goroutine |
/debug/heap | text/plain | เขียนฮีปดัมพ์ |
crio status สามารถใช้เพื่อเข้าถึง API ด้วยเครื่องมือบรรทัดคำสั่งเฉพาะ รองรับจุดสิ้นสุด API ทั้งหมดผ่านคำสั่งย่อยเฉพาะ config , info และ containers ตัวอย่างเช่น:
$ sudo crio status info
cgroup driver: systemd
storage driver: btrfs
storage root: /var/lib/containers/storage
default GID mappings (format <container>:<host>:<size>):
0:0:4294967295
default UID mappings (format <container>:<host>:<size>):
0:0:4294967295 โปรดดูคู่มือเมตริก CRI-O
โปรดดูคู่มือการติดตาม CRI-O
ลักษณะบางประการของรันไทม์ของคอนเทนเนอร์ก็คุ้มค่ากับคำอธิบายเพิ่มเติม รายละเอียดเหล่านี้สรุปไว้ในคู่มือเฉพาะ
มีปัญหาใช่ไหม? มีคำแนะนำและเคล็ดลับบางประการสำหรับการดีบักอยู่ในคู่มือการดีบักของเรา
รายชื่อผู้ปรับใช้ CRI-O ที่ไม่สมบูรณ์ในสภาพแวดล้อมการใช้งานจริงสามารถดูได้ที่นี่ หากคุณเป็นผู้ใช้ โปรดช่วยเราดำเนินการให้เสร็จสิ้นโดยส่งคำขอดึง!
มีการประชุมรายสัปดาห์เพื่อหารือเกี่ยวกับการพัฒนา CRI-O มันเปิดให้ทุกคน รายละเอียดการเข้าร่วมการประชุมอยู่ในวิกิ
หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับวิธีการควบคุม CRI-O โปรดดูที่ไฟล์การกำกับดูแล