【问题标题】:Unable to deploy image into GKE cluster无法将映像部署到 GKE 集群
【发布时间】:2021-11-28 06:13:43
【问题描述】:

我在本地创建了一个 docker 镜像,并使用 gcloud sdk 将其推送到 GCP 容器注册表。镜像成功推送到容器注册中心。

现在,我正在尝试通过选择“部署到 GKE”选项,从 GCP UI 手动将此映像从容器注册表部署到现有的私有 GKE 集群。 部署后,我收到一条错误消息“容器已 runasNonRoot 并且图像将以 root 身份运行 (pod:"appname-XXXXX_default(XXXXXX-XXXX....)", container:appName-1): CreateContainerConfigError" 任何帮助将不胜感激。

【问题讨论】:

标签: google-cloud-platform deployment google-kubernetes-engine google-container-registry gcloud-deploy


【解决方案1】:

听起来您已经设置了 pod 安全策略来避免以 root 身份运行容器。这是一个很好的安全策略,因为存在突破到集群内其他应用程序或节点的风险。

您可能想阅读Kubernetes security context 并可能重建您的容器。

在我的集群中,我经常需要使用使用 root 的公共镜像,在这种情况下,我会使用以前的镜像作为基础,创建一个新的(非 root)用户和新组来获取任何工具的所有权图片中需要。

更改 Dockerfile 中的默认用户:

FROM ubuntu


RUN groupadd --gid 15555 notroot \ 
    && useradd --uid 15555 --gid 15555 -ms /bin/false notroot\
    && chown -R notroot:notroot /home/notroot

USER notroot

ENTRYPOINT ["/bin/bash", "-c"]
CMD ["whoami && id"]

Here's a better explanation 为什么应该避免在 Docker 镜像中使用 root。

【讨论】:

    猜你喜欢
    • 2021-02-25
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 2021-04-13
    • 1970-01-01
    • 2020-12-16
    • 2022-12-13
    相关资源
    最近更新 更多