Kubernetes:以root用户身份运行容器

5

我知道这样做的缺点, 但是我有一张只能在以root用户身份运行cmd的镜像。

服务器kubernetes版本为:v1.19.14。 在我的deployment.yaml文件中,我有:

spec:
  containers:
    - name: myapp
      securityContext:
        allowPrivilegeEscalation: false
        runAsUser: 0
      command: ...
      image:...

但是当我描述rs时,我看到以下内容:
  Type     Reason        Age                From                   Message
  ----     ------        ----               ----                   -------
  Warning  FailedCreate  0s (x13 over 21s)  replicaset-controller  Error creating: pods "myapp-7cdd994c56-" is forbidden: PodSecurityPolicy: unable to admit pod: [spec.containers[0].securityContext.runAsUser: Invalid value: 0: running with the root UID is forbidden]

我做错了什么?

尝试创建一个无需副本集或部署,但使用与您上述发布的相同镜像和安全上下文的即席Pod。如果这个可以运行,但使用rs/deployment不行,那么这意味着您的rs控制器没有适当的角色绑定来使用psp。尝试创建一个角色绑定,以便在您的命名空间中使用默认SA的psp。 - P....
@P....,当我对纯Pod进行测试时,遇到了相同的问题。 - Rudziankoŭ
@Rudziankoŭ 集群是如何设置的?是云端还是本地部署?此外,是否有任何 PodSecurityPolicy?可以使用 kubectl get PodSecurityPolicy 进行检查。 - moonkotte
1个回答

0

错误信息如下:

PodSecurityPolicy:无法承认 Pod:[spec.containers [0] .securityContext.runAsUser:Invalid value: 0:禁止使用 root UID 运行]

Pod 安全策略文档 中定义为:

[...] 是一个控制 Pod 规范安全敏感方面的集群级资源。PodSecurityPolicy 对象定义了一组必须满足的条件,以便将 Pod 接受到系统中 [...]

您正在使用的集群禁止使用 root 容器(请参阅Pod 安全策略 - 用户和组)。

您需要自己更改 Pod 安全策略或请求您的集群管理员这样做。

请注意:

从 Kubernetes v1.21 开始,PodSecurityPolicy 已弃用,并将在 v1.25 中删除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接