8장. 고급 개념
8.1. 인프라 노드에 Quay 배포 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 Quay 관련 포드는 Operator를 사용하여 레지스트리를 배포할 때 임의의 작업자 노드에 배치됩니다. OpenShift Container Platform 설명서에서는 머신 세트를 사용하여 호스트 인프라 구성 요소에만 노드를 구성하는 방법을 보여줍니다( https://docs.openshift.com/container-platform/4.7/machine_management/creating-infrastructure-machinesets.html참조).
OCP MachineSet 리소스를 사용하여 인프라 노드를 배포하지 않는 경우 이 섹션에서는 인프라 목적으로 노드를 수동으로 레이블을 지정하고 테인트하는 방법을 보여줍니다.
인프라 노드를 수동 또는 머신 세트를 사용하여 구성한 후에는 노드 선택기 및 허용 오차를 사용하여 이러한 노드에 Quay Pod 배치를 제어할 수 있습니다.
8.1.1. 인프라가 사용할 라벨 및 테인트 노드 링크 복사링크가 클립보드에 복사되었습니다!
이 예제에서 사용되는 클러스터에는 3개의 마스터 노드와 6개의 작업자 노드가 있습니다.
$ oc get nodes
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
인프라 사용을 위해 마지막 세 개의 작업자 노드에 레이블을 지정합니다.
$ 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개의 작업자 노드가 infra 의 추가 역할을 갖습니다.
$ oc get nodes
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+ba45583
인프라 노드가 작업자로 할당되면 사용자 워크로드가 의도치 않게 인프라 노드에 할당될 수 있습니다. 이를 방지하려면 인프라 노드에 테인트를 적용한 다음 제어하려는 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
8.1.2. 노드 선택기 및 허용 오차를 사용하여 프로젝트를 생성 링크 복사링크가 클립보드에 복사되었습니다!
Quay Operator를 사용하여 Quay를 이미 배포한 경우, 설치된 Operator 및 배포에 대해 생성한 특정 네임스페이스를 제거합니다.
다음 예와 같이 노드 선택기 및 허용 오차를 지정하여 프로젝트 리소스를 생성합니다.
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"}
]
oc apply 명령을 사용하여 프로젝트를 생성합니다.
$ 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
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. 레지스트리를 생성 링크 복사링크가 클립보드에 복사되었습니다!
앞에서 설명한 대로 레지스트리를 생성한 다음 배포가 준비될 때까지 기다립니다. Quay 포드를 나열하면 인프라 목적으로 레이블이 지정된 세 개의 노드에서만 예약되었음을 확인할 수 있습니다.
$ oc get pods -n quay-registry -o wide
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