我正在尝试在我的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规则?
发布于 2019-06-18 03:55:01
已找到问题所在。这是两个特定版本v1.13.6和v1.14.2的k8s的已知问题。
发布于 2019-06-18 03:37:37
根据描述很难辨别。您的集群中是否有多个节点?
首先,如果您在imagePullPolicy: IfNotPresent上看到错误,而在imagePullPolicy: Always上看不到错误,很可能是因为本地节点上的容器镜像与容器注册表中的容器镜像不同。
您可能在本地有一个具有相同标记的较旧版本的my-repo/bitnami/kubeapps-chart-repo?
https://stackoverflow.com/questions/56635078
复制相似问题