推理服务无法进入运行状态
问题描述
部署推理服务后,服务长时间处于非运行状态。在 Alauda Container Platform 的 Workloads 视图中未创建对应的 Pod,但相关的 Deployment 资源已成功创建。
在该 Deployment 的 实时事件 中,观察到类似的错误信息:
FailedCreate: Error creating: pods "gpt2-predictor-f677f684f-sjwq7" is forbidden: violates PodSecurity "baseline:latest": host namespaces (hostIPC=true)
根因分析
该问题由 Kubernetes 集群中启用的 Pod Security Admission 机制引起,且该机制采用了较为严格的安全策略。当推理服务的 Pod 试图使用特权功能(例如 host namespaces,如 hostIPC=true)时,策略会阻止其创建,以防止潜在的安全风险。
本例中,使用 hostIPC=true 违反了 "baseline" Pod Security Standard,该标准明确禁止使用 host namespaces,以确保 Pod 之间的隔离。
解决方案
为解决此问题,建议首先检查推理服务的配置。如果运行时不严格需要 hostIPC: true 等特权模式,最安全的做法是修改工作负载配置,移除这些特权需求,从而在不降低安全性的前提下解决问题。
如果工作负载确实需要这些特权功能,请按以下步骤调整安全策略等级:
- 进入 Projects 视图,选择包含推理服务的 Project。
- 在 Namespace 列表中,找到服务所在的命名空间,点击该行右侧的 "..." 按钮。
- 在下拉菜单中选择 Update Pod Security Admission。
- 在弹出窗口中,将所有三种安全模式(Enforce、Audit 和 Warn)的 Security Standard 设置为
Privileged。 - 点击 Update 保存更改。
总结
推理服务 Pod 启动失败,通常是因为其配置违反了命名空间的 Pod 安全策略。通过将该 namespace 的 Pod Security Admission 级别调整为 Privileged,即可允许推理服务 Pod 成功创建并运行。