27.2.4.2. 用户 ID
用户 ID 可以在容器镜像或容器集定义中定义。完整 卷安全 主题涵盖基于用户 ID 控制存储访问,应在设置 NFS 持久性存储前读取。
注意
与使用用户 ID 相比,通常会首选使用 supplemental 组 ID 来获得对持久性存储的访问。
在上面显示的目标 NFS 目录示例中,容器需要将其 UID 设定为 65534,忽略组 ID。因此可以把以下内容添加到 Pod 定义中:
spec: containers: 1 - name: ... securityContext: runAsUser: 65534 2
假设 default 项目和 restricted SCC,pod 请求的用户 ID 65534 不被允许,因此 pod 失败。pod 因以下原因失败:
- 它要求 65534 作为其用户 ID。
- 检查 Pod 可用的所有 SCC 都会检查哪个 SCC 允许用户 ID 65534 (实际上,会检查 SCC 的所有策略,但这里着重关注用户 ID)。
-
因为所有可用的 SCC 都使用 MustRunAsRange 作为其
runAsUser
策略,所以需要 UID 范围检查。 - 65534 不包含在 SCC 或项目的用户 ID 范围内。
一般情况下,作为一个最佳实践方案,最好不要修改预定义的 SCC。解决这个问题的首选方法是创建一个自定义 SCC,如完整的 卷安全 主题中所述。可以创建一个自定义 SCC,以便定义最小和最大用户 ID,仍强制进行 UID 范围检查,UID 65534 会被允许。
注意
要使用自定义 SCC,需要首先将其添加到适当的服务帐户(service account)中。例如,在一个特定项目中使用 default
服务账户(除非在 pod 规格中指定了另外一个账户)。详情请参阅 向用户、组或项目添加 SCC。