6.6.6. 노드, 베어 메탈 호스트 및 머신을 함께 연결
머신을 생성한 다음 새 BareMetalHost 오브젝트 및 노드와 연결하여 새 컨트롤 플레인 노드를 계속 생성합니다.
프로세스
다음 명령을 실행하여 컨트롤 플레인 노드의
providerID를 가져옵니다.$ oc get -n openshift-machine-api baremetalhost -l installer.openshift.io/role=control-plane -ojson | jq -r '.items[] | "baremetalhost:///openshift-machine-api/" + .metadata.name + "/" + .metadata.uid'출력 예
baremetalhost:///openshift-machine-api/master-00/6214c5cf-c798-4168-8c78-1ff1a3cd2cb4 baremetalhost:///openshift-machine-api/master-01/58fb60bd-b2a6-4ff3-a88d-208c33abf954 baremetalhost:///openshift-machine-api/master-02/dc5a94f3-625b-43f6-ab5a-7cc4fc79f105다음 명령을 실행하여 라벨에 대한 클러스터 정보를 가져옵니다.
$ oc get machine -n openshift-machine-api \ -l machine.openshift.io/cluster-api-machine-role=master \ -L machine.openshift.io/cluster-api-cluster출력 예
NAME PHASE TYPE REGION ZONE AGE CLUSTER-API-CLUSTER ci-op-jcp3s7wx-ng5sd-master-0 Running 10h ci-op-jcp3s7wx-ng5sd ci-op-jcp3s7wx-ng5sd-master-1 Running 10h ci-op-jcp3s7wx-ng5sd ci-op-jcp3s7wx-ng5sd-master-2 Running 10h ci-op-jcp3s7wx-ng5sd다음과 유사한 yaml 파일을 생성하여 새 컨트롤 플레인 노드에 대한
Machine오브젝트를 생성합니다.apiVersion: machine.openshift.io/v1beta1 kind: Machine metadata: annotations: metal3.io/BareMetalHost: openshift-machine-api/<new_control_plane_machine>1 finalizers: - machine.machine.openshift.io labels: machine.openshift.io/cluster-api-cluster: <cluster_api_cluster>2 machine.openshift.io/cluster-api-machine-role: master machine.openshift.io/cluster-api-machine-type: master name: <new_control_plane_machine>3 namespace: openshift-machine-api spec: metadata: {} providerID: <provider_id>4 providerSpec: value: apiVersion: baremetal.cluster.k8s.io/v1alpha1 hostSelector: {} image: checksum: "" url: "" kind: BareMetalMachineProviderSpec userData: name: master-user-data-managed다음과 같습니다.
<new_control_plane_machine>- 이전에 삭제한 머신 이름과 같을 수 있는 새 머신의 이름을 지정합니다.
<cluster_api_cluster>-
이전 단계의 출력에 표시된 다른 컨트롤 플레인 시스템의
CLUSTER-API-CLUSTER값을 지정합니다. <provider_id>-
이전 단계의 출력에 표시된 새 베어 메탈 호스트의
providerID값을 지정합니다.
다음 경고가 예상됩니다.
Warning: metadata.finalizers: "machine.machine.openshift.io": prefer a domain-qualified finalizer name to avoid accidental conflicts with other finalizer writers단일 bash 쉘 세션에서 다음 단계를 수행하여 새 컨트롤 플레인 노드 및
Machine오브젝트를BareMetalHost오브젝트에 연결합니다.다음 명령을 실행하여
NEW_NODE_NAME변수를 정의합니다.$ NEW_NODE_NAME=<new_node_name>&
lt;new_node_name>을 새 컨트롤 플레인 노드의 이름으로 바꿉니다.다음 명령을 실행하여
NEW_MACHINE_NAME변수를 정의합니다.$ NEW_MACHINE_NAME=<new_machine_name>&
lt;new_machine_name>을 새 머신의 이름으로 바꿉니다.새 노드의
BareMetalHost오브젝트에서 추출하도록 다음 명령을 실행하여BMH_UID를 정의합니다.$ BMH_UID=$(oc get -n openshift-machine-api bmh $NEW_NODE_NAME -ojson | jq -r .metadata.uid)$ echo $BMH_UID다음 명령을 실행하여
consumerRef오브젝트를 베어 메탈 호스트에 패치합니다.$ oc patch -n openshift-machine-api bmh $NEW_NODE_NAME --type merge --patch '{"spec":{"consumerRef":{"apiVersion":"machine.openshift.io/v1beta1","kind":"Machine","name":"'$NEW_MACHINE_NAME'","namespace":"openshift-machine-api"}}}'다음 명령을 실행하여
providerID값을 새 노드에 패치합니다.$ oc patch node $NEW_NODE_NAME --type merge --patch '{"spec":{"providerID":"baremetalhost:///openshift-machine-api/'$NEW_NODE_NAME'/'$BMH_UID'"}}'다음 명령을 실행하여
providerID값을 검토합니다.$ oc get node -l node-role.kubernetes.io/control-plane -ojson | jq -r '.items[] | .metadata.name + " " + .spec.providerID'
다음 명령을 실행하여
BareMetalHost오브젝트의 powerOn상태를true로 설정합니다.$ oc patch -n openshift-machine-api bmh $NEW_NODE_NAME --subresource status --type json -p '[{"op":"replace","path":"/status/poweredOn","value":true}]'다음 명령을 실행하여
BareMetalHost오브젝트의 powerOn상태를 검토합니다.$ oc get bmh -n openshift-machine-api -ojson | jq -r '.items[] | .metadata.name + " PoweredOn:" + (.status.poweredOn | tostring)'다음 명령을 실행하여
BareMetalHost오브젝트의 프로비저닝 상태를 검토합니다.$ oc get bmh -n openshift-machine-api -ojson | jq -r '.items[] | .metadata.name + " ProvisioningState:" + .status.provisioning.state'중요프로비저닝 상태가
관리되지않는 경우 다음 명령을 실행하여 프로비저닝 상태를 변경합니다.$ oc patch -n openshift-machine-api bmh $NEW_NODE_NAME --subresource status --type json -p '[{"op":"replace","path":"/status/provisioning/state","value":"unmanaged"}]'다음 명령을 실행하여 머신의 상태를
Provisioned로 설정합니다.$ oc patch -n openshift-machine-api machines $NEW_MACHINE_NAME -n openshift-machine-api --subresource status --type json -p '[{"op":"replace","path":"/status/phase","value":"Provisioned"}]'