尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Using rkt with Kubernetes(rktnetes):以 rkt 作为 Kubernetes 容器运行时的配置与实践

发布时间:2026/9/25 3:07:39

资讯中心
01
ARTICLE

Using rkt with Kubernetes(rktnetes):以 rkt 作为 Kubernetes 容器运行时的配置与实践

Using rkt with Kubernetes(rktnetes):以 rkt 作为 Kubernetes 容器运行时的配置与实践
容器运行时云原生网络【免费下载链接】rkt[Project ended] rkt is a pod-native container engine for Linux. It is composable, secure, and built on standards.项目地址https://gitcode.com/gh_mirrors/rk/rkt点击查看免费下载rkt 是 CoreOS 团队开发的一种 pod 原生pod-native的 Linux 容器引擎其设计目标是可组合、安全且基于开放标准。Kubernetes 默认使用 Docker 作为容器运行时但同时也支持将 rkt 接入作为后端。本文档即官方指南《Using rkt with Kubernetes (aka rktnetes)》围绕在 kubelet 层面将 rkt 配置为 Kubernetes 容器运行时这一主题逐一说明 kubelet 相关启动参数、setup 工具集成方式以及 Minikube 本地试用路径并结合本仓库源码API 服务、stage1 镜像、pod 生命周期管理等做纵深解读帮助你理解 rktnetes 的落地方式与工作原理。背景rkt 与 Kubernetes 的容器运行时集成Kubernetes 是用于在跨机器集群上管理容器化应用的系统。在默认安装中Kubernetes 使用 Docker 引擎运行所有应用容器与此同时Kubernetes 也支持把 rkt 作为其容器运行时后端从而让集群可以利用 rkt 的若干安全特性以及它原生的 Pod 支持。所谓 rktnetes正是社区对“以 rkt 为运行时的 Kubernetes”这一组合的俗称。rkt 原生地把多个应用组织进同一个 Pod这与 Kubernetes 的 Pod 抽象天然契合同时 rkt 在镜像签名验证、容器隔离、无守护进程daemonless架构等方面的设计为集群运行时提供了另一种选择。需要说明的是本文仓库是 rkt 项目的源代码仓库rkt 项目本身已归档[Project ended]。因此文中对 Kubernetes 侧行为的描述以仓库文档当时记录的 Kubernetes 1.3 及后续版本为准实际使用时应以你所部署的 Kubernetes 版本对应的官方文档为准。在 kubelet 层面把容器运行时切换为 rktrkt 作为 Kubernetes 容器运行时的配置发生在kubelet这一层。kubelet 是运行在每台机器节点上的代理组件负责管理该节点上的容器。kubelet 提供了若干启动标志flags用于接入 rkt下表完整列出原文档给出的四个关键参数Flag作用默认值--container-runtimerkt将节点的容器运行时设置为 rkt默认运行时为 Docker需显式设置为rkt--rkt-api-endpointHOST:PORT设置 rkt API 服务的端点localhost:15441--rkt-pathPATH_TO_RKT_BINARY设置 rkt 二进制文件的路径为空时在$PATH中查找 rkt--rkt-stage1-imageSTAGE1_NAME设置 stage1 镜像名称未设置时使用默认 stage1 镜像coreos.com/rkt/stage1-coreos参数逐一说明--container-runtimerkt是接入 rkt 的前提。kubelet 据此调用 rkt 而非 Docker 来创建、启停和销毁容器。--rkt-api-endpointHOST:PORT指向 rkt 的 API 服务。kubelet 通过该 gRPC 端点与 rkt 交互例如枚举 Pod、查询镜像状态等。默认端点localhost:15441与 rkt 内置api-service子命令的默认监听地址一致见下文“API 服务kubelet 与 rkt 的接口层”。--rkt-pathPATH_TO_RKT_BINARY指定 rkt 可执行文件的路径。若留空kubelet 会在节点的$PATH中搜索rkt。在多运行时共存或 rkt 安装于非标准位置时显式指定该路径可避免搜索歧义。--rkt-stage1-imageSTAGE1_NAME指定 stage1 镜像。stage1 是 rkt 中负责“运行”的一层它提供一个可执行环境默认基于 systemd来启动 Pod 内的应用。若未指定使用默认值coreos.com/rkt/stage1-coreos。在 stage1 的 ACI 清单模板 中可以看到RKT_STAGE1_NAME会被替换为实际构建出的 stage1 名称清单内声明了coreos.com/rkt/stage1/run、coreos.com/rkt/stage1/enter、coreos.com/rkt/stage1/gc、coreos.com/rkt/stage1/stop以及coreos.com/rkt/stage1/app/*等入口点——正是这些入口点支撑了 kubelet 对 Pod 全生命周期的管理。从源码看 API 服务的默认端点为什么默认端点是15441在 rkt/api_service.go 中可以看到 API 服务子命令的定义api-service [--listen...]默认监听地址由common.APIServiceListenAddr提供即localhost:15441--listen标志用于指定监听地址指定0.0.0.0时监听所有网卡接口。也就是说kubelet 的--rkt-api-endpoint默认值恰好与rkt api-service的默认监听地址相互对应二者无需额外配置即可配对工作。通过支持的集群搭建工具配置 rktnetes原文档推荐了两条开箱即用out of the box的 rktnetes 部署路径coreos-kubernetes仓库支持在 AWS 或本地通过 Vagrant拉起 Kubernetes 集群。常见做法是设置环境变量CONTAINER_RUNTIMErkt即可让集群使用 rkt 作为运行时。coreos-baremetal仓库面向裸金属baremetal场景文档指向 Kubernetes 的裸金属部署指南同样支持把 rkt 配置为运行时。使用这两套工具时无需手工逐节点编辑 kubelet 标志配置集中在集群级的环境变量/清单中适合快速验证 rktnetes。说明上述仓库及配套文档均托管在 CoreOS 生态中与本仓库相互独立。本文仅按原文档列出其用途与入口具体步骤请以对应仓库当时的 README/文档为准。使用 Minikube 在本地体验 rktnetesMinikube 是一个让 Kubernetes 在本地轻松运行的工具它在一台虚拟机内启动单节点集群面向想快速上手 Kubernetes 的用户。rktnetes 同样可以在 Minikube 上体验按照 Minikube 官方 Quickstart 中的相关说明即可在本地拉起一个以 rkt 为运行时后端的单节点集群。在本地开发场景下Minikube 隐藏了 kubelet 标志的细节但仍遵循同一套原理节点上的 kubelet 以--container-runtimerkt启动并通过--rkt-api-endpoint与本机的 rkt API 服务通信。现状与已知问题rkt 作为 Kubernetes 容器运行时的集成在Kubernetes 1.3 版本中正式宣布2016 年 7 月见 Kubernetes 官方博客的 rktnetes 公告。此后 rkt 也持续围绕 Kubernetes 的容器运行时接口CRIContainer Runtime Interface演进。从本仓库的变更记录 CHANGELOG.md 中可以找到与 rktnetes 直接相关的实现痕迹例如“vendoring: use appc/spec 0.8.6 and k8s.io/kubernetes v1.3.0” —— 对应 Kubernetes 1.3 集成时点“The API service is meant to be used by orchestration tools like Kubernetes. The performance of the API service was improved by reducing the round-trips in the ListPods and ListImages requests” —— 说明 API 服务本就是面向 Kubernetes 这类编排工具的接口并专门做过性能优化关于 cgroup2、Pod sandbox 的改动中明确提到“initial internal support for cgroup2 and pod sandboxes as specified by kubernetes CRI”即按 Kubernetes CRI 规范实现的 Pod sandbox 支持。已知问题与使用技巧可查阅 rktnetes notes原文档链接指向 Kubernetes 官方文档中的 rkt 运行指南与注意事项具体内容随 Kubernetes 版本迭代当前仓库不再维护该页面内容。从仓库源码理解 rktnetes 的底层支撑API 服务kubelet 与 rkt 之间的接口层kubelet 通过 rkt 的 API 服务获取 Pod 与镜像信息。API 服务定义在 api/v1alpha/api.proto其PublicAPI服务提供GetInfoListPodsInspectPodListImages从 rkt/api_service.go 看该服务基于 gRPC 实现设计上无需 root 权限即可运行且当前只提供只读接口它对于 Pod 运行是可选组件服务本身的启停不会影响任何 Pod 或镜像。这意味着即使 API 服务暂时不可用节点上已有的 Pod 依然照常运行——这为 kubelet 的故障恢复提供了缓冲。API 服务的完整说明含--listen参数表见 Documentation/subcommands/api-service.md一个演示客户端程序见 api/v1alpha/client_example.go。stage1 镜像与 Pod 生命周期rkt 把“镜像格式/内容”与“运行环境”分离stage0rkt 本体负责拉取、校验、渲染镜像stage1 提供运行 Pod 所需的用户空间环境。默认的coreos.com/rkt/stage1-coreos基于 CoreOS 的 systemd 环境kubelet 指定--rkt-stage1-image即可按需更换例如换成 KVM 虚拟化的 stage1。Pod 的整个生命周期由 rkt 以文件系统状态 文件锁的方式表达详见 Documentation/devel/pod-lifecycle.md从embryo→prepare→prepared→run→exited-garbage→garbage每个阶段对应$var/pods即/var/lib/rkt/pods下的一个目录配合flock(2)独占/共享锁来区分“正在运行”“已退出”等状态。由于 kubelet 需要频繁查询节点上 Pod 的状态理解这套状态机有助于排查 rktnetes 下“Pod 状态不一致”一类的问题。面向 Kubernetes 的日志与 annotation 支持在 stage1/init/init.go 中可以看到为 stage1 生成systemd-nspawn启动参数时会读取 Pod 清单中的coreos.com/rkt/experiment/kubernetes-log-dirannotation并将其以--binddir:/rkt/kubernetes/log的方式挂载进容器——这是 rktnetes 收集容器日志的机制之一。类似地在 stage1/init/common/units.go 中当应用日志模式为k8s-plain时会要求coreos.com/rkt/experiment/kubernetes-log-pathannotation并把日志路径写入 iottymux 的环境文件让日志按 Kubernetes 期望的格式落地。这些实验性 annotation 是 rkt 面向 Kubernetes 深度适配的代码级证据。小结rktnetes 的核心操作归纳如下在每个节点上安装并运行 rkt包括可选的rkt api-service以--container-runtimerkt启动 kubelet并根据需要设置--rkt-api-endpoint、--rkt-path、--rkt-stage1-image通过 coreos-kubernetes / coreos-baremetal 或 Minikube 等工具快速完成集群搭建与本地验证。这套组合让 Kubernetes 集群能够利用 rkt 的 Pod 原生抽象、镜像签名校验、无守护进程架构与可插拔 stage1 等特性。需要注意的是rkt 项目已归档rktnetes 集成停留在 Kubernetes 1.x 早期阶段并随 CRI 演进做过 sandbox 支持在现代化 Kubernetes 版本上已不再作为活跃选项本文所有配置参数与源码依据均以当前仓库内容为准。赞分享容器运行时云原生网络【免费下载链接】rkt[Project ended] rkt is a pod-native container engine for Linux. It is composable, secure, and built on standards.项目地址https://gitcode.com/gh_mirrors/rk/rkt点击查看免费下载相关推荐N_m3u8DL-RE 使用指南一条命令保存 DASH、HLS 分片与加密流N_m3u8DL RE 使用指南一条命令保存 DASH、HLS 分片与加密流 N_m3u8DL RE 是一款跨平台的 DASH/HLS/MSS 流媒体下载工具CLI音视频Kubernetes 与 rkt 运行时集成专题rktnetes SIG 的使命、技术范围与历史遗产Kubernetes 与 rkt 运行时集成专题rktnetes SIG 的使命、技术范围与历史遗产 rktnetesrkt Kubernetes 的合开源治理文档研发协作MightyTerrainMesh终极指南3步实现Unity地形网格转换性能翻倍MightyTerrainMesh终极指南3步实现Unity地形网格转换性能翻倍 MightyTerrainMesh 是一款专为Unity开发者打造的地形转换游戏开发图形学3D渲染上一篇100万行数据5秒搞定Excelize流式写入实现CSV到Excel的极速转换下一篇Proxmox VE备份压缩算法终极对比如何选择最佳性能方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。