5.3. BMO를 사용하여 사용자 프로비저닝 클러스터에서 새 호스트 프로비저닝
BareMetalHost CR(사용자 정의 리소스)을 생성하여 Bare Metal Operator(BMO)를 사용하여 사용자 프로비저닝 클러스터에서 베어 메탈 호스트를 프로비저닝할 수 있습니다.
BMO를 사용하여 클러스터에 베어 메탈 호스트를 프로비저닝하면 BareMetalHost 사용자 정의 리소스의 spec.externallyProvisioned 사양을 기본적으로 false 로 설정합니다. spec.externallyProvisioned 사양을 true 로 설정하지 마십시오. 이 설정으로 인해 예기치 않은 동작이 발생합니다.
사전 요구 사항
- 사용자가 프로비저닝한 베어 메탈 클러스터를 생성하셨습니다.
- 호스트에 대한 BMC(Baseboard Management Controller) 액세스 권한이 있습니다.
-
ProvisioningCR을 생성하여 클러스터에 프로비저닝 서비스를 배포했습니다.
프로세스
베어 메탈 노드에 대한 구성 파일을 생성합니다. 정적 구성 또는 DHCP 서버를 사용하는 경우 다음 예제
bmh.yaml파일 중 하나를 선택하고 사용자 환경과 일치하도록 YAML의 값을 교체하여 필요에 맞게 구성합니다.정적 구성으로 배포하려면 다음
bmh.yaml파일을 생성합니다.--- apiVersion: v1 kind: Secret metadata: name: openshift-worker-<num>-network-config-secret1 namespace: openshift-machine-api type: Opaque stringData: nmstate: |2 interfaces:3 - name: <nic1_name>4 type: ethernet state: up ipv4: address: - ip: <ip_address>5 prefix-length: 24 enabled: true dns-resolver: config: server: - <dns_ip_address>6 routes: config: - destination: 0.0.0.0/0 next-hop-address: <next_hop_ip_address>7 next-hop-interface: <next_hop_nic1_name>8 --- apiVersion: v1 kind: Secret metadata: name: openshift-worker-<num>-bmc-secret namespace: openshift-machine-api type: Opaque data: username: <base64_of_uid>9 password: <base64_of_pwd> --- apiVersion: metal3.io/v1alpha1 kind: BareMetalHost metadata: name: openshift-worker-<num> namespace: openshift-machine-api spec: online: true bootMACAddress: <nic1_mac_address>10 bmc: address: <protocol>://<bmc_url>11 credentialsName: openshift-worker-<num>-bmc-secret disableCertificateVerification: false customDeploy: method: install_coreos userData: name: worker-user-data-managed namespace: openshift-machine-api rootDeviceHints: deviceName: <root_device_hint>12 preprovisioningNetworkDataName: openshift-worker-<num>-network-config-secret- 1
- <
num>의 모든 인스턴스를이름,credentialsName,preprovisioningNetworkDataName필드의 베어 메탈 노드의 고유한 컴퓨팅 노드 번호로 바꿉니다. - 2
- NMState YAML 구문을 추가하여 호스트 인터페이스를 구성합니다. 새로 생성된 노드의 네트워크 인터페이스를 구성하려면 네트워크 구성이 있는 시크릿의 이름을 지정합니다.
nmstate구문을 따라 노드의 네트워크 구성을 정의합니다. NMState 구문 구성에 대한 자세한 내용은 " 베어 메탈 노드 준비"를 참조하십시오. - 3
- 선택 사항:
nmstate를 사용하여 네트워크 인터페이스를 구성하고 인터페이스를 비활성화하려면 IP 주소가enabled: false로 설정된state: up을 설정합니다. - 4
- &
lt;nic1_name>을 베어 메탈 노드의 첫 번째 NIC(네트워크 인터페이스 컨트롤러) 이름으로 바꿉니다. - 5
- &
lt;ip_address>를 베어 메탈 노드 NIC의 IP 주소로 바꿉니다. - 6
- &
lt;dns_ip_address>를 베어 메탈 노드의 DNS 확인자의 IP 주소로 바꿉니다. - 7
- &
lt;next_hop_ip_address>를 베어 메탈 노드의 외부 게이트웨이의 IP 주소로 바꿉니다. - 8
- &
lt;next_hop_nic1_name>을 베어 메탈 노드의 외부 게이트웨이 이름으로 바꿉니다. - 9
- <
base64_of_uid> 및 <base64_of_pwd>를 사용자 이름과 암호의 base64 문자열로 바꿉니다. - 10
- &
lt;nic1_mac_address>를 베어 메탈 노드의 첫 번째 NIC의 MAC 주소로 바꿉니다. 추가 BMC 구성 옵션은 "BMC 주소 지정" 섹션을 참조하십시오. - 11
- &
lt;protocol>을 IPMI, Redfish 또는 기타와 같은 BMC 프로토콜로 바꿉니다. <bmc_url>을 베어 메탈 노드의 베이스 보드 관리 컨트롤러의 URL로 바꿉니다. - 12
- 선택 사항:
루트 장치 힌트를 지정할 때 <root_device_hint>를 장치 경로로 바꿉니다. 자세한 내용은 "Root device hints"를 참조하십시오.
nmstate를 사용하여 정적 구성으로 네트워크 인터페이스를 구성하는 경우 IP 주소를enabled: false로 설정하고state: up을 설정합니다.--- apiVersion: v1 kind: Secret metadata: name: openshift-worker-<num>-network-config-secret namespace: openshift-machine-api # ... interfaces: - name: <nic_name> type: ethernet state: up ipv4: enabled: false ipv6: enabled: false # ...DHCP 구성으로 배포하려면 다음
bmh.yaml파일을 생성합니다.--- apiVersion: v1 kind: Secret metadata: name: openshift-worker-<num>-bmc-secret1 namespace: openshift-machine-api type: Opaque data: username: <base64_of_uid>2 password: <base64_of_pwd> --- apiVersion: metal3.io/v1alpha1 kind: BareMetalHost metadata: name: openshift-worker-<num> namespace: openshift-machine-api spec: online: true bootMACAddress: <nic1_mac_address>3 bmc: address: <protocol>://<bmc_url>4 credentialsName: openshift-worker-<num>-bmc disableCertificateVerification: false customDeploy: method: install_coreos userData: name: worker-user-data-managed namespace: openshift-machine-api rootDeviceHints: deviceName: <root_device_hint>5 - 1
name및credentialsName필드에서 <num>을 베어 메탈 노드의 고유한 컴퓨팅 노드 번호로 바꿉니다.- 2
- <
base64_of_uid> 및 <base64_of_pwd>를 사용자 이름과 암호의 base64 문자열로 바꿉니다. - 3
- &
lt;nic1_mac_address>를 베어 메탈 노드의 첫 번째 NIC의 MAC 주소로 바꿉니다. 추가 BMC 구성 옵션은 "BMC 주소 지정" 섹션을 참조하십시오. - 4
- &
lt;protocol>을 IPMI, Redfish 또는 기타와 같은 BMC 프로토콜로 바꿉니다. <bmc_url>을 베어 메탈 노드의 베이스 보드 관리 컨트롤러의 URL로 바꿉니다. - 5
- 선택 사항:
루트 장치 힌트를 지정할 때 <root_device_hint>를 장치 경로로 바꿉니다. 자세한 내용은 "Root device hints"를 참조하십시오.
중요기존 베어 메탈 노드의 MAC 주소가 프로비저닝하려는 베어 메탈 호스트의 MAC 주소와 일치하면 설치에 실패합니다. 호스트 등록, 검사, 정리 또는 기타 단계가 실패하면 Bare Metal Operator에서 설치를 지속적으로 다시 시도합니다. 자세한 내용은 "클러스터의 새 호스트를 프로비저닝할 때 중복된 MAC 주소 진단"을 참조하십시오.
다음 명령을 실행하여 베어 메탈 노드를 생성합니다.
$ oc create -f bmh.yaml출력 예
secret/openshift-worker-<num>-network-config-secret created secret/openshift-worker-<num>-bmc-secret created baremetalhost.metal3.io/openshift-worker-<num> created다음 명령을 실행하여 베어 메탈 노드를 검사합니다.
$ oc -n openshift-machine-api get bmh openshift-worker-<num>다음과 같습니다.
- <num>
컴퓨팅 노드 번호를 지정합니다.
출력 예
NAME STATE CONSUMER ONLINE ERROR openshift-worker-<num> provisioned true
모든 CSR(인증서 서명 요청)을 승인합니다.
다음 명령을 실행하여 보류 중인 CSR 목록을 가져옵니다.
$ oc get csr출력 예
NAME AGE SIGNERNAME REQUESTOR REQUESTEDDURATION CONDITION csr-gfm9f 33s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-o perator:node-bootstrapper <none> Pending다음 명령을 실행하여 CSR을 승인합니다.
$ oc adm certificate approve <csr_name>출력 예
certificatesigningrequest.certificates.k8s.io/<csr_name> approved
검증
다음 명령을 실행하여 노드가 준비되었는지 확인합니다.
$ oc get nodes출력 예
NAME STATUS ROLES AGE VERSION app1 Ready worker 47s v1.24.0+dc5a2fd controller1 Ready master,worker 2d22h v1.24.0+dc5a2fd