4.6. IBM Power에 호스팅된 컨트롤 플레인 배포
클러스터를 호스팅 클러스터로 구성하여 호스팅된 제어 평면을 배포할 수 있습니다. 호스팅 클러스터는 제어 평면이 호스팅되는 OpenShift Container Platform 클러스터입니다. 호스팅 클러스터는 관리 클러스터라고도 합니다.
관리 클러스터는 관리되는 클러스터가 아닙니다. 관리형 클러스터는 허브 클러스터가 관리하는 클러스터입니다.
멀티클러스터 엔진 Operator는 관리되는 허브 클러스터인 기본 local-cluster
와 호스팅 클러스터인 허브 클러스터만 지원합니다.
베어 메탈에서 호스팅된 제어 평면을 프로비저닝하려면 Agent 플랫폼을 사용할 수 있습니다. Agent 플랫폼은 중앙 인프라 관리 서비스를 사용하여 호스팅된 클러스터에 워커 노드를 추가합니다. 자세한 내용은 "중앙 인프라 관리 서비스 활성화"를 참조하세요.
각 IBM Power 호스트는 중앙 인프라 관리에서 제공하는 Discovery Image로 시작해야 합니다. 각 호스트가 시작된 후에는 에이전트 프로세스를 실행하여 호스트의 세부 정보를 검색하고 설치를 완료합니다. 에이전트 사용자 정의 리소스는 각 호스트를 나타냅니다.
Agent 플랫폼을 사용하여 호스팅 클러스터를 생성하면 HyperShift는 호스팅 제어 평면 네임스페이스에 Agent Cluster API 공급자를 설치합니다.
4.6.1. IBM Power에서 호스팅된 제어 평면을 구성하기 위한 전제 조건 링크 복사링크가 클립보드에 복사되었습니다!
- OpenShift Container Platform 클러스터에 설치된 Kubernetes Operator 버전 2.7 이상용 멀티클러스터 엔진입니다. 멀티클러스터 엔진 Operator는 Red Hat Advanced Cluster Management(RHACM)를 설치하면 자동으로 설치됩니다. OpenShift Container Platform OperatorHub에서 RHACM 없이 멀티클러스터 엔진 Operator를 Operator로 설치할 수도 있습니다.
멀티클러스터 엔진 운영자는 최소한 하나의 관리되는 OpenShift Container Platform 클러스터를 가져야 합니다.
로컬 클러스터
관리 허브 클러스터는 멀티클러스터 엔진 Operator 버전 2.7 이상에 자동으로 가져옵니다.local-cluster
에 대한 자세한 내용은 RHACM 설명서의 고급 구성을 참조하세요. 다음 명령을 실행하여 허브 클러스터의 상태를 확인할 수 있습니다.oc get managedclusters local-cluster
$ oc get managedclusters local-cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - HyperShift Operator를 실행하려면 최소 3개의 워커 노드가 있는 호스팅 클러스터가 필요합니다.
- 중앙 인프라 관리 서비스를 활성화해야 합니다. 자세한 내용은 "중앙 인프라 관리 서비스 활성화"를 참조하세요.
- 호스팅된 제어 평면 명령줄 인터페이스를 설치해야 합니다. 자세한 내용은 "호스트 제어 평면 명령줄 인터페이스 설치"를 참조하세요.
호스트된 컨트롤 플레인 기능은 기본적으로 활성화되어 있습니다. 해당 기능을 비활성화한 후 수동으로 활성화하려면 "호스팅된 제어 평면 기능을 수동으로 활성화"를 참조하세요. 해당 기능을 비활성화해야 하는 경우 "호스팅된 제어 평면 기능 비활성화"를 참조하세요.
4.6.2. IBM Power 인프라 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
Agent 플랫폼은 어떠한 인프라도 생성하지 않지만 인프라를 위해 다음과 같은 리소스가 필요합니다.
- 에이전트: 에이전트는 검색 이미지로 부팅되고 OpenShift Container Platform 노드로 프로비저닝될 준비가 된 호스트를 나타냅니다.
- DNS: API 및 Ingress 엔드포인트는 라우팅 가능해야 합니다.
4.6.3. IBM Power에서 호스팅되는 제어 평면에 대한 DNS 구성 링크 복사링크가 클립보드에 복사되었습니다!
호스팅된 클러스터의 API 서버가 노출됩니다. API 서버에 도달할 수 있는 대상을 가리키는 api.<hosted_cluster_name>.<basedomain>
항목에 대한 DNS 항목이 있어야 합니다.
DNS 항목은 호스팅된 제어 평면을 실행하는 관리되는 클러스터의 노드 중 하나를 가리키는 레코드만큼 간단할 수 있습니다.
또한, 진입점은 유입 트래픽을 인그레스 포드로 리디렉션하기 위해 배포된 로드 밸런서를 가리킬 수도 있습니다.
다음은 DNS 구성의 예입니다.
cat /var/named/<example.krnl.es.zone>
$ cat /var/named/<example.krnl.es.zone>
출력 예
- 1
- 해당 레코드는 호스팅된 제어 평면의 수신 및 송신 트래픽을 처리하는 API 로드 밸런서의 IP 주소를 참조합니다.
IBM Power의 경우 에이전트의 IP 주소에 해당하는 IP 주소를 추가합니다.
설정 예
compute-0 IN A 1xx.2x.2xx.1yy compute-1 IN A 1xx.2x.2xx.1yy
compute-0 IN A 1xx.2x.2xx.1yy
compute-1 IN A 1xx.2x.2xx.1yy
4.6.3.1. 사용자 정의 DNS 이름 정의 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 노드 부트스트랩 및 제어 평면 통신에 사용되는 내부 엔드포인트와 다른 외부 API DNS 이름을 사용하여 호스팅된 클러스터를 만들 수 있습니다. 다음과 같은 이유로 다른 DNS 이름을 정의할 수 있습니다.
- 내부 루트 CA에 바인딩된 제어 평면 기능을 손상시키지 않고 사용자용 TLS 인증서를 공개 CA의 인증서로 교체하려면
- 분할 수평 DNS 및 NAT 시나리오를 지원하려면
-
올바른
kubeconfig
및 DNS 구성을 사용하여 "로그인 명령 표시" 기능과 같은 기능을 사용할 수 있는 독립 실행형 제어 평면과 유사한 경험을 보장하려면
HostedCluster
객체의 kubeAPIServerDNSName
필드에 도메인 이름을 입력하여 초기 설정이나 2일차 작업 중에 DNS 이름을 정의할 수 있습니다.
사전 요구 사항
-
kubeAPIServerDNSName
필드에 설정할 DNS 이름을 포함하는 유효한 TLS 인증서가 있습니다. - DNS 이름은 접근 가능하고 올바른 주소를 가리키는 확인 가능한 URI입니다.
프로세스
HostedCluster
개체의 사양에서kubeAPIServerDNSName
필드와 도메인 주소를 추가하고 다음 예와 같이 사용할 인증서를 지정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
kubeAPIServerDNSName
필드의 값은 유효하고 주소 지정이 가능한 도메인이어야 합니다.
kubeAPIServerDNSName
필드를 정의하고 인증서를 지정하면 Control Plane Operator 컨트롤러가 custom-admin-kubeconfig
라는 kubeconfig
파일을 생성하고 이 파일은 HostedControlPlane
네임스페이스에 저장됩니다. 인증서는 루트 CA에서 생성되고, HostedControlPlane
네임스페이스는 인증서의 만료 및 갱신을 관리합니다.
Control Plane Operator는 HostedControlPlane
네임스페이스에 CustomKubeconfig
라는 새로운 kubeconfig
파일을 보고합니다. 해당 파일은 kubeAPIServerDNSName
필드에 정의된 새 서버를 사용합니다.
사용자 정의 kubeconfig
파일은 HostedCluster
개체의 상태
필드에서 CustomKubeconfig
로 참조됩니다. CustomKubeConfig
필드는 선택 사항이며 kubeAPIServerDNSName
필드가 비어 있지 않은 경우에만 추가할 수 있습니다. CustomKubeConfig
필드가 설정되면 HostedCluster
네임스페이스에 <hosted_cluster_name>-custom-admin-kubeconfig
라는 이름의 비밀이 생성됩니다. 이 비밀을 사용하여 HostedCluster
API 서버에 액세스할 수 있습니다. 2일차 작업 중에 CustomKubeConfig
필드를 제거하면 관련된 모든 비밀과 상태 참조가 삭제됩니다.
이 프로세스는 데이터 플레인에 직접적인 영향을 미치지 않으므로 롤아웃이 발생하지 않을 것으로 예상됩니다. HostedControlPlane
네임스페이스는 HyperShift Operator로부터 변경 사항을 수신하고 해당 필드를 삭제합니다.
HostedCluster
개체의 사양에서 kubeAPIServerDNSName
필드를 제거하면 새로 생성된 모든 비밀과 CustomKubeconfig
참조가 클러스터와 상태
필드에서 제거됩니다.
4.6.4. 베어 메탈에 호스팅된 클러스터 생성 링크 복사링크가 클립보드에 복사되었습니다!
호스팅 클러스터를 생성하거나 가져올 수 있습니다. Assisted Installer가 멀티클러스터 엔진 Operator에 대한 추가 기능으로 활성화되고 Agent 플랫폼으로 호스팅 클러스터를 생성하면 HyperShift Operator가 호스팅 제어 평면 네임스페이스에 Agent Cluster API 공급자를 설치합니다.
4.6.4.1. CLI를 사용하여 호스팅 클러스터 만들기 링크 복사링크가 클립보드에 복사되었습니다!
명령줄 인터페이스(CLI)를 사용하여 호스팅 클러스터를 만들려면 다음 단계를 완료하세요.
사전 요구 사항
- 호스팅된 각 클러스터에는 클러스터 전체에서 고유한 이름이 있어야 합니다. 멀티클러스터 엔진 운영자가 관리할 수 있도록 호스팅된 클러스터 이름은 기존 관리형 클러스터와 동일할 수 없습니다.
-
호스팅된 클러스터 이름으로
클러스터를
사용하지 마세요. - 멀티클러스터 엔진 운영자가 관리하는 클러스터의 네임스페이스에는 호스팅된 클러스터를 만들 수 없습니다.
- 클러스터에 기본 스토리지 클래스가 구성되어 있는지 확인하세요. 그렇지 않으면 보류 중인 영구 볼륨 클레임(PVC)이 표시될 수 있습니다.
-
기본적으로
hcp create cluster agent
명령을 사용하면 호스팅된 클러스터가 노드 포트와 함께 생성됩니다. 그러나 베어 메탈에서 호스팅된 클러스터의 경우 선호하는 게시 전략은 로드 밸런서를 통해 서비스를 노출하는 것입니다. 웹 콘솔이나 Red Hat Advanced Cluster Management를 사용하여 호스팅 클러스터를 생성하는 경우 Kubernetes API 서버 외에 서비스에 대한 게시 전략을 설정하려면HostedCluster
사용자 정의 리소스에서servicePublishingStrategy
정보를 수동으로 지정해야 합니다. 자세한 내용은 이 절차의 4단계를 참조하세요. "베어 메탈에 호스팅된 제어 평면을 배포하기 위한 준비"에 설명된 요구 사항을 충족하는지 확인하세요. 여기에는 인프라, 방화벽, 포트 및 서비스와 관련된 요구 사항이 포함됩니다. 예를 들어, 해당 요구 사항은 다음 예제 명령에서 볼 수 있듯이 관리 클러스터의 베어 메탈 호스트에 적절한 영역 레이블을 추가하는 방법을 설명합니다.
oc label node [compute-node-1] topology.kubernetes.io/zone=zone1
$ oc label node [compute-node-1] topology.kubernetes.io/zone=zone1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc label node [compute-node-2] topology.kubernetes.io/zone=zone2
$ oc label node [compute-node-2] topology.kubernetes.io/zone=zone2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc label node [compute-node-3] topology.kubernetes.io/zone=zone3
$ oc label node [compute-node-3] topology.kubernetes.io/zone=zone3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 하드웨어 인벤토리에 베어 메탈 노드를 추가했는지 확인하세요.
프로세스
다음 명령을 입력하여 네임스페이스를 만듭니다.
oc create ns <hosted_cluster_namespace>
$ oc create ns <hosted_cluster_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <hosted_cluster_namespace>를
호스팅된 클러스터 네임스페이스의 식별자로 바꾸세요. 일반적으로 네임스페이스는 HyperShift Operator에 의해 생성되지만 베어 메탈에서 호스팅된 클러스터를 생성하는 과정에서 네임스페이스가 이미 존재해야 하는 클러스터 API 공급자 역할이 생성됩니다.다음 명령을 입력하여 호스팅된 클러스터에 대한 구성 파일을 만듭니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 호스팅된 클러스터의 이름을 지정하세요.
- 2
- 예를 들어
/user/name/pullsecret 과
같이 풀 시크릿의 경로를 지정합니다. - 3
- 호스팅된 제어 평면 네임스페이스를 지정합니다. 이 네임스페이스에서 에이전트를 사용할 수 있도록 하려면
oc get agent -n <hosted_control_plane_namespace>
명령을 입력합니다. - 4
- 기본 도메인을 지정하세요(예:
krnl.es
). - 5
--api-server-address
플래그는 호스팅된 클러스터에서 Kubernetes API 통신에 사용되는 IP 주소를 정의합니다.--api-server-address
플래그를 설정하지 않으면 관리 클러스터에 연결하려면 로그인해야 합니다.- 6
- 예를 들어
lvm-storageclass
와 같이 etcd 스토리지 클래스 이름을 지정합니다. - 7
- SSH 공개 키의 경로를 지정합니다. 기본 파일 경로는
~/.ssh/id_rsa.pub
입니다. - 8
- 호스팅된 클러스터 네임스페이스를 지정합니다.
- 9
- 호스팅된 제어 평면 구성 요소에 대한 가용성 정책을 지정합니다. 지원되는 옵션은
SingleReplica
및HighlyAvailable
입니다. 기본값은HighlyAvailable
입니다. - 10
- 사용하려는 지원되는 OpenShift Container Platform 버전을 지정합니다(예:
4.19.0-multi
). 연결이 끊긴 환경을 사용하는 경우<ocp_release_image>를
다이제스트 이미지로 바꾸세요. OpenShift Container Platform 릴리스 이미지 다이제스트를 추출하려면 "릴리스 이미지 다이제스트 추출"을 참조하세요. - 11
- 노드 풀 복제본 수를 지정합니다(예:
3
). 동일한 수의 복제본을 생성하려면 복제본 수를0
이상으로 지정해야 합니다. 그렇지 않으면 노드 풀이 생성되지 않습니다. - 12
--ssh-key
플래그 뒤에 SSH 키의 경로를 지정합니다(예:user/.ssh/id_rsa)
.
서비스 게시 전략을 구성합니다. 기본적으로 호스팅 클러스터는 NodePort 서비스 게시 전략을 사용합니다. 이는 노드 포트가 추가 인프라 없이도 항상 사용 가능하기 때문입니다. 하지만 로드 밸런서를 사용하도록 서비스 게시 전략을 구성할 수 있습니다.
- 기본 NodePort 전략을 사용하는 경우 관리 클러스터 노드가 아닌 호스팅된 클러스터 컴퓨팅 노드를 가리키도록 DNS를 구성합니다. 자세한 내용은 "베어 메탈의 DNS 구성"을 참조하세요.
프로덕션 환경에서는 인증서 처리와 자동 DNS 확인을 제공하는 LoadBalancer 전략을 사용하세요. 서비스 게시 전략
LoadBalancer
를 변경하려면 호스팅된 클러스터 구성 파일에서 서비스 게시 전략 세부 정보를 편집합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- API 서버 유형으로
LoadBalancer를
지정합니다. 다른 모든 서비스의 경우 유형으로경로를
지정합니다.
다음 명령을 입력하여 호스팅된 클러스터 구성 파일에 변경 사항을 적용합니다.
oc apply -f hosted_cluster_config.yaml
$ oc apply -f hosted_cluster_config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 호스팅된 클러스터, 노드 풀 및 포드 생성을 모니터링합니다.
oc get hostedcluster \ <hosted_cluster_namespace> -n \ <hosted_cluster_namespace> -o \ jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
$ oc get hostedcluster \ <hosted_cluster_namespace> -n \ <hosted_cluster_namespace> -o \ jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get nodepool \ <hosted_cluster_namespace> -n \ <hosted_cluster_namespace> -o \ jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
$ oc get nodepool \ <hosted_cluster_namespace> -n \ <hosted_cluster_namespace> -o \ jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pods -n <hosted_cluster_namespace>
$ oc get pods -n <hosted_cluster_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
호스팅된 클러스터가 준비되었는지 확인하세요. 클러스터는 상태가
Available: True이고
, 노드 풀 상태가AllMachinesReady: True
이며, 모든 클러스터 운영자가 정상일 때 준비됩니다. 호스팅된 클러스터에 MetalLB를 설치하세요:
호스팅된 클러스터에서
kubeconfig
파일을 추출하고 다음 명령을 입력하여 호스팅된 클러스터 액세스를 위한 환경 변수를 설정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow export KUBECONFIG="/path/to/kubeconfig-<hosted_cluster_namespace>.yaml"
$ export KUBECONFIG="/path/to/kubeconfig-<hosted_cluster_namespace>.yaml"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow install-metallb-operator.yaml
파일을 만들어 MetalLB Operator를 설치합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 파일을 적용합니다.
oc apply -f install-metallb-operator.yaml
$ oc apply -f install-metallb-operator.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow deploy-metallb-ipaddresspool.yaml
파일을 만들어 MetalLB IP 주소 풀을 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 구성을 적용합니다.
oc apply -f deploy-metallb-ipaddresspool.yaml
$ oc apply -f deploy-metallb-ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 운영자 상태, IP 주소 풀, L2Advertisement를 확인하여 MetalLB가 설치되었는지 확인합니다. 다음 명령을 입력하세요:
oc get pods -n metallb-system
$ oc get pods -n metallb-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get ipaddresspool -n metallb-system
$ oc get ipaddresspool -n metallb-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get l2advertisement -n metallb-system
$ oc get l2advertisement -n metallb-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
수신을 위해 로드 밸런서를 구성합니다.
ingress-loadbalancer.yaml
파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 구성을 적용합니다.
oc apply -f ingress-loadbalancer.yaml
$ oc apply -f ingress-loadbalancer.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 로드 밸런서 서비스가 예상대로 작동하는지 확인하세요.
oc get svc metallb-ingress -n openshift-ingress
$ oc get svc metallb-ingress -n openshift-ingress
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE metallb-ingress LoadBalancer 172.31.127.129 10.11.176.71 80:30961/TCP,443:32090/TCP 16h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE metallb-ingress LoadBalancer 172.31.127.129 10.11.176.71 80:30961/TCP,443:32090/TCP 16h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
로드 밸런서와 함께 작동하도록 DNS를 구성합니다.
-
*.apps.<hosted_cluster_namespace>.<base_domain>
와일드카드 DNS 레코드를 로드 밸런서 IP 주소로 가리켜앱
도메인에 대한 DNS를 구성합니다. 다음 명령을 입력하여 DNS 확인을 확인하세요.
nslookup console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain> <load_balancer_ip_address>
$ nslookup console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain> <load_balancer_ip_address>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Server: 10.11.176.1 Address: 10.11.176.1#53 Name: console-openshift-console.apps.my-hosted-cluster.sample-base-domain.com Address: 10.11.176.71
Server: 10.11.176.1 Address: 10.11.176.1#53 Name: console-openshift-console.apps.my-hosted-cluster.sample-base-domain.com Address: 10.11.176.71
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
검증
다음 명령을 입력하여 클러스터 운영자를 확인하세요.
oc get clusteroperators
$ oc get clusteroperators
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 모든 연산자가
AVAILABLE: True
,PROGRESSING: False
,DEGRADED: False로
표시되는지 확인하세요.다음 명령을 입력하여 노드를 확인하세요.
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 모든 노드의 상태가
READY
인지 확인하세요.웹 브라우저에 다음 URL을 입력하여 콘솔에 대한 액세스를 테스트하세요.
https://console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain>
https://console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6.5. 에이전트 호스팅 클러스터에서 이기종 노드 풀 생성 링크 복사링크가 클립보드에 복사되었습니다!
에이전트 플랫폼에서 이기종 노드 풀을 생성하여 클러스터가 단일 호스팅 클러스터 내에서 x86_64
또는 ppc64le
과 같은 다양한 머신 유형을 실행할 수 있도록 할 수 있습니다.
4.6.5.1. 에이전트 호스팅 클러스터에서 이기종 노드 풀 생성에 관하여 링크 복사링크가 클립보드에 복사되었습니다!
노드 풀은 동일한 구성을 공유하는 클러스터 내의 노드 그룹입니다. 이기종 노드 풀은 구성이 서로 다른 풀로, 다양한 작업 부하에 최적화된 풀을 생성할 수 있습니다.
에이전트 플랫폼에서 이기종 노드 풀을 생성할 수 있습니다. 이를 통해 클러스터는 단일 호스팅 클러스터 내에서 x86_64
또는 ppc64le
과 같은 다양한 머신 유형을 실행할 수 있습니다.
이기종 노드 풀을 생성하려면 다음 섹션에 설명된 대로 다음의 일반 단계를 수행하세요.
-
데이터베이스 및 파일 시스템과 같은 구성 요소에 필요한 저장 공간 양을 운영자에게 알려주는
AgentServiceConfig
사용자 정의 리소스(CR)를 만듭니다. CR은 또한 유지 관리해야 할 OpenShift Container Platform 버전을 정의합니다. - 에이전트 클러스터를 생성합니다.
- 이기종 노드 풀을 생성합니다.
- 호스팅된 제어 평면에 대한 DNS 구성
-
각 아키텍처에 대해
InfraEnv
사용자 정의 리소스(CR)를 만듭니다. - 이기종 클러스터에 에이전트를 추가합니다.
4.6.5.2. AgentServiceConfig 사용자 정의 리소스 생성 링크 복사링크가 클립보드에 복사되었습니다!
에이전트 호스팅 클러스터에서 이기종 노드 풀을 만들려면 먼저 두 개의 이기종 아키텍처 운영 체제(OS) 이미지를 사용하여 AgentServiceConfig
CR을 만들어야 합니다.
프로세스
다음 명령을 실행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Kubernetes Operator
agentserviceconfig
config, 데이터베이스 볼륨 이름에 대한 멀티클러스터 엔진을 지정합니다. - 2
- 멀티클러스터 엔진 운영자
agentserviceconfig
구성, 파일 시스템 볼륨 이름을 지정합니다. - 3
- OpenShift Container Platform의 현재 버전을 지정합니다.
- 4
- x86에 대한 현재 OpenShift 컨테이너 플랫폼 릴리스 버전을 지정합니다.
- 5
- x86에 대한 ISO URL을 지정합니다.
- 6
- X86에 대한 루트 파일 시스템 URL을 지정합니다.
- 7
- x86에 대한 CPU 아키텍처를 지정하세요.
- 8
- 현재 OpenShift 컨테이너 플랫폼 버전을 지정합니다.
- 9
ppc64le
에 대한 OpenShift 컨테이너 플랫폼 릴리스 버전을 지정합니다.- 10
ppc64le
에 대한 ISO URL을 지정합니다.- 11
ppc64le
에 대한 루트 파일 시스템 URL을 지정합니다.- 12
ppc64le
에 대한 CPU 아키텍처를 지정합니다.
4.6.5.3. 에이전트 클러스터 생성 링크 복사링크가 클립보드에 복사되었습니다!
에이전트 클러스터는 에이전트 기반 접근 방식을 사용하여 관리되고 프로비저닝되는 클러스터입니다. 에이전트 클러스터는 이기종 노드 풀을 활용하여 동일한 클러스터 내에서 여러 유형의 워커 노드를 사용할 수 있습니다.
사전 요구 사항
- 호스팅 클러스터를 생성할 때 이기종 노드 풀에 대한 지원을 활성화하기 위해 다중 아키텍처 릴리스 이미지를 사용했습니다. 최신 다중 아키텍처 이미지는 다중 아키텍처 릴리스 이미지 페이지에서 확인하세요.
프로세스
다음 명령을 실행하여 클러스터 네임스페이스에 대한 환경 변수를 만듭니다.
export CLUSTERS_NAMESPACE=<hosted_cluster_namespace>
$ export CLUSTERS_NAMESPACE=<hosted_cluster_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 머신 클래스 없는 도메인 간 라우팅(CIDR) 표기법에 대한 환경 변수를 만듭니다.
export MACHINE_CIDR=192.168.122.0/24
$ export MACHINE_CIDR=192.168.122.0/24
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 호스팅된 컨트롤 네임스페이스를 만듭니다.
oc create ns <hosted_control_plane_namespace>
$ oc create ns <hosted_control_plane_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 클러스터를 만듭니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6.5.4. 이기종 노드 풀 생성 링크 복사링크가 클립보드에 복사되었습니다!
NodePool
사용자 정의 리소스(CR)를 사용하여 이기종 노드 풀을 생성합니다.
프로세스
NodePool
CR을 정의하려면 다음 예와 유사한 YAML 파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 이 선택기 블록은 지정된 레이블과 일치하는 에이전트를 선택합니다. 복제본이 없는
ppc64le
아키텍처의 노드 풀을 생성하려면ppc64le을
지정합니다. 이렇게 하면 확장 시ppc64le
아키텍처에서만 에이전트를 선택합니다.
4.6.5.5. 호스팅된 제어 평면에 대한 DNS 구성 링크 복사링크가 클립보드에 복사되었습니다!
호스팅된 제어 평면에 대한 DNS(도메인 이름 서비스) 구성을 통해 외부 클라이언트가 수신 컨트롤러에 도달하여 트래픽을 내부 구성 요소로 라우팅할 수 있습니다. 이 설정을 구성하면 트래픽이 ppc64le
또는 x86_64
컴퓨트 노드로 라우팅됩니다.
*.apps.<cluster_name>
레코드를 인그레스 애플리케이션이 호스팅되는 두 개의 컴퓨트 노드 중 하나로 지정할 수 있습니다. 또는 컴퓨팅 노드 위에 로드 밸런서를 설정할 수 있는 경우 이 레코드를 이 로드 밸런서로 가리키세요. 이기종 노드 풀을 생성할 때는 컴퓨팅 노드가 서로 통신할 수 있는지 또는 동일한 네트워크에 있는지 확인하세요.
4.6.5.6. 인프라 환경 자원 생성 링크 복사링크가 클립보드에 복사되었습니다!
이기종 노드 풀의 경우 아키텍처마다 infraEnv
사용자 정의 리소스(CR)를 만들어야 합니다. 예를 들어, x86_64
및 ppc64le
아키텍처를 사용하는 노드 풀의 경우 x86_64
및 ppc64le
에 대한 InfraEnv
CR을 만듭니다.
계속 진행하기 전에 x86_64
및 ppc64le
아키텍처에 대한 운영 체제(OS) 이미지가 AgentServiceConfig
리소스에 추가되었는지 확인하세요. 그런 다음 InfraEnv
리소스를 사용하여 최소 ISO 이미지를 얻을 수 있습니다.
프로세스
다음 명령을 실행하여 이기종 노드 풀에 대한
x86_64
아키텍처의InfraEnv
리소스를 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 이기종 노드 풀에 대한
ppc64le
아키텍처를 갖춘InfraEnv
리소스를 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow InfraEnv
리소스가 성공적으로 생성되었는지 확인하려면 다음 명령을 실행하세요.x86_64
InfraEnv
리소스가 성공적으로 생성되었는지 확인하세요.oc describe InfraEnv <hosted_cluster_name>-<arch_x86>
$ oc describe InfraEnv <hosted_cluster_name>-<arch_x86>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ppc64le
InfraEnv
리소스가 성공적으로 생성되었는지 확인하세요.oc describe InfraEnv <hosted_cluster_name>-<arch_ppc64le>
$ oc describe InfraEnv <hosted_cluster_name>-<arch_ppc64le>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 명령을 실행하여 가상 머신이나 베어 메탈 머신이 에이전트로 참여할 수 있는 라이브 ISO를 생성합니다.
x86_64
용 라이브 ISO 생성:oc -n <hosted_control_plane_namespace> get InfraEnv <hosted_cluster_name>-<arch_x86> -ojsonpath="{.status.isoDownloadURL}"
$ oc -n <hosted_control_plane_namespace> get InfraEnv <hosted_cluster_name>-<arch_x86> -ojsonpath="{.status.isoDownloadURL}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ppc64le
에 대한 라이브 ISO 생성:oc -n <hosted_control_plane_namespace> get InfraEnv <hosted_cluster_name>-<arch_ppc64le> -ojsonpath="{.status.isoDownloadURL}"
$ oc -n <hosted_control_plane_namespace> get InfraEnv <hosted_cluster_name>-<arch_ppc64le> -ojsonpath="{.status.isoDownloadURL}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6.5.7. 이기종 클러스터에 에이전트 추가 링크 복사링크가 클립보드에 복사되었습니다!
라이브 ISO로 부팅하도록 시스템을 수동으로 구성하여 에이전트를 추가합니다. 라이브 ISO를 다운로드하여 베어 메탈 노드나 가상 머신을 부팅할 수 있습니다. 부팅 시, 노드는 지원 서비스
와 통신하고 InfraEnv
리소스와 동일한 네임스페이스에 에이전트로 등록됩니다. 각 에이전트가 생성되면 선택적으로 사양에서 해당 installation_disk_id
및 hostname
매개변수를 설정할 수 있습니다. 완료되면 승인하여 에이전트를 사용할 준비가 되었음을 나타냅니다.
프로세스
다음 명령을 실행하여 에이전트 목록을 얻습니다.
oc -n <hosted_control_plane_namespace> get agents
oc -n <hosted_control_plane_namespace> get agents
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME CLUSTER APPROVED ROLE STAGE 86f7ac75-4fc4-4b36-8130-40fa12602218 auto-assign e57a637f-745b-496e-971d-1abbf03341ba auto-assign
NAME CLUSTER APPROVED ROLE STAGE 86f7ac75-4fc4-4b36-8130-40fa12602218 auto-assign e57a637f-745b-496e-971d-1abbf03341ba auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 에이전트에 패치를 적용하세요.
oc -n <hosted_control_plane_namespace> patch agent 86f7ac75-4fc4-4b36-8130-40fa12602218 -p '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-0.example.krnl.es"}}' --type merge
oc -n <hosted_control_plane_namespace> patch agent 86f7ac75-4fc4-4b36-8130-40fa12602218 -p '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-0.example.krnl.es"}}' --type merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 두 번째 에이전트에 패치를 적용합니다.
oc -n <hosted_control_plane_namespace> patch agent 23d0c614-2caa-43f5-b7d3-0b3564688baa -p '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-1.example.krnl.es"}}' --type merge
oc -n <hosted_control_plane_namespace> patch agent 23d0c614-2caa-43f5-b7d3-0b3564688baa -p '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-1.example.krnl.es"}}' --type merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 에이전트 승인 상태를 확인하세요.
oc -n <hosted_control_plane_namespace> get agents
oc -n <hosted_control_plane_namespace> get agents
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME CLUSTER APPROVED ROLE STAGE 86f7ac75-4fc4-4b36-8130-40fa12602218 true auto-assign e57a637f-745b-496e-971d-1abbf03341ba true auto-assign
NAME CLUSTER APPROVED ROLE STAGE 86f7ac75-4fc4-4b36-8130-40fa12602218 true auto-assign e57a637f-745b-496e-971d-1abbf03341ba true auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6.5.8. 노드 풀 확장 링크 복사링크가 클립보드에 복사되었습니다!
에이전트가 승인되면 노드 풀을 확장할 수 있습니다. 노드 풀에 구성된 agentLabelSelector
값은 일치하는 에이전트만 클러스터에 추가되도록 합니다. 이는 또한 노드 풀의 규모를 줄이는 데 도움이 됩니다. 클러스터에서 특정 아키텍처 노드를 제거하려면 해당 노드 풀의 규모를 줄입니다.
프로세스
다음 명령을 실행하여 노드 풀을 확장합니다.
oc -n <clusters_namespace> scale nodepool <nodepool_name> --replicas 2
$ oc -n <clusters_namespace> scale nodepool <nodepool_name> --replicas 2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고클러스터 API 에이전트 제공자는 호스팅된 클러스터에 할당할 두 개의 에이전트를 무작위로 선택합니다. 이러한 에이전트는 다양한 상태를 거친 후 호스팅된 클러스터에 OpenShift Container Platform 노드로 합류합니다. 다양한 에이전트 상태는
바인딩
,검색
,불충분
,설치 중
,설치 중
,기존 클러스터에 추가됨입니다
.
검증
다음 명령을 실행하여 에이전트를 나열하세요.
oc -n <hosted_control_plane_namespace> get agent
$ oc -n <hosted_control_plane_namespace> get agent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME CLUSTER APPROVED ROLE STAGE 4dac1ab2-7dd5-4894-a220-6a3473b67ee6 hypercluster1 true auto-assign d9198891-39f4-4930-a679-65fb142b108b true auto-assign da503cf1-a347-44f2-875c-4960ddb04091 hypercluster1 true auto-assign
NAME CLUSTER APPROVED ROLE STAGE 4dac1ab2-7dd5-4894-a220-6a3473b67ee6 hypercluster1 true auto-assign d9198891-39f4-4930-a679-65fb142b108b true auto-assign da503cf1-a347-44f2-875c-4960ddb04091 hypercluster1 true auto-assign
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 특정 확장된 에이전트의 상태를 확인하세요.
oc -n <hosted_control_plane_namespace> get agent -o jsonpath='{range .items[*]}BMH: {@.metadata.labels.agent-install\.openshift\.io/bmh} Agent: {@.metadata.name} State: {@.status.debugInfo.state}{"\n"}{end}'
$ oc -n <hosted_control_plane_namespace> get agent -o jsonpath='{range .items[*]}BMH: {@.metadata.labels.agent-install\.openshift\.io/bmh} Agent: {@.metadata.name} State: {@.status.debugInfo.state}{"\n"}{end}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
BMH: ocp-worker-2 Agent: 4dac1ab2-7dd5-4894-a220-6a3473b67ee6 State: binding BMH: ocp-worker-0 Agent: d9198891-39f4-4930-a679-65fb142b108b State: known-unbound BMH: ocp-worker-1 Agent: da503cf1-a347-44f2-875c-4960ddb04091 State: insufficient
BMH: ocp-worker-2 Agent: 4dac1ab2-7dd5-4894-a220-6a3473b67ee6 State: binding BMH: ocp-worker-0 Agent: d9198891-39f4-4930-a679-65fb142b108b State: known-unbound BMH: ocp-worker-1 Agent: da503cf1-a347-44f2-875c-4960ddb04091 State: insufficient
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 에이전트가
기존 클러스터에 추가됨
상태에 도달하면 다음 명령을 실행하여 OpenShift Container Platform 노드가 준비되었는지 확인합니다.oc --kubeconfig <hosted_cluster_name>.kubeconfig get nodes
$ oc --kubeconfig <hosted_cluster_name>.kubeconfig get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME STATUS ROLES AGE VERSION ocp-worker-1 Ready worker 5m41s v1.24.0+3882f8f ocp-worker-2 Ready worker 6m3s v1.24.0+3882f8f
NAME STATUS ROLES AGE VERSION ocp-worker-1 Ready worker 5m41s v1.24.0+3882f8f ocp-worker-2 Ready worker 6m3s v1.24.0+3882f8f
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 노드에 작업 부하를 추가하면 일부 클러스터 운영자를 조정할 수 있습니다. 다음 명령은 노드 풀을 확장한 후 두 개의 머신이 생성되었음을 표시합니다.
oc -n <hosted_control_plane_namespace> get machines
$ oc -n <hosted_control_plane_namespace> get machines
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION hypercluster1-c96b6f675-m5vch hypercluster1-b2qhl ocp-worker-1 agent://da503cf1-a347-44f2-875c-4960ddb04091 Running 15m 4.11.5 hypercluster1-c96b6f675-tl42p hypercluster1-b2qhl ocp-worker-2 agent://4dac1ab2-7dd5-4894-a220-6a3473b67ee6 Running 15m 4.11.5
NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION hypercluster1-c96b6f675-m5vch hypercluster1-b2qhl ocp-worker-1 agent://da503cf1-a347-44f2-875c-4960ddb04091 Running 15m 4.11.5 hypercluster1-c96b6f675-tl42p hypercluster1-b2qhl ocp-worker-2 agent://4dac1ab2-7dd5-4894-a220-6a3473b67ee6 Running 15m 4.11.5
Copy to Clipboard Copied! Toggle word wrap Toggle overflow