FAQ

kruntimes 是 Kubernetes scheduler 的替代品吗?

不是。Kubernetes 仍然负责调度 Runtime Pods。kruntimes 负责在这些预热的 Runtime Pods 内部调度单个 Runs。

kruntimes 会为每个 Run 创建一个 Pod 吗?

不会。Run 是一个 CRD object。scheduler 会把它分配到已有且有可用 capacity 的 Runtime Pod。

内置 runtimes 可以安全运行不可信代码吗?

不可以。内置 Bash 和 Python runtimes 仅适用于 trusted code。它们不提供 per-Run 进程、 文件系统、网络、CPU、内存或 ServiceAccount 隔离。

对于不可信 workloads,请使用 namespace 隔离,或实现具备更强隔离能力的 custom runtimes。

Logs 存在哪里?

完整 stdout 和 stderr 会作为带 Run UID 的结构化 runtimed logs 输出。它们不会被完整复制到 Run.status.message

Artifacts 存在哪里?

Artifacts 写入 $KRUNTIME_ARTIFACTS_DIR,并通过配置的 ArtifactStore 持久化到 etcd 之外。 Run.status.artifactRefs 存储紧凑 metadata。

为什么 Run 一直 Pending?

通常是因为没有匹配的健康 Runtime Pod 具备可用 capacity。见 Troubleshooting

Timeout 时会发生什么?

Timeout 会以 Timeout 终态 phase 结束。它不会被报告为泛化的 Failed

kruntimes 提供什么执行保证?

执行语义是 at-least-once。Runtime Servers 必须让重复 Execute delivery 具备确定性且安全。

Runtime 可以使用自定义 ServiceAccount 吗?

可以。设置 Runtime.spec.template.spec.serviceAccountName。Runtime controller 会为 runtimed 权限创建 namespace-scoped RBAC。

API 稳定了吗?

还没有。项目处于 v0.x experimental,CRDs 是 v1alpha1

如何 benchmark scheduler?

Performance Benchmarks 。benchmark execution 是贡献者 workflow, 并假设存在本地开发环境。