19.13. GitOps ZTP를 사용하여 단일 노드 OpenShift 클러스터 확장
GitOps Zero 10.0.0.1 Provisioning (ZTP)을 사용하여 단일 노드 OpenShift 클러스터를 확장할 수 있습니다. 단일 노드 OpenShift 클러스터에 작업자 노드를 추가하면 원래 단일 노드 OpenShift 클러스터는 컨트롤 플레인 노드 역할을 유지합니다. 작업자 노드를 추가해도 기존 단일 노드 OpenShift 클러스터에 대한 다운타임이 필요하지 않습니다.
단일 노드 OpenShift 클러스터에 추가할 수 있는 작업자 노드 수에 대한 제한은 없지만 추가 작업자 노드의 컨트롤 플레인 노드에서 예약된 CPU 할당을 다시 평가해야 합니다.
작업자 노드에 워크로드 파티셔닝이 필요한 경우 노드를 설치하기 전에 hub 클러스터에 관리형 클러스터 정책을 배포하고 수정해야 합니다. 이렇게 하면 GitOps ZTP 워크플로우에서 MachineConfig
를 작업자 노드에 적용하기 전에 워크로드 파티셔닝
머신 구성 풀과 연결되고 작업자 머신 구성 풀과 연결됩니다.
MachineConfig
오브젝트가 작업자
먼저 정책을 수정한 다음 작업자 노드를 설치하는 것이 좋습니다. 작업자 노드를 설치한 후 워크로드 파티션 매니페스트를 생성하는 경우 노드를 수동으로 드레이닝하고 데몬 세트에서 관리하는 모든 Pod를 삭제해야 합니다. 관리 데몬 세트에서 새 Pod를 생성하면 새 Pod에 워크로드 파티셔닝 프로세스가 수행됩니다.
GitOps ZTP를 사용하여 단일 노드 OpenShift 클러스터에 작업자 노드를 추가하는 것은 기술 프리뷰 기능입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
19.13.1. 작업자 노드에 프로필 적용 링크 복사링크가 클립보드에 복사되었습니다!
DU 프로필을 사용하여 추가 작업자 노드를 구성할 수 있습니다.
GitOps ZeroForwarded Provisioning (ZTP) common, group 및 site-specific PolicyGenTemplate
리소스를 사용하여 작업자 노드 클러스터에 RAN distributed unit (DU) 프로필을 적용할 수 있습니다. ArgoCD 정책
애플리케이션에 연결된 GitOps ZTP 파이프라인에는 ztp-site-generate
컨테이너를 추출할 때 out/argocd/example/policygentemplates
폴더에 있는 다음 CR이 포함되어 있습니다.
-
common-ranGen.yaml
-
group-du-sno-ranGen.yaml
-
example-sno-site.yaml
-
ns.yaml
-
kustomization.yaml
작업자 노드에서 DU 프로필을 구성하는 것은 업그레이드로 간주됩니다. 업그레이드 흐름을 시작하려면 기존 정책을 업데이트하거나 추가 정책을 생성해야 합니다. 그런 다음 클러스터 그룹의 정책을 조정하려면 ClusterGroupUpgrade
CR을 생성해야 합니다.
19.13.2. (선택 사항) PTP 및 SR-IOV 데몬 선택기 호환성 강화 링크 복사링크가 클립보드에 복사되었습니다!
GTP(HITOP) 플러그인 버전 4.11 이상을 사용하여 DU 프로필이 배포된 경우 master
로 레이블이 지정된 노드에만 데몬을 배치하도록 PTP 및 SR-IOV Operator를 구성할 수 있습니다. 이 구성으로 PTP 및 SR-IOV 데몬이 작업자 노드에서 작동하지 않습니다. PTP 및 SR-IOV 데몬 노드 선택기가 시스템에 잘못 구성된 경우 작업자 DU 프로필 구성을 진행하기 전에 데몬을 변경해야 합니다.
절차
설명된 클러스터 중 하나에서 PTP Operator의 데몬 노드 선택기 설정을 확인합니다.
oc get ptpoperatorconfig/default -n openshift-ptp -ojsonpath='{.spec}' | jq
$ oc get ptpoperatorconfig/default -n openshift-ptp -ojsonpath='{.spec}' | jq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PTP Operator 출력 예
{"daemonNodeSelector":{"node-role.kubernetes.io/master":""}}
{"daemonNodeSelector":{"node-role.kubernetes.io/master":""}}
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 노드 선택기가
마스터
로 설정된 경우 spoke는 변경이 필요한 GitOps ZTP 플러그인 버전으로 배포되었습니다.
설명된 클러스터 중 하나에서 SR-IOV Operator의 데몬 노드 선택기 설정을 확인합니다.
oc get sriovoperatorconfig/default -n \ openshift-sriov-network-operator -ojsonpath='{.spec}' | jq
$ oc get sriovoperatorconfig/default -n \ openshift-sriov-network-operator -ojsonpath='{.spec}' | jq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SR-IOV Operator의 출력 예
{"configDaemonNodeSelector":{"node-role.kubernetes.io/worker":""},"disableDrain":false,"enableInjector":true,"enableOperatorWebhook":true}
{"configDaemonNodeSelector":{"node-role.kubernetes.io/worker":""},"disableDrain":false,"enableInjector":true,"enableOperatorWebhook":true}
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 노드 선택기가
마스터
로 설정된 경우 spoke는 변경이 필요한 GitOps ZTP 플러그인 버전으로 배포되었습니다.
그룹 정책에서 다음
complianceType
및spec
항목을 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요daemonNodeSelector
필드를 변경하면 임시 PTP 동기화 손실 및 SR-IOV 연결이 끊어집니다.- Git의 변경 사항을 커밋한 다음 GitOps ZTP ArgoCD 애플리케이션에서 모니터링하는 Git 리포지토리로 내보냅니다.
19.13.3. PTP 및 SR-IOV 노드 선택기 호환성 링크 복사링크가 클립보드에 복사되었습니다!
PTP 구성 리소스 및 SR-IOV 네트워크 노드 정책은 node-role.kubernetes.io/master: ""
를 노드 선택기로 사용합니다. 추가 작업자 노드에 컨트롤 플레인 노드와 동일한 NIC 구성이 있는 경우 컨트롤 플레인 노드를 구성하는 데 사용되는 정책을 작업자 노드에 재사용할 수 있습니다. 그러나 "node-role.kubernetes.io/worker"
레이블과 같이 노드 유형을 둘 다 선택하도록 노드 선택기를 변경해야 합니다.
19.13.4. PolicyGenTemplate CR을 사용하여 작업자 노드에 작업자 노드 정책 적용 링크 복사링크가 클립보드에 복사되었습니다!
작업자 노드에 대한 정책을 생성할 수 있습니다.
절차
다음 정책 템플릿을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 일반
MachineConfig
CR은 작업자 노드에서 워크로드 파티셔닝을 구성하는 데 사용됩니다.crio
및kubelet
구성 파일의 콘텐츠를 생성할 수 있습니다.-
ArgoCD 정책 애플리케이션에서 모니터링하는 Git 리포지토리에 생성된
정책
템플릿을 추가합니다. -
kustomization.yaml
파일에 정책을 추가합니다. - Git의 변경 사항을 커밋한 다음 GitOps ZTP ArgoCD 애플리케이션에서 모니터링하는 Git 리포지토리로 내보냅니다.
새로운 정책을 스포크 클러스터에 수정하려면 TALM 사용자 정의 리소스를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
19.13.5. GitOps ZTP를 사용하여 단일 노드 OpenShift 클러스터에 작업자 노드 추가 링크 복사링크가 클립보드에 복사되었습니다!
기존 단일 노드 OpenShift 클러스터에 하나 이상의 작업자 노드를 추가하여 클러스터에서 사용 가능한 CPU 리소스를 늘릴 수 있습니다.
사전 요구 사항
- OpenShift Container Platform 4.11 이상 베어 메탈 허브 클러스터에서 RHACM 2.6 이상을 설치하고 구성
- 허브 클러스터에 Topology Aware Lifecycle Manager 설치
- hub 클러스터에 Red Hat OpenShift GitOps 설치
-
GitOps ZTP
ztp-site-generate
컨테이너 이미지 버전 4.12 이상을 사용합니다. - GitOps ZTP를 사용하여 관리형 단일 노드 OpenShift 클러스터 배포
- RHACM 문서에 설명된 대로 중앙 인프라 관리 구성
-
내부 API 엔드포인트
api-int.<cluster_name>.<base_domain
>을 확인하도록 클러스터에 DNS 서비스를 구성
절차
example-sno.yaml
siteConfig
매니페스트를 사용하여 클러스터를 배포한 경우 새 작업자 노드를spec.clusters['example-sno'].nodes
목록에 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow site
Config
파일의spec.nodes
섹션에 있는bmcCredentialsName
필드에서 참조하는 대로 새 호스트의 BMC 인증 시크릿을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Git의 변경 사항을 커밋한 다음 GitOps ZTP ArgoCD 애플리케이션에서 모니터링하는 Git 리포지토리로 내보냅니다.
ArgoCD
클러스터
애플리케이션이 동기화되면 GitOps ZTP 플러그인에서 생성한 hub 클러스터에 두 개의 새 매니페스트가 나타납니다.-
BareMetalHost
NMStateConfig
중요worker 노드에 대해
cpuset
필드를 구성해서는 안 됩니다. 노드 설치가 완료된 후 작업자 노드의 워크로드 파티션은 관리 정책을 통해 추가됩니다.
-
검증
여러 가지 방법으로 설치 프로세스를 모니터링할 수 있습니다.
다음 명령을 실행하여 사전 프로비저닝된 이미지가 생성되었는지 확인합니다.
oc get ppimg -n example-sno
$ oc get ppimg -n example-sno
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAMESPACE NAME READY REASON example-sno example-sno True ImageCreated example-sno example-node2 True ImageCreated
NAMESPACE NAME READY REASON example-sno example-sno True ImageCreated example-sno example-node2 True ImageCreated
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 베어 메탈 호스트의 상태를 확인합니다.
oc get bmh -n example-sno
$ oc get bmh -n example-sno
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME STATE CONSUMER ONLINE ERROR AGE example-sno provisioned true 69m example-node2 provisioning true 4m50s
NAME STATE CONSUMER ONLINE ERROR AGE example-sno provisioned true 69m example-node2 provisioning true 4m50s
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
provisioning
상태는 설치 미디어에서 부팅 중인 노드가 진행 중임을 나타냅니다.
설치 프로세스를 지속적으로 모니터링합니다.
다음 명령을 실행하여 에이전트 설치 프로세스를 확인합니다.
oc get agent -n example-sno --watch
$ oc get agent -n example-sno --watch
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 작업자 노드 설치가 완료되면 작업자 노드 인증서가 자동으로 승인됩니다. 이 시점에서 작업자는
ManagedClusterInfo
상태에 나타납니다. 다음 명령을 실행하여 상태를 확인합니다.oc get managedclusterinfo/example-sno -n example-sno -o \ jsonpath='{range .status.nodeList[*]}{.name}{"\t"}{.conditions}{"\t"}{.labels}{"\n"}{end}'
$ oc get managedclusterinfo/example-sno -n example-sno -o \ jsonpath='{range .status.nodeList[*]}{.name}{"\t"}{.conditions}{"\t"}{.labels}{"\n"}{end}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
example-sno [{"status":"True","type":"Ready"}] {"node-role.kubernetes.io/master":"","node-role.kubernetes.io/worker":""} example-node2 [{"status":"True","type":"Ready"}] {"node-role.kubernetes.io/worker":""}
example-sno [{"status":"True","type":"Ready"}] {"node-role.kubernetes.io/master":"","node-role.kubernetes.io/worker":""} example-node2 [{"status":"True","type":"Ready"}] {"node-role.kubernetes.io/worker":""}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow