推理服务无法进入运行状态

问题描述

在部署推理服务后,它会长时间停留在非运行状态。对应的 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 之类的特权模式,最安全的做法是修改工作负载配置并移除这些特权要求。这样可以在不影响安全性的前提下解决问题。

如果您的工作负载确实需要这些特权功能,请按照以下步骤调整安全策略级别:

  1. 导航到 Projects 视图,并选择包含推理服务的 Project
  2. Namespace 列表中,找到服务所在的 namespace,然后单击该行右侧的 "..." 按钮。
  3. 在下拉菜单中,选择 Update Pod Security Admission
  4. 在弹出的窗口中,将所有三种安全模式(EnforceAuditWarn)的 Security Standard 设置为 Privileged
  5. 单击 Update 保存更改。

总结

推理服务 Pod 无法启动,通常是因为其配置违反了 namespace 的 Pod 安全策略。将 namespacePod Security Admission 级别调整为 Privileged 后,即可允许推理服务 Pod 成功创建并运行。