函式庫 / SDK
cri-o/cri-o avatar
cri-o/cri-o

cri-o:從 README 拆解功能、限制與採用條件

基於開放容器計畫的 Kubernetes 容器執行時期介面實作。

5,659 個 Star1,206 個 ForkGoApache-2.0

秒懂

它是什麼?
Open Container Initiative-based implementation of Kubernetes Container Runtime Interface.。本文整理 cri-o/cri-o README 的使用入口、環境條件、功能邊界與專案專屬核驗方式。
適合誰用?
cri-o 適合需要 README 所列「Open Container Initiative-based implementation of Kubernetes Container Runtime Interface.」能力,並能管理其環境與設定的使用者;不適合把範例或未說明行為當成正式保證。先執行:在 cri-o/cri-o 依 README 建置或安裝 CRI-O,檢查 crio.conf、systemd 服務、crictl info 和容器啟動日誌,再核對 Kubernetes 版本條件。
可以商用嗎?
可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫在最近一天內有新的提交。
用什麼語言寫的?
主要是 Go(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

cri-o:專案範圍(1)

CRI-O 是 Kubernetes 容器執行時間介面(CRI)的一種實作,讓 Kubelet 能夠啟動和管理 OCI 相容容器。README 將專案範圍直接綁定到 CRI:支援多種映像格式、透過信任和驗證下載映像、映像管理、容器程序生命週期管理、CRI 所需的監控和日誌記錄,以及資源隔離。它明確排除了建置、簽署和推送映像,並且專案中建置的任何 CLI 僅用於測試,不保證向後相容。

在 cri-o/cri-o 依 README 建置或安裝 CRI-O,檢查 crio.conf、systemd 服務、crictl info 和容器啟動日誌,再核對 Kubernetes 版本條件。 這個步驟只核對 cri-o/cri-o README 已列出的行為;文件未說明的效能、相容性或安全性不延伸成保證。

cri-o:Kubernetes 發布週期與相容性(2)

CRI-O 的小版本(1.x.y)跟隨 Kubernetes 的發布週期。修補程式版本與 Kubernetes 不同步,因為 CRI-O 僅在必要時提供修補程式。專案遵循 Kubernetes 的 n-2 版本偏移策略來處理功能畢業、棄用或移除。README 中的相容性矩陣顯示,main 分支追蹤 Kubernetes master,而發布分支則進行手動 bugfix 回移。對受支援分支的功能回移由社群逐案決定。

在 cri-o/cri-o 依 README 建置或安裝 CRI-O,檢查 crio.conf、systemd 服務、crictl info 和容器啟動日誌,再核對 Kubernetes 版本條件。 這個步驟只核對 cri-o/cri-o README 已列出的行為;文件未說明的效能、相容性或安全性不延伸成保證。(cri-o 第 2 節第 2 段)

cri-o:計畫使用的元件和函式庫(3)

README 描述了使用 OCI 專案和最佳實踐函式庫的計畫:執行時間使用 runc(或任何 OCI runtime-spec 實作),映像管理使用 container-libs/image,儲存和層管理使用 container-libs/storage,網路使用 CNI。它還指出專案正在 Kubernetes 社群中透過設計提案進行積極開發,但 README 未提供該提案目前狀態的連結。

在 cri-o/cri-o 依 README 建置或安裝 CRI-O,檢查 crio.conf、systemd 服務、crictl info 和容器啟動日誌,再核對 Kubernetes 版本條件。 這個步驟只核對 cri-o/cri-o README 已列出的行為;文件未說明的效能、相容性或安全性不延伸成保證。(cri-o 第 3 節第 2 段)

cri-o:設定與命令列介面(4)

CRI-O 提供一個守護程序命令 crio(8) 和一個設定檔 crio.conf(5)。它還引用了 container-libs 儲存庫中的 policy.json(用於簽章驗證)、registries.conf(用於登錄檔)和 storage.conf(用於儲存)。README 還提到了註解遷移指南,以幫助遷移到 Kubernetes 推薦的命名約定。crio status 子命令可以存取 HTTP API,支援 config、info 和 containers 等子命令。

在 cri-o/cri-o 依 README 建置或安裝 CRI-O,檢查 crio.conf、systemd 服務、crictl info 和容器啟動日誌,再核對 Kubernetes 版本條件。 這個步驟只核對 cri-o/cri-o README 已列出的行為;文件未說明的效能、相容性或安全性不延伸成保證。(cri-o 第 4 節第 2 段)

cri-o:HTTP 狀態 API 與可觀測性(5)

除了用於 CRI 的 gRPC API 外,CRI-O 還在 Unix 插座上暴露了一個 HTTP API。README 警告該 API 不穩定,不應在生產環境中依賴。端點包括 /info、/containers/:id、/config、/pause/:id、/unpause/:id、/debug/goroutines 和 /debug/heap。README 還引用了單獨的指標和追蹤指南,但未包含這些指南的內容。

在 cri-o/cri-o 依 README 建置或安裝 CRI-O,檢查 crio.conf、systemd 服務、crictl info 和容器啟動日誌,再核對 Kubernetes 版本條件。 這個步驟只核對 cri-o/cri-o README 已列出的行為;文件未說明的效能、相容性或安全性不延伸成保證。(cri-o 第 5 節第 2 段)

cri-o:安全、OCI 鉤子與社群流程(6)

漏洞報告的安全流程在 SECURITY.md 中描述。OCI 鉤子可以根據 podman hooks 文件進行設定。溝通透過 GitHub issue 和 pull request 進行,也有 Kubernetes slack 頻道。專案每週舉行一次向所有人開放的會議,治理細節在 governance 檔案中。README 還包含一個為 AI 編碼助手提供的部分,描述專案上下文、工作流程模式和發展指南。

在 cri-o/cri-o 依 README 建置或安裝 CRI-O,檢查 crio.conf、systemd 服務、crictl info 和容器啟動日誌,再核對 Kubernetes 版本條件。 這個步驟只核對 cri-o/cri-o README 已列出的行為;文件未說明的效能、相容性或安全性不延伸成保證。(cri-o 第 6 節第 2 段)

cri-o:使用 Kubernetes 入門(7)

要安裝 CRI-O,README 指向安裝指南和從原始碼建置的指南。要執行本機 Kubernetes 叢集,README 描述了使用 Kubernetes 儲存庫中的 local-up-cluster.sh,並設定環境變數,如 CGROUP_DRIVER=systemd、CONTAINER_RUNTIME=remote 和 CONTAINER_RUNTIME_ENDPOINT='unix:///var/run/crio/crio.sock'。還引用了一個教學頁面。README 並未直接給出安裝指令。

在 cri-o/cri-o 依 README 建置或安裝 CRI-O,檢查 crio.conf、systemd 服務、crictl info 和容器啟動日誌,再核對 Kubernetes 版本條件。 這個步驟只核對 cri-o/cri-o README 已列出的行為;文件未說明的效能、相容性或安全性不延伸成保證。(cri-o 第 7 節第 2 段)

cri-o 第 1 次檢查仍應回到具體產物:執行 在 cri-o/cri-o 依 README 建置或安裝 CRI-O,檢查 crio.conf、systemd 服務、crictl info 和容器啟動日誌,再核對 Kubernetes 版本條件。 後,命令是否完成、指定檔案是否生成、服務是否回應,以及再次執行時結果能否解釋。這些觀察可分辨設定缺漏、平台差異與 README 已明列的功能範圍,也能讓團隊知道哪一項條件尚未被這個專案涵蓋。

cri-o 第 2 次檢查仍應回到具體產物:執行 在 cri-o/cri-o 依 README 建置或安裝 CRI-O,檢查 crio.conf、systemd 服務、crictl info 和容器啟動日誌,再核對 Kubernetes 版本條件。 後,命令是否完成、指定檔案是否生成、服務是否回應,以及再次執行時結果能否解釋。這些觀察可分辨設定缺漏、平台差異與 README 已明列的功能範圍,也能讓團隊知道哪一項條件尚未被這個專案涵蓋。

cri-o 第 3 次檢查仍應回到具體產物:執行 在 cri-o/cri-o 依 README 建置或安裝 CRI-O,檢查 crio.conf、systemd 服務、crictl info 和容器啟動日誌,再核對 Kubernetes 版本條件。 後,命令是否完成、指定檔案是否生成、服務是否回應,以及再次執行時結果能否解釋。這些觀察可分辨設定缺漏、平台差異與 README 已明列的功能範圍,也能讓團隊知道哪一項條件尚未被這個專案涵蓋。

cri-o 第 4 次檢查仍應回到具體產物:執行 在 cri-o/cri-o 依 README 建置或安裝 CRI-O,檢查 crio.conf、systemd 服務、crictl info 和容器啟動日誌,再核對 Kubernetes 版本條件。 後,命令是否完成、指定檔案是否生成、服務是否回應,以及再次執行時結果能否解釋。這些觀察可分辨設定缺漏、平台差異與 README 已明列的功能範圍,也能讓團隊知道哪一項條件尚未被這個專案涵蓋。

cri-o 第 5 次檢查仍應回到具體產物:執行 在 cri-o/cri-o 依 README 建置或安裝 CRI-O,檢查 crio.conf、systemd 服務、crictl info 和容器啟動日誌,再核對 Kubernetes 版本條件。 後,命令是否完成、指定檔案是否生成、服務是否回應,以及再次執行時結果能否解釋。這些觀察可分辨設定缺漏、平台差異與 README 已明列的功能範圍,也能讓團隊知道哪一項條件尚未被這個專案涵蓋。

cri-o 第 6 次檢查仍應回到具體產物:執行 在 cri-o/cri-o 依 README 建置或安裝 CRI-O,檢查 crio.conf、systemd 服務、crictl info 和容器啟動日誌,再核對 Kubernetes 版本條件。 後,命令是否完成、指定檔案是否生成、服務是否回應,以及再次執行時結果能否解釋。這些觀察可分辨設定缺漏、平台差異與 README 已明列的功能範圍,也能讓團隊知道哪一項條件尚未被這個專案涵蓋。

cri-o 第 7 次檢查仍應回到具體產物:執行 在 cri-o/cri-o 依 README 建置或安裝 CRI-O,檢查 crio.conf、systemd 服務、crictl info 和容器啟動日誌,再核對 Kubernetes 版本條件。 後,命令是否完成、指定檔案是否生成、服務是否回應,以及再次執行時結果能否解釋。這些觀察可分辨設定缺漏、平台差異與 README 已明列的功能範圍,也能讓團隊知道哪一項條件尚未被這個專案涵蓋。

編輯結論

cri-o 適合需要 README 所列「Open Container Initiative-based implementation of Kubernetes Container Runtime Interface.」能力,並能管理其環境與設定的使用者;不適合把範例或未說明行為當成正式保證。先執行:在 cri-o/cri-o 依 README 建置或安裝 CRI-O,檢查 crio.conf、systemd 服務、crictl info 和容器啟動日誌,再核對 Kubernetes 版本條件。 再依具體輸出決定是否納入既有流程。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社群筆記

社群筆記