4.11.3.2. 用户 ID
用户 ID 可以在容器镜像或者 Pod
定义中定义。
注意
通常情况下,最好使用附件组群 ID 而不是用户 ID 来获得对持久性存储的访问。
在上面显示的目标 NFS 目录示例中,容器需要将其 UID 设定为 65534
,忽略组 ID。因此可以把以下内容添加到 Pod
定义中:
spec: containers: 1 - name: ... securityContext: runAsUser: 65534 2
假设项目为 default
且 SCC 为 restricted
,则不允许 pod 请求的用户 ID 65534
。因此,pod 会因以下原因失败:
-
它要求
65534
作为其用户 ID。 -
Pod 可用的所有 SCC 都会被检查,以查看哪些 SCC 允许 ID 为
65534
的用户。虽然检查了 SCC 的所有策略,但这里的焦点是用户 ID。 -
因为所有可用的 SCC 都使用
MustRunAsRange
作为其runAsUser
策略,所以需要进行 UID 范围检查。 -
65534
不包含在 SCC 或项目的用户 ID 范围内。
一般情况下,作为一个最佳实践方案,最好不要修改预定义的 SCC。解决这个问题的的首选方法是,创建一个自定义 SCC,在其中定义最小和最大用户 ID。 UID 范围仍然会被强制检查,UID 65534
会被允许。
注意
要使用自定义 SCC,需要首先将其添加到适当的服务帐户(service account)中。例如,在一个特定项目中使用 default
服务账户(除非在 Pod
规格中指定了另外一个账户)。