3.5. 缓存镜像以便更快地开始工作区


要提高 OpenShift Dev Spaces 工作区的开始时间性能,请使用 Image Puller (一个 OpenShift Dev Spaces-agnostic)组件,可用于对 OpenShift 集群预拉取镜像。Image Puller 是一个额外的 OpenShift 部署,它会创建一个 DaemonSet,可以配置为在每个节点上预拉取相关的 OpenShift Dev Spaces 工作区镜像。当 OpenShift Dev Spaces 工作区启动时,这些镜像将已经可用,因此改进了工作空间开始时间。

Image Puller 为配置提供以下参数。

Expand
表 3.16. 镜像拉取器参数
参数使用默认

CACHING_INTERVAL_HOURS

DaemonSet 健康检查间隔(以小时为单位)

"1"

CACHING_MEMORY_REQUEST

拉取程序运行时每个缓存的镜像的内存请求。请参阅 第 3.5.2 节 “定义内存设置”

10Mi

CACHING_MEMORY_LIMIT

拉取程序运行时每个缓存的镜像的内存限值。请参阅 第 3.5.2 节 “定义内存设置”

20Mi

CACHING_CPU_REQUEST

拉取器运行时每个缓存的镜像的处理器请求

.05 或 50 millicores

CACHING_CPU_LIMIT

拉取器运行时每个缓存的镜像的处理器限制

.2 或 200 毫秒

DAEMONSET_NAME

要创建的 DaemonSet 的名称

kubernetes-image-puller

DEPLOYMENT_NAME

要创建的 Deployment 的名称

kubernetes-image-puller

NAMESPACE

要创建的 DaemonSet 的 OpenShift 项目

k8s-image-puller

镜像

要拉取镜像的分号分隔列表,格式为 < name1> = <image1&gt; ; &lt;name2> = &lt;image2&gt;。请参阅 第 3.5.1 节 “定义镜像列表”

 

NODE_SELECTOR

节点选择器应用到 DaemonSet 创建的 pod

'{}'

关联性

关联性应用到由 DaemonSet 创建的 pod

'{}'

IMAGE_PULL_SECRETS

镜像 pull secret 列表,格式为 pullsecret1;…​ 以添加到由 DaemonSet 创建的 pod。这些 secret 需要位于镜像拉取(puller)的命名空间中,集群管理员必须创建它们。

""

3.5.1. 定义镜像列表

Image Puller 可以预先拉取大多数镜像,包括全新镜像,如 che-machine-exec。但是,在 OpenShift 3.11 上预拉取(pull)时不支持挂载 Dockerfile 中的卷的镜像,如 traefik

流程

  1. 通过导航到 "https://devspaces-<openshift_deployment_name>.<domain_name>"/plugin-registry/v3/external_images.txt URL 来拉取相关容器镜像的列表。
  2. 从列表中确定预拉取的镜像。为了加快工作空间启动时间,请考虑拉取与工作区相关的镜像,如 generic-developer-image、che-code' 和 che-gateway

3.5.2. 定义内存设置

定义内存请求和限值参数,以确保拉取的容器和平台有足够的内存来运行。

流程

  1. 要定义 CACHING_MEMORY_REQUESTCACHING_MEMORY_LIMIT 的最小值,请考虑运行每个容器镜像所需的必要内存量。
  2. 要定义 CACHING_MEMORY_REQUESTCACHING_MEMORY_LIMIT 的 maximal 值,请考虑分配给集群中的 DaemonSet Pod 的总内存:

    (memory limit) * (number of images) * (number of nodes in the cluster)
    Copy to Clipboard Toggle word wrap

    在 20 节点上拉取 5 个镜像,容器内存限值为 20Mi 需要 2000Mi 内存。

您可以使用 OpenShift Web 控制台在 OpenShift 上安装社区支持的 Kubernetes Image Puller Operator。

先决条件

流程

  1. 安装社区支持的 Kubernetes Image Puller Operator。请参阅使用 Web 控制台 从 OperatorHub 安装
  2. 从支持的 Kubernetes Image Puller Operator 创建 kubernetes-image-puller KubernetesImagePuller 操作对象。请参阅从已安装的 Operator 创建应用程序

3.5.4. 使用 CLI 在 OpenShift 上安装镜像 puller

您可以使用 OpenShift oc 管理工具在 OpenShift 上安装 Kubernetes Image Puller。

先决条件

流程

  1. 克隆 Image Puller 存储库,并获取包含 OpenShift 模板的目录:

    $ git clone https://github.com/che-incubator/kubernetes-image-puller
    $ cd kubernetes-image-puller/deploy/openshift
    Copy to Clipboard Toggle word wrap
  2. 使用以下参数配置 app.yamlconfigmap.yamlserviceaccount.yaml OpenShift 模板:

    Expand
    表 3.17. app.yaml中的镜像拉取(puller OpenShift 模板参数)
    使用默认

    DEPLOYMENT_NAME

    ConfigMap 中的 DEPLOYMENT_NAME 的值

    kubernetes-image-puller

    IMAGE

    用于 kubernetes-image-puller 部署的镜像

    registry.redhat.io/devspaces/imagepuller-rhel8:3.3

    IMAGE_TAG

    要拉取的镜像标签

    latest

    SERVICEACCOUNT_NAME

    部署创建和使用的 ServiceAccount 的名称

    kubernetes-image-puller

    Expand
    表 3.18. configmap.yaml中的 image Puller OpenShift 模板参数
    使用默认

    CACHING_CPU_LIMIT

    ConfigMap 中的 CACHING_CPU_LIMIT

    .2

    CACHING_CPU_REQUEST

    ConfigMap 中的 CACHING_CPU_REQUEST

    .05

    CACHING_INTERVAL_HOURS

    ConfigMap 中的 CACHING_INTERVAL_HOURS 的值

    "1"

    CACHING_MEMORY_LIMIT

    ConfigMap 中的 CACHING_MEMORY_LIMIT

    "20Mi"

    CACHING_MEMORY_REQUEST

    ConfigMap 中的 CACHING_MEMORY_REQUEST 的值

    "10Mi"

    DAEMONSET_NAME

    ConfigMap 中的 DAEMONSET_NAME 的值

    kubernetes-image-puller

    DEPLOYMENT_NAME

    ConfigMap 中的 DEPLOYMENT_NAME 的值

    kubernetes-image-puller

    镜像

    ConfigMap 中的 IMAGES

    "undefined"

    NAMESPACE

    ConfigMap 中 NAMESPACE 的值

    k8s-image-puller

    NODE_SELECTOR

    ConfigMap 中的 NODE_SELECTOR 的值

    "{}"

    Expand
    表 3.19. serviceaccount.yaml中的 image Puller OpenShift 模板参数
    使用默认

    SERVICEACCOUNT_NAME

    部署创建和使用的 ServiceAccount 的名称

    kubernetes-image-puller

  3. 创建用于托管 Image Puller 的 OpenShift 项目:

    $ oc new-project <k8s-image-puller>
    Copy to Clipboard Toggle word wrap
  4. 处理并应用模板来安装 puller:

    $ oc process -f serviceaccount.yaml | oc apply -f -
    $ oc process -f configmap.yaml | oc apply -f -
    $ oc process -f app.yaml | oc apply -f -
    Copy to Clipboard Toggle word wrap

验证步骤

  1. 验证是否存在 < kubernetes-image-puller> 部署和 < kubernetes-image-puller> DaemonSet。DaemonSet 需要具有集群中每个节点的 Pod:

    $ oc get deployment,daemonset,pod --namespace <k8s-image-puller>
    Copy to Clipboard Toggle word wrap
  2. 验证 < kubernetes-image-puller > ConfigMap 的值。

    $ oc get configmap <kubernetes-image-puller> --output yaml
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat