首页 > 解决方案 > PodSecurityPolicy 出现特定 ImagePullPolicy 故障

问题描述

我正在尝试在我的v1.13.6-gke.6k8s 集群中部署一个 Pod。

我使用的图像非常简单:

FROM scratch
LABEL maintainer "Bitnami <containers@bitnami.com>"

COPY rootfs /

USER 1001
CMD [ "/chart-repo" ]

如您所见,用户设置为1001.

我在其中部署 Pod 的集群具有 PSP 设置。

spec:
  allowPrivilegeEscalation: false
  allowedCapabilities:
  - IPC_LOCK
  fsGroup:
    ranges:
    - max: 65535
      min: 1
    rule: MustRunAs
  runAsUser:
    rule: MustRunAsNonRoot

所以基本上按照rule: MustRunAsNonRoot规则,上面的图像应该运行。

但是当我运行图像时,我随机遇到:

Error: container has runAsNonRoot and image will run as root

所以进一步挖掘,我得到了这个模式:

每次我用 运行图像时imagePullPolicy: IfNotPresent,我总是遇到问题。这意味着每次我拿起缓存的图像时,都会出现container has runAsNonRoot错误。

  Normal   Pulled     12s (x3 over 14s)  kubelet, test-1905-default-pool-1b8e4761-fz8s  Container image "my-repo/bitnami/kubeapps-chart-repo:1.4.0-r1" already present on machine
  Warning  Failed     12s (x3 over 14s)  kubelet, test-1905-default-pool-1b8e4761-fz8s  Error: container has runAsNonRoot and image will run as root

每次我将图像运行为imagePullPolicy: Always时,图像都会成功运行:

  Normal  Pulled     6s    kubelet, test-1905-default-pool-1b8e4761-sh5g  Successfully pulled image "my-repo/bitnami/kubeapps-chart-repo:1.4.0-r1"
  Normal  Created    5s    kubelet, test-1905-default-pool-1b8e4761-sh5g  Created container
  Normal  Started    5s    kubelet, test-1905-default-pool-1b8e4761-sh5g  Started container

所以我不太确定这一切是关于什么的。我的意思只是因为ImagePullPolicy不同,为什么它错误地设置了 PSP 规则?

标签: kubernetesgoogle-kubernetes-enginekubernetes-pod

解决方案


发现了问题。对于 2 个特定版本v1.13.6v1.14.2.

https://github.com/kubernetes/kubernetes/issues/78308


推荐阅读