5.2. 베어 메탈 컨트롤 플레인 노드 교체
OpenShift Container Platform 컨트롤 플레인 노드를 교체하려면 다음 절차를 사용하십시오.
기존 컨트롤 플레인 호스트에서 BareMetalHost 오브젝트 정의를 재사용하는 경우 external Provisioned 필드를 true 로 설정하지 마십시오.
기존 컨트롤 플레인 BareMetalHost 오브젝트에 OpenShift Container Platform 설치 프로그램에서 프로비저닝한 경우 external Provisioned 플래그가 true 로 설정될 수 있습니다.
사전 요구 사항
-
cluster-admin역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. etcd 백업이 수행되었습니다.
중요문제가 발생할 경우 클러스터를 복원할 수 있도록 이 절차를 수행하기 전에 etcd 백업을 수행하십시오. etcd 백업에 대한 자세한 내용은 추가 리소스 섹션을 참조하십시오.
프로세스
Bare Metal Operator를 사용할 수 있는지 확인합니다.
$ oc get clusteroperator baremetal출력 예
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE baremetal 4.19 True False False 3d15h이전
BareMetalHost및Machine오브젝트를 제거합니다.$ oc delete bmh -n openshift-machine-api <host_name> $ oc delete machine -n openshift-machine-api <machine_name>&
lt;host_name>을 호스트 이름으로 바꾸고 <machine_name>을 머신 이름으로 바꿉니다. 시스템 이름은CONSUMER필드에 표시됩니다.BareMetalHost및Machine오브젝트를 제거한 후Machine컨트롤러에서 Node 오브젝트를 자동으로 삭제합니다.새로운
BareMetalHost오브젝트와 시크릿을 생성하여 BMC 인증 정보를 저장합니다.$ cat <<EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: control-plane-<num>-bmc-secret1 namespace: openshift-machine-api data: username: <base64_of_uid>2 password: <base64_of_pwd>3 type: Opaque --- apiVersion: metal3.io/v1alpha1 kind: BareMetalHost metadata: name: control-plane-<num>4 namespace: openshift-machine-api spec: automatedCleaningMode: disabled bmc: address: <protocol>://<bmc_ip>5 credentialsName: control-plane-<num>-bmc-secret6 bootMACAddress: <NIC1_mac_address>7 bootMode: UEFI externallyProvisioned: false online: true EOF- 1 4 6
name필드 및credentialsName필드에서 베어 메탈 노드의 컨트롤 플레인 번호 <num>을 바꿉니다.- 2
<base64-of-uid>를 사용자 이름의base64문자열로 바꿉니다.- 3
<base64-of-pwd>를 암호의base64문자열로 바꿉니다.- 5
<protocol>을redfish,redfish-virtualmedia,idrac-virtualmedia등과 같은 BMC 프로토콜로 바꾸세요. <bmc-ip>를 베어 메탈 노드의 베이스 보드 관리 컨트롤러의 IP 주소로 바꿉니다. 추가 BMC 구성 옵션은 추가 리소스 섹션의 "BMC 주소 지정"을 참조하십시오.- 7
<NIC1-mac-address>를 베어 메탈 노드의 첫 번째 NIC의 MAC 주소로 바꿉니다.
검사가 완료되면
BareMetalHost오브젝트가 생성되고 프로비저닝할 수 있습니다.사용 가능한
BareMetalHost오브젝트를 확인합니다.$ oc get bmh -n openshift-machine-api출력 예
NAME STATE CONSUMER ONLINE ERROR AGE control-plane-1.example.com available control-plane-1 true 1h10m control-plane-2.example.com externally provisioned control-plane-2 true 4h53m control-plane-3.example.com externally provisioned control-plane-3 true 4h53m compute-1.example.com provisioned compute-1-ktmmx true 4h53m compute-1.example.com provisioned compute-2-l2zmb true 4h53m컨트롤 플레인 노드에는
MachineSet오브젝트가 없으므로 대신Machine오브젝트를 생성해야 합니다. 다른 컨트롤 플레인Machine오브젝트에서providerSpec을 복사할 수 있습니다.Machine오브젝트를 생성합니다.$ cat <<EOF | oc apply -f - apiVersion: machine.openshift.io/v1beta1 kind: Machine metadata: annotations: metal3.io/BareMetalHost: openshift-machine-api/control-plane-<num> labels: machine.openshift.io/cluster-api-cluster: control-plane-<num> machine.openshift.io/cluster-api-machine-role: master machine.openshift.io/cluster-api-machine-type: master name: control-plane-<num> namespace: openshift-machine-api spec: metadata: {} providerSpec: value: apiVersion: baremetal.cluster.k8s.io/v1alpha1 customDeploy: method: install_coreos hostSelector: {} image: checksum: "" url: "" kind: BareMetalMachineProviderSpec metadata: creationTimestamp: null userData: name: master-user-data-managed EOF&
lt;num>을annotations,레이블및이름필드에 있는 베어 메탈 노드의 컨트롤 플레인 번호로 바꿉니다.BareMetalHost오브젝트를 보려면 다음 명령을 실행합니다.$ oc get bmh -A출력 예
NAME STATE CONSUMER ONLINE ERROR AGE control-plane-1.example.com provisioned control-plane-1 true 2h53m control-plane-2.example.com externally provisioned control-plane-2 true 5h53m control-plane-3.example.com externally provisioned control-plane-3 true 5h53m compute-1.example.com provisioned compute-1-ktmmx true 5h53m compute-2.example.com provisioned compute-2-l2zmb true 5h53mRHCOS 설치 후
BareMetalHost가 클러스터에 추가되었는지 확인합니다.$ oc get nodes출력 예
NAME STATUS ROLES AGE VERSION control-plane-1.example.com available master 4m2s v1.32.3 control-plane-2.example.com available master 141m v1.32.3 control-plane-3.example.com available master 141m v1.32.3 compute-1.example.com available worker 87m v1.32.3 compute-2.example.com available worker 87m v1.32.3참고새 컨트롤 플레인 노드를 교체한 후 새 노드에서 실행중인 etcd pod는
crashloopback상태입니다. 자세한 내용은 추가 리소스 섹션의 " 비정상 etcd 멤버 교체"를 참조하십시오.