CRI-O 的次要版本 ( 1.xy
) 遵循 Kubernetes 发布周期。 Kubernetes 的补丁版本 ( 1.xz
) 与 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 Pages 网站不断检索。
CRI-O 旨在提供符合 OCI 的运行时和 Kubelet 之间的集成路径。具体来说,它使用符合 OCI 的运行时来实现 Kubelet 容器运行时接口 (CRI)。 CRI-O 的范围与 CRI 的范围相关。
在较高层面上,我们期望 CRI-O 的范围仅限于以下功能:
CRI-O 是 Kubernetes 容器运行时接口 (CRI) 的实现,它将允许 Kubernetes 直接启动和管理开放容器计划 (OCI) 容器。
该计划是在不同方面使用 OCI 项目和最佳品种库:
目前 Kubernetes 社区正在通过设计提案积极开发它。疑问和问题应在 Kubernetes sig-node Slack 频道中提出。
您可以在此处找到描述 CRI-O 方向的路线图。该项目正在跟踪所有正在进行的工作,作为功能路线图 GitHub 项目的一部分。
CRI-O 的 CI 分为 GitHub actions 和 OpenShift CI (Prow)。用于 prow 作业的相关虚拟机映像会在作业中定期构建:
这些作业是从 openshift/release 存储库维护的,并定义用于特定作业的工作流程。实际的作业定义可以在main
分支的 ci-operator/jobs/cri-o/cri-o/cri-o-cri-o-main-presubmits.yaml 下的同一存储库以及相应的文件中找到发布分支。这些作业的基本映像配置可在 ci-operator/config/cri-o/cri-o 下的同一存储库中找到。
命令 | 描述 |
---|---|
克里欧(8) | OCI Kubernetes 容器运行时守护进程 |
与 CRI-O(或其他 CRI 兼容运行时)交互的命令行工具的示例是 Crictl 和 Podman。
文件 | 描述 |
---|---|
crio.conf(5) | CRI-O 配置文件 |
政策.json(5) | 签名验证策略文件 |
注册表.conf(5) | 注册表配置文件 |
存储.conf(5) | 存储配置文件 |
SECURITY.md 中描述了报告漏洞的安全流程。
您可以配置 CRI-O 在创建容器时注入 OCI Hooks。
我们为运营和开发转移提供有用的信息,因为它与利用 CRI-O 的基础设施有关。
对于异步通信和长时间运行的讨论,请使用 GitHub 存储库上的问题和拉取请求。这将是讨论设计和实现的最佳场所。
对于聊天交流,我们在 Kubernetes Slack 上有一个频道,欢迎大家加入并讨论开发。
我们维护着与 CRI-O 相关的精选链接列表。您在网上发现了有关该项目的有趣信息吗?太棒了,请随意打开 PR 并将其添加到列表中。
要安装CRI-O
,您可以按照我们的安装指南进行操作。或者,如果您想从源代码构建CRI-O
,请查看我们的设置指南。
在开始之前,您需要启动 CRI-O
您可以使用local-up-cluster.sh
通过CRI-O
运行本地版本的 Kubernetes:
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 来实现 Kubernetes 的容器运行时接口 (CRI)。除此之外,还有一个额外的 HTTP API 可以检索有关 CRI-O 的更多运行时状态信息。请注意,该 API 不被认为是稳定的,生产用例不应依赖它。
在正在运行的 CRI-O 实例上,我们可以通过像curl这样的HTTP传输工具访问API:
$ 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 | CRI-O 使用的完整 TOML 配置(默认为/etc/crio/crio.conf )。 |
/pause/:id | application/json | 暂停正在运行的容器。 |
/unpause/:id | application/json | 取消暂停已暂停的容器。 |
/debug/goroutines | text/plain | 打印 goroutine 堆栈。 |
/debug/heap | text/plain | 写入堆转储。 |
子命令crio status
可用于通过专用命令行工具访问 API。它通过专用子命令config
、 info
和containers
支持所有 API 端点,例如:
$ sudo crio status info
cgroup driver: systemd
storage driver: btrfs
storage root: /var/lib/containers/storage
default GID mappings (format ::):
0:0:4294967295
default UID mappings (format ::):
0:0:4294967295
请参阅 CRI-O 指标指南。
请参阅 CRI-O 跟踪指南。
容器运行时的某些方面值得额外解释。这些详细信息总结在专门的指南中。
有问题吗?我们的调试指南中有一些调试提示和技巧
可以在此处找到生产环境中 CRI-O 采用者的不完整列表。如果您是用户,请通过提交拉取请求来帮助我们完成它!
每周举行一次会议来讨论 CRI-O 的发展。它向所有人开放。加入会议的详细信息位于 wiki 上。
有关 CRI-O 如何治理的更多信息,请查看治理文件