This documentation is for a release that is no longer maintained
See documentation for the latest supported version.3.5. 缓存镜像以便更快地开始工作区
要提高 OpenShift Dev Spaces 工作区的开始时间性能,请使用 Image Puller (一个 OpenShift Dev Spaces-agnostic)组件,可用于对 OpenShift 集群预拉取镜像。Image Puller 是一个额外的 OpenShift 部署,它会创建一个 DaemonSet,可以配置为在每个节点上预拉取相关的 OpenShift Dev Spaces 工作区镜像。当 OpenShift Dev Spaces 工作区启动时,这些镜像将已经可用,因此改进了工作空间开始时间。
Image Puller 为配置提供以下参数。
| 参数 | 使用 | 默认 |
|---|---|---|
|
| DaemonSet 健康检查间隔(以小时为单位) |
|
|
| 拉取程序运行时每个缓存的镜像的内存请求。请参阅 第 3.5.2 节 “定义内存设置”。 |
|
|
| 拉取程序运行时每个缓存的镜像的内存限值。请参阅 第 3.5.2 节 “定义内存设置”。 |
|
|
| 拉取器运行时每个缓存的镜像的处理器请求 |
|
|
| 拉取器运行时每个缓存的镜像的处理器限制 |
|
|
| 要创建的 DaemonSet 的名称 |
|
|
| 要创建的 Deployment 的名称 |
|
|
| 要创建的 DaemonSet 的 OpenShift 项目 |
|
|
|
要拉取镜像的分号分隔列表,格式为 < | |
|
| 节点选择器应用到 DaemonSet 创建的 pod |
|
|
| 关联性应用到由 DaemonSet 创建的 pod |
|
|
|
镜像 pull secret 列表,格式为 |
|
其他资源
3.5.1. 定义镜像列表 复制链接链接已复制到粘贴板!
Image Puller 可以预先拉取大多数镜像,包括全新镜像,如 che-machine-exec。但是,在 OpenShift 3.11 上预拉取(pull)时不支持挂载 Dockerfile 中的卷的镜像,如 traefik。
流程
-
通过导航到
"https://devspaces-<openshift_deployment_name>.<domain_name>"/plugin-registry/v3/external_images.txtURL 来拉取相关容器镜像的列表。 -
从列表中确定预拉取的镜像。为了加快工作空间启动时间,请考虑拉取与工作区相关的镜像,如
generic-developer-image、che-code' 和che-gateway。
3.5.2. 定义内存设置 复制链接链接已复制到粘贴板!
定义内存请求和限值参数,以确保拉取的容器和平台有足够的内存来运行。
先决条件
流程
-
要定义
CACHING_MEMORY_REQUEST或CACHING_MEMORY_LIMIT的最小值,请考虑运行每个容器镜像所需的必要内存量。 要定义
CACHING_MEMORY_REQUEST或CACHING_MEMORY_LIMIT的 maximal 值,请考虑分配给集群中的 DaemonSet Pod 的总内存:(memory limit) * (number of images) * (number of nodes in the cluster)
(memory limit) * (number of images) * (number of nodes in the cluster)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 20 节点上拉取 5 个镜像,容器内存限值为
20Mi需要2000Mi内存。
3.5.3. 使用 Web 控制台在 OpenShift 上安装镜像 puller 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Web 控制台在 OpenShift 上安装社区支持的 Kubernetes Image Puller Operator。
先决条件
- 第 3.5.1 节 “定义镜像列表”
- 第 3.5.2 节 “定义内存设置”.
- 集群管理员的 OpenShift Web 控制台会话。请参阅 访问 Web 控制台。
流程
- 安装社区支持的 Kubernetes Image Puller Operator。请参阅使用 Web 控制台 从 OperatorHub 安装。
-
从支持的
Kubernetes Image PullerOperator 创建 kubernetes-image-puller KubernetesImagePuller 操作对象。请参阅从已安装的 Operator 创建应用程序。
3.5.4. 使用 CLI 在 OpenShift 上安装镜像 puller 复制链接链接已复制到粘贴板!
您可以使用 OpenShift oc 管理工具在 OpenShift 上安装 Kubernetes Image Puller。
先决条件
- 第 3.5.1 节 “定义镜像列表”.
- 第 3.5.2 节 “定义内存设置”.
-
具有 OpenShift 集群的管理权限的活跃
oc会话。请参阅 OpenShift CLI 入门。
流程
克隆 Image Puller 存储库,并获取包含 OpenShift 模板的目录:
git clone https://github.com/che-incubator/kubernetes-image-puller cd kubernetes-image-puller/deploy/openshift
$ git clone https://github.com/che-incubator/kubernetes-image-puller $ cd kubernetes-image-puller/deploy/openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下参数配置
app.yaml、configmap.yaml和serviceaccount.yamlOpenShift 模板:Expand 表 3.17. app.yaml中的镜像拉取(puller OpenShift 模板参数) 值 使用 默认 DEPLOYMENT_NAMEConfigMap 中的
DEPLOYMENT_NAME的值kubernetes-image-pullerIMAGE用于
kubernetes-image-puller部署的镜像registry.redhat.io/devspaces/imagepuller-rhel8:3.3IMAGE_TAG要拉取的镜像标签
latestSERVICEACCOUNT_NAME部署创建和使用的 ServiceAccount 的名称
kubernetes-image-pullerExpand 表 3.18. configmap.yaml中的 image Puller OpenShift 模板参数 值 使用 默认 CACHING_CPU_LIMITConfigMap 中的
CACHING_CPU_LIMIT值.2CACHING_CPU_REQUESTConfigMap 中的
CACHING_CPU_REQUEST值.05CACHING_INTERVAL_HOURSConfigMap 中的
CACHING_INTERVAL_HOURS的值"1"CACHING_MEMORY_LIMITConfigMap 中的
CACHING_MEMORY_LIMIT值"20Mi"CACHING_MEMORY_REQUESTConfigMap 中的
CACHING_MEMORY_REQUEST的值"10Mi"DAEMONSET_NAMEConfigMap 中的
DAEMONSET_NAME的值kubernetes-image-pullerDEPLOYMENT_NAMEConfigMap 中的
DEPLOYMENT_NAME的值kubernetes-image-puller镜像ConfigMap 中的
IMAGES值"undefined"NAMESPACEConfigMap 中
NAMESPACE的值k8s-image-pullerNODE_SELECTORConfigMap 中的
NODE_SELECTOR的值"{}"Expand 表 3.19. serviceaccount.yaml中的 image Puller OpenShift 模板参数 值 使用 默认 SERVICEACCOUNT_NAME部署创建和使用的 ServiceAccount 的名称
kubernetes-image-puller创建用于托管 Image Puller 的 OpenShift 项目:
oc new-project <k8s-image-puller>
$ oc new-project <k8s-image-puller>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 处理并应用模板来安装 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 -
$ 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 Copied! Toggle word wrap Toggle overflow
验证步骤
验证是否存在 < kubernetes-image-puller> 部署和 < kubernetes-image-puller> DaemonSet。DaemonSet 需要具有集群中每个节点的 Pod:
oc get deployment,daemonset,pod --namespace <k8s-image-puller>
$ oc get deployment,daemonset,pod --namespace <k8s-image-puller>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 < kubernetes-image-puller >
ConfigMap的值。oc get configmap <kubernetes-image-puller> --output yaml
$ oc get configmap <kubernetes-image-puller> --output yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow