第 8 章 高级概念
8.1. 在基础架构节点上部署 Quay 复制链接链接已复制到粘贴板!
默认情况下,在使用 Operator 部署 registry 时,Quay 相关的 pod 会放置在任意 worker 节点上。OpenShift Container Platform 文档演示了如何使用机器集配置节点来只托管基础架构组件(请参阅 https://docs.openshift.com/container-platform/4.7/machine_management/creating-infrastructure-machinesets.html)。
如果您不使用 OCP MachineSet 资源来部署 infra 节点,本节演示了如何为基础架构需要手动标记和污点节点。
在配置了基础架构节点(手动或使用机器集)后,您可以使用节点选择器和容限来控制 Quay pod 在这些节点中的放置。
8.1.1. 基础架构使用的标签和污点节点 复制链接链接已复制到粘贴板!
在本例中,集群中有三个 master 节点和 6 个 worker 节点:
为基础架构添加最后三个 worker 节点添加标签:
oc label node --overwrite user1-jcnp6-worker-c-pwxfp.c.quay-devel.internal node-role.kubernetes.io/infra= oc label node --overwrite user1-jcnp6-worker-d-h5tv2.c.quay-devel.internal node-role.kubernetes.io/infra= oc label node --overwrite user1-jcnp6-worker-d-m9gg4.c.quay-devel.internal node-role.kubernetes.io/infra=
$ oc label node --overwrite user1-jcnp6-worker-c-pwxfp.c.quay-devel.internal node-role.kubernetes.io/infra=
$ oc label node --overwrite user1-jcnp6-worker-d-h5tv2.c.quay-devel.internal node-role.kubernetes.io/infra=
$ oc label node --overwrite user1-jcnp6-worker-d-m9gg4.c.quay-devel.internal node-role.kubernetes.io/infra=
现在,当您列出集群中的节点时,最后的 3 个 worker 节点会带有 infra
的角色:
当将 infra 节点分配为 worker 时,用户工作负载可能会意外地分配给 infra 节点。要避免这种情况,您可以将污点应用到 infra 节点,然后为您要控制的 pod 添加容限。
oc adm taint nodes user1-jcnp6-worker-c-pwxfp.c.quay-devel.internal node-role.kubernetes.io/infra:NoSchedule oc adm taint nodes user1-jcnp6-worker-d-h5tv2.c.quay-devel.internal node-role.kubernetes.io/infra:NoSchedule oc adm taint nodes user1-jcnp6-worker-d-m9gg4.c.quay-devel.internal node-role.kubernetes.io/infra:NoSchedule
$ oc adm taint nodes user1-jcnp6-worker-c-pwxfp.c.quay-devel.internal node-role.kubernetes.io/infra:NoSchedule
$ oc adm taint nodes user1-jcnp6-worker-d-h5tv2.c.quay-devel.internal node-role.kubernetes.io/infra:NoSchedule
$ oc adm taint nodes user1-jcnp6-worker-d-m9gg4.c.quay-devel.internal node-role.kubernetes.io/infra:NoSchedule
8.1.2. 使用节点选择器和容限创建项目 复制链接链接已复制到粘贴板!
如果您已经使用 Quay Operator 部署了 Quay,请删除已安装的 Operator 和您创建的任何特定命名空间。
创建 Project 资源,指定节点选择器和容限,如下例所示:
quay-registry.yaml
使用 oc apply
命令来创建项目:
oc apply -f quay-registry.yaml
$ oc apply -f quay-registry.yaml
project.project.openshift.io/quay-registry created
quay-registry
命名空间中创建的任何后续资源现在都应调度到专用基础架构节点。
8.1.3. 在命名空间中安装 Quay Operator 复制链接链接已复制到粘贴板!
安装 Quay Operator 时,在本例中为 quay-registry
时明确指定适当的项目命名空间。这将导致 Operator pod 本身登录三个基础架构节点之一:
oc get pods -n quay-registry -o wide
$ oc get pods -n quay-registry -o wide
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
8.1.4. 创建 registry 复制链接链接已复制到粘贴板!
如前所述创建注册表,然后等待部署就绪。当您列出 Quay pod 时,您应该会看到它们只调度到您为基础架构考虑的三个节点上: