我正在尝试在v1.13.6-gke.6
k8s集群中部署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规则?
答案 0 :(得分:1)
找出问题所在。对于两个特定版本v1.13.6
和v1.14.2
的k8s,这是一个已知问题。
答案 1 :(得分:0)
很难根据描述来判断。您的集群中是否有多个节点?
首先,如果您发现imagePullPolicy: IfNotPresent
出现了错误,而没有发现imagePullPolicy: Always
出现了错误,则很可能是由于本地节点上的容器映像与容器注册表中的容器映像不同。
可能是您在本地使用相同标签的my-repo/bitnami/kubeapps-chart-repo
的较旧版本?