5.5. 在基础架构节点上部署 Red Hat Quay


默认情况下,在使用 Red Hat Quay Operator 部署 registry 时,Quay 相关的 pod 会放置在任意 worker 节点上。有关如何使用机器集将节点配置为仅托管基础架构组件的更多信息,请参阅 创建基础架构机器集

如果您不使用 OpenShift Container Platform 机器集资源来部署 infra 节点,本文档中的部分演示了如何手动标记和污点节点用于基础架构目的。在手动配置基础架构节点或使用机器集后,您可以使用节点选择器和容限来控制在这些节点上放置 Quay pod。

5.5.1. 为基础架构使用标记和污点节点

使用以下步骤为基础架构使用标记和包含节点。

  1. 输入以下命令显示 master 和 worker 节点。在本例中,有三个 master 节点和 6 个 worker 节点。

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                                               STATUS   ROLES    AGE     VERSION
    user1-jcnp6-master-0.c.quay-devel.internal         Ready    master   3h30m   v1.20.0+ba45583
    user1-jcnp6-master-1.c.quay-devel.internal         Ready    master   3h30m   v1.20.0+ba45583
    user1-jcnp6-master-2.c.quay-devel.internal         Ready    master   3h30m   v1.20.0+ba45583
    user1-jcnp6-worker-b-65plj.c.quay-devel.internal   Ready    worker   3h21m   v1.20.0+ba45583
    user1-jcnp6-worker-b-jr7hc.c.quay-devel.internal   Ready    worker   3h21m   v1.20.0+ba45583
    user1-jcnp6-worker-c-jrq4v.c.quay-devel.internal   Ready    worker   3h21m   v1.20.0+ba45583
    user1-jcnp6-worker-c-pwxfp.c.quay-devel.internal   Ready    worker   3h21m   v1.20.0+ba45583
    user1-jcnp6-worker-d-h5tv2.c.quay-devel.internal   Ready    worker   3h22m   v1.20.0+ba45583
    user1-jcnp6-worker-d-m9gg4.c.quay-devel.internal   Ready    worker   3h21m   v1.20.0+ba45583
    Copy to Clipboard Toggle word wrap

  2. 输入以下命令为基础架构使用标记三个 worker 节点:

    $ oc label node --overwrite user1-jcnp6-worker-c-pwxfp.c.quay-devel.internal node-role.kubernetes.io/infra=
    Copy to Clipboard Toggle word wrap
    $ oc label node --overwrite user1-jcnp6-worker-d-h5tv2.c.quay-devel.internal node-role.kubernetes.io/infra=
    Copy to Clipboard Toggle word wrap
    $ oc label node --overwrite user1-jcnp6-worker-d-m9gg4.c.quay-devel.internal node-role.kubernetes.io/infra=
    Copy to Clipboard Toggle word wrap
  3. 现在,当列出集群中的节点时,最后三个 worker 节点具有 infra 角色。例如:

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    示例

    NAME                                               STATUS   ROLES          AGE     VERSION
    user1-jcnp6-master-0.c.quay-devel.internal         Ready    master         4h14m   v1.20.0+ba45583
    user1-jcnp6-master-1.c.quay-devel.internal         Ready    master         4h15m   v1.20.0+ba45583
    user1-jcnp6-master-2.c.quay-devel.internal         Ready    master         4h14m   v1.20.0+ba45583
    user1-jcnp6-worker-b-65plj.c.quay-devel.internal   Ready    worker         4h6m    v1.20.0+ba45583
    user1-jcnp6-worker-b-jr7hc.c.quay-devel.internal   Ready    worker         4h5m    v1.20.0+ba45583
    user1-jcnp6-worker-c-jrq4v.c.quay-devel.internal   Ready    worker         4h5m    v1.20.0+ba45583
    user1-jcnp6-worker-c-pwxfp.c.quay-devel.internal   Ready    infra,worker   4h6m    v1.20.0+ba45583
    user1-jcnp6-worker-d-h5tv2.c.quay-devel.internal   Ready    infra,worker   4h6m    v1.20.0+ba45583
    user1-jcnp6-worker-d-m9gg4.c.quay-devel.internal   Ready    infra,worker   4h6m    v1.20.0+ba4558
    Copy to Clipboard Toggle word wrap

  4. 当为 worker 节点分配 infra 角色时,用户工作负载可能会意外地分配给 infra 节点。要避免这种情况,您可以将污点应用到 infra 节点,然后为您要控制的 pod 添加容限。例如:

    $ oc adm taint nodes user1-jcnp6-worker-c-pwxfp.c.quay-devel.internal node-role.kubernetes.io/infra:NoSchedule
    Copy to Clipboard Toggle word wrap
    $ oc adm taint nodes user1-jcnp6-worker-d-h5tv2.c.quay-devel.internal node-role.kubernetes.io/infra:NoSchedule
    Copy to Clipboard Toggle word wrap
    $ oc adm taint nodes user1-jcnp6-worker-d-m9gg4.c.quay-devel.internal node-role.kubernetes.io/infra:NoSchedule
    Copy to Clipboard Toggle word wrap

5.5.2. 使用节点选择器和容限创建项目

使用以下步骤创建带有节点选择器和容限的项目。

注意

如果您已经使用 Operator 部署 Red Hat Quay,请删除已安装的 Operator 以及您为部署创建的任何特定命名空间。

步骤

  1. 创建项目资源,指定节点选择器和容限。例如:

    quay-registry.yaml

    kind: Project
    apiVersion: project.openshift.io/v1
    metadata:
      name: quay-registry
      annotations:
        openshift.io/node-selector: 'node-role.kubernetes.io/infra='
        scheduler.alpha.kubernetes.io/defaultTolerations: >-
          [{"operator": "Exists", "effect": "NoSchedule", "key":
          "node-role.kubernetes.io/infra"}]
    Copy to Clipboard Toggle word wrap

  2. 运行以下命令来创建项目:

    $ oc apply -f quay-registry.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    project.project.openshift.io/quay-registry created
    Copy to Clipboard Toggle word wrap

quay-registry 命名空间中创建的后续资源现在应调度到专用基础架构节点上。

5.5.3. 在命名空间中安装 Red Hat Quay Operator

使用以下步骤在命名空间中安装 Red Hat Quay Operator。

  • 要在特定命名空间中安装 Red Hat Quay Operator,您必须明确指定适当的项目命名空间,如以下命令所示。在本例中,我们使用 quay-registry。ths 会导致 Operator pod 登录三个基础架构节点之一。例如:

    $ oc get pods -n quay-registry -o wide
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                                    READY   STATUS    RESTARTS   AGE   IP            NODE                                              
    quay-operator.v3.4.1-6f6597d8d8-bd4dp   1/1     Running   0          30s   10.131.0.16   user1-jcnp6-worker-d-h5tv2.c.quay-devel.internal
    Copy to Clipboard Toggle word wrap

5.5.4. 创建 Red Hat Quay registry

使用以下步骤创建 Red Hat Quay registry。

  • 运行以下命令来创建 Red Hat Quay registry。然后,等待部署标记为 就绪。在以下示例中,您应看到它们仅调度到为基础架构目的标记的三个节点上。

    $ oc get pods -n quay-registry -o wide
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                                                   READY   STATUS      RESTARTS   AGE     IP            NODE                                                
    example-registry-clair-app-789d6d984d-gpbwd            1/1     Running     1          5m57s   10.130.2.80   user1-jcnp6-worker-d-m9gg4.c.quay-devel.internal
    example-registry-clair-postgres-7c8697f5-zkzht         1/1     Running     0          4m53s   10.129.2.19   user1-jcnp6-worker-c-pwxfp.c.quay-devel.internal
    example-registry-quay-app-56dd755b6d-glbf7             1/1     Running     1          5m57s   10.129.2.17   user1-jcnp6-worker-c-pwxfp.c.quay-devel.internal
    example-registry-quay-config-editor-7bf9bccc7b-dpc6d   1/1     Running     0          5m57s   10.131.0.23   user1-jcnp6-worker-d-h5tv2.c.quay-devel.internal
    example-registry-quay-database-8dc7cfd69-dr2cc         1/1     Running     0          5m43s   10.129.2.18   user1-jcnp6-worker-c-pwxfp.c.quay-devel.internal
    example-registry-quay-mirror-78df886bcc-v75p9          1/1     Running     0          5m16s   10.131.0.24   user1-jcnp6-worker-d-h5tv2.c.quay-devel.internal
    example-registry-quay-postgres-init-8s8g9              0/1     Completed   0          5m54s   10.130.2.79   user1-jcnp6-worker-d-m9gg4.c.quay-devel.internal
    example-registry-quay-redis-5688ddcdb6-ndp4t           1/1     Running     0          5m56s   10.130.2.78   user1-jcnp6-worker-d-m9gg4.c.quay-devel.internal
    quay-operator.v3.4.1-6f6597d8d8-bd4dp                  1/1     Running     0          22m     10.131.0.16   user1-jcnp6-worker-d-h5tv2.c.quay-devel.internal
    Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat