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