Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

13.3. Kubernetes 资源使用镜像流

作为 OpenShift Container Platform 的原生资源,镜像流可以直接与 OpenShift Container Platform 中的所有其他原生资源一起来工作(如构建部署)。当前,它也可能可以和其与原生 Kubernetes 资源一起工作,如作业复制控制器、副本设置或 Kubernetes 部署

集群管理员可以精确配置可以使用什么资源

启用后,可以将镜像流的引用放在资源的 image 字段中。使用此功能时,只能引用位于与资源相同的项目中的镜像流。镜像流引用必须包含单个片段值,如 ruby:2.5,其中 ruby 是镜像流的名称,它具有名为 2.5 的标签,并位于与进行引用的资源相同的项目中。

有两种方法可以做到这一点:

  1. 启用针对特定资源的镜像流解析。这只允许此资源使用 image 字段中的镜像流名称。
  2. 在镜像流上启用镜像流解析。这允许指向此镜像流的所有资源在 image 字段中使用它。

这两个操作都可使用 oc set image-lookup 来完成。例如,以下命令允许所有资源引用名为 mysql 的镜像流:

$ oc set image-lookup mysql

这会将 Imagestream.spec.lookupPolicy.local 字段设置为 true。

启用镜像查询的镜像流

apiVersion: v1
kind: ImageStream
metadata:
  annotations:
    openshift.io/display-name: mysql
  name: mysql
  namespace: myproject
spec:
  lookupPolicy:
    local: true

启用后,会为镜像流中的所有标签启用此行为。

您可以查询镜像流并查看是否设置了选项:

$ oc set image-lookup

您还可以在特定资源上启用镜像查找。此命令允许名为 mysql 的 Kubernetes 部署使用镜像流:

$ oc set image-lookup deploy/mysql

这会在部署上设置 alpha.image.policy.openshift.io/resolve-names 注解。

启用镜像查询部署

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  namespace: myproject
spec:
  replicas: 1
  template:
    metadata:
      annotations:
        alpha.image.policy.openshift.io/resolve-names: '*'
    spec:
      containers:
      - image: mysql:latest
        imagePullPolicy: Always
        name: mysql

要禁用镜像查找,使用 --enabled=false

$ oc set image-lookup deploy/mysql --enabled=false