kubernetes - PodSecurityPolicy 出现特定 ImagePullPolicy 故障
问题描述
我正在尝试在我的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 规则?
解决方案
发现了问题。对于 2 个特定版本v1.13.6
和v1.14.2
.
推荐阅读
- python - 时间序列预测 - 错误的结果
- python - 带有 postgres 的 Python Flask Restful 和 Sqlalchemy:未创建表
- selenium - Selenium 后台执行的问题(python)
- ruby-on-rails - 如何手动触发 Rails ActiveRecord 验证?(活动管理员)
- c# - 如何在月历c#中从数据库中加粗日期
- python - NLLLoss 只是一个正常的负函数?
- javascript - 如何在异步函数(javascript/react)的 for-in 循环中访问变量?
- tensorflow - 如何将 Yolov5 模型转换为 tensorflow.js
- django - 为什么我在运行测试时收到“ProgrammingError:关系“auth_user”不存在”异常?
- python - Azure Databricks 未在 Spark 上并行化