6.6. BMC 자격 증명 없이 실패한 베어 메탈 제어 평면 노드 교체
베어 메탈 클러스터의 제어 평면 노드에 장애가 발생하여 복구할 수 없지만, 베이스보드 관리 컨트롤러(BMC) 자격 증명을 제공하지 않고 클러스터를 설치한 경우, 장애가 발생한 노드를 새 노드로 교체하기 위해 추가 단계를 수행해야 합니다.
6.6.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- 건강에 해로운 베어 메탈 etcd 멤버를 식별했습니다.
- 시스템이 실행되고 있지 않거나 노드가 준비되지 않았음을 확인했습니다.
-
cluster-admin역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - 문제가 발생할 경우를 대비해 etcd 백업을 해두었습니다.
-
coreos-installerCLI를 다운로드하여 설치했습니다. 클러스터에 제어 평면
머신 세트가없습니다. 다음 명령을 실행하여머신셋을확인할 수 있습니다.oc get machinesets,controlplanemachinesets -n openshift-machine-api
$ oc get machinesets,controlplanemachinesets -n openshift-machine-apiCopy to Clipboard Copied! Toggle word wrap Toggle overflow 중요근로자를 위해 하나 이상의
기계 세트가있어야 합니다. 제어 평면에controlplanemachinesets가있는 경우 이 절차를 사용하지 마세요.
6.6.2. 비정상적 etcd 멤버 제거 링크 복사링크가 클립보드에 복사되었습니다!
먼저 비정상적 etcd 멤버를 제거하여 실패한 제어 평면 노드를 제거합니다.
프로세스
다음 명령을 실행하여 etcd Pod를 나열하고 영향을 받는 노드에 없는 Pod를 기록해 둡니다.
oc -n openshift-etcd get pods -l k8s-app=etcd -o wide
$ oc -n openshift-etcd get pods -l k8s-app=etcd -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
etcd-openshift-control-plane-0 5/5 Running 11 3h56m 192.168.10.9 openshift-control-plane-0 <none> <none> etcd-openshift-control-plane-1 5/5 Running 0 3h54m 192.168.10.10 openshift-control-plane-1 <none> <none> etcd-openshift-control-plane-2 5/5 Running 0 3h58m 192.168.10.11 openshift-control-plane-2 <none> <none>
etcd-openshift-control-plane-0 5/5 Running 11 3h56m 192.168.10.9 openshift-control-plane-0 <none> <none> etcd-openshift-control-plane-1 5/5 Running 0 3h54m 192.168.10.10 openshift-control-plane-1 <none> <none> etcd-openshift-control-plane-2 5/5 Running 0 3h58m 192.168.10.11 openshift-control-plane-2 <none> <none>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 실행 중인 etcd 컨테이너에 연결합니다.
oc rsh -n openshift-etcd <etcd_pod>
$ oc rsh -n openshift-etcd <etcd_pod>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <etcd_pod>를정상 노드 중 하나와 연결된 etcd Pod의 이름으로 바꾸세요.명령 예
oc rsh -n openshift-etcd etcd-openshift-control-plane-0
$ oc rsh -n openshift-etcd etcd-openshift-control-plane-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 etcd 멤버 목록을 확인하세요. 나중에 필요하므로, 해당 값이 잘못된 etcd 멤버의 ID와 이름을 기록해 두세요.
etcdctl member list -w table
sh-4.2# etcdctl member list -w tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요etcdctl endpoint health명령은 교체가 완료되고 새 멤버가 추가될 때까지 제거된 멤버를 나열합니다.다음 명령을 실행하여 비정상적 etcd 멤버를 제거합니다.
etcdctl member remove <unhealthy_member_id>
sh-4.2# etcdctl member remove <unhealthy_member_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <unhealthy_member_id>를비정상 노드의 etcd 멤버 ID로 바꿉니다.명령 예
etcdctl member remove 6fc1e7c9db35841d
sh-4.2# etcdctl member remove 6fc1e7c9db35841dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Member 6fc1e7c9db35841d removed from cluster b23536c33f2cdd1b
Member 6fc1e7c9db35841d removed from cluster b23536c33f2cdd1bCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 멤버 목록을 다시 보고 멤버가 제거되었는지 확인하세요.
etcdctl member list -w table
sh-4.2# etcdctl member list -w tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요멤버를 제거한 후에는 나머지 etcd 인스턴스가 재부팅되는 동안 잠시 동안 클러스터에 접속할 수 없을 수 있습니다.
다음 명령을 실행하여 etcd Pod의 rsh 세션을 종료합니다.
exit
sh-4.2# exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 etcd 쿼럼 가드를 끕니다.
oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": {"useUnsupportedUnsafeNonHANonProductionUnstableEtcd": true}}}'$ oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": {"useUnsupportedUnsafeNonHANonProductionUnstableEtcd": true}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령을 사용하면 비밀을 성공적으로 다시 생성하고 정적 포드를 롤아웃할 수 있습니다.
다음 명령을 실행하여 제거된, 비정상적인 etcd 멤버에 대한 비밀을 나열합니다.
oc get secrets -n openshift-etcd | grep <node_name>
$ oc get secrets -n openshift-etcd | grep <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node_name>을제거한 etcd 멤버의 실패한 노드 이름으로 바꾸세요.명령 예
oc get secrets -n openshift-etcd | grep openshift-control-plane-2
$ oc get secrets -n openshift-etcd | grep openshift-control-plane-2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
etcd-peer-openshift-control-plane-2 kubernetes.io/tls 2 134m etcd-serving-metrics-openshift-control-plane-2 kubernetes.io/tls 2 134m etcd-serving-openshift-control-plane-2 kubernetes.io/tls 2 134m
etcd-peer-openshift-control-plane-2 kubernetes.io/tls 2 134m etcd-serving-metrics-openshift-control-plane-2 kubernetes.io/tls 2 134m etcd-serving-openshift-control-plane-2 kubernetes.io/tls 2 134mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 제거된 영향을 받은 노드와 관련된 비밀을 삭제합니다.
다음 명령을 실행하여 피어 비밀을 삭제합니다.
oc delete secret -n openshift-etcd etcd-peer-<node_name>
$ oc delete secret -n openshift-etcd etcd-peer-<node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node_name>을영향을 받는 노드의 이름으로 바꾸세요.다음 명령을 실행하여 제공 비밀을 삭제합니다.
oc delete secret -n openshift-etcd etcd-serving-<node_name>
$ oc delete secret -n openshift-etcd etcd-serving-<node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node_name>을영향을 받는 노드의 이름으로 바꾸세요.다음 명령을 실행하여 메트릭 비밀번호를 삭제합니다.
oc delete secret -n openshift-etcd etcd-serving-metrics-<node_name>
$ oc delete secret -n openshift-etcd etcd-serving-metrics-<node_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node_name>을영향을 받는 노드의 이름으로 바꾸세요.
6.6.3. 비정상 etcd 멤버의 머신 삭제 링크 복사링크가 클립보드에 복사되었습니다!
비정상적 etcd 멤버의 머신을 삭제하여 실패한 제어 평면 노드 제거를 완료합니다.
프로세스
다음 명령을 실행하여 Bare Metal Operator를 사용할 수 있는지 확인하세요.
oc get clusteroperator baremetal
$ oc get clusteroperator baremetalCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE baremetal 4.20.0 True False False 3d15h
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE baremetal 4.20.0 True False False 3d15hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 영향을 받은 노드의
BareMetalHost객체를 나중에 사용할 수 있도록 파일에 저장합니다.oc get -n openshift-machine-api bmh <node_name> -o yaml > bmh_affected.yaml
$ oc get -n openshift-machine-api bmh <node_name> -o yaml > bmh_affected.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow <node_name>을영향을 받는 노드의 이름으로 바꾸세요. 이 이름은 일반적으로 연관된BareMetalHost이름과 일치합니다.다음 명령을 실행하여 저장된
BareMetalHost개체의 YAML 파일을 보고 내용이 올바른지 확인하세요.cat bmh_affected.yaml
$ cat bmh_affected.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 영향을 받은
BareMetalHost객체를 제거합니다.oc delete -n openshift-machine-api bmh <node_name>
$ oc delete -n openshift-machine-api bmh <node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node_name>을영향을 받는 노드의 이름으로 바꾸세요.다음 명령을 실행하여 모든 머신을 나열하고 영향을 받은 노드와 연결된 머신을 식별합니다.
oc get machines -n openshift-machine-api -o wide
$ oc get machines -n openshift-machine-api -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 비정상 멤버의 컴퓨터를 삭제합니다.
oc delete machine -n openshift-machine-api <machine_name>
$ oc delete machine -n openshift-machine-api <machine_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <machine_name>을영향을 받는 노드와 연결된 머신 이름으로 바꾸세요.명령 예
oc delete machine -n openshift-machine-api examplecluster-control-plane-2
$ oc delete machine -n openshift-machine-api examplecluster-control-plane-2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고BareMetalHost및Machine객체를 제거하면 머신 컨트롤러가 자동으로Node객체를 삭제합니다.어떤 이유로든 머신 삭제가 지연되거나 명령이 방해를 받아 지연되는 경우, 머신 객체 종료자 필드를 제거하여 강제로 삭제합니다.
주의Ctrl+c를 눌러 기계 삭제를 중단하지 마세요. 명령이 완료될 때까지 진행되도록 허용해야 합니다. 새 터미널 창을 열어 종료자 필드를 편집하고 삭제합니다.새 터미널 창에서 다음 명령을 실행하여 머신 구성을 편집합니다.
oc edit machine -n openshift-machine-api examplecluster-control-plane-2
$ oc edit machine -n openshift-machine-api examplecluster-control-plane-2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 머신사용자 지정 리소스에서 다음 필드를 삭제한 다음 업데이트된 파일을 저장합니다.finalizers: - machine.machine.openshift.io
finalizers: - machine.machine.openshift.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
machine.machine.openshift.io/examplecluster-control-plane-2 edited
machine.machine.openshift.io/examplecluster-control-plane-2 editedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6.4. 실패한 노드가 삭제되었는지 확인 링크 복사링크가 클립보드에 복사되었습니다!
대체 제어 평면 노드를 생성하기 전에 실패한 노드가 성공적으로 삭제되었는지 확인하세요.
프로세스
다음 명령을 실행하여 머신이 삭제되었는지 확인하세요.
oc get machines -n openshift-machine-api -o wide
$ oc get machines -n openshift-machine-api -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME PHASE TYPE REGION ZONE AGE NODE PROVIDERID STATE examplecluster-control-plane-0 Running 3h11m openshift-control-plane-0 baremetalhost:///openshift-machine-api/openshift-control-plane-0/da1ebe11-3ff2-41c5-b099-0aa41222964e externally provisioned examplecluster-control-plane-1 Running 3h11m openshift-control-plane-1 baremetalhost:///openshift-machine-api/openshift-control-plane-1/d9f9acbc-329c-475e-8d81-03b20280a3e1 externally provisioned examplecluster-compute-0 Running 165m openshift-compute-0 baremetalhost:///openshift-machine-api/openshift-compute-0/3d685b81-7410-4bb3-80ec-13a31858241f provisioned examplecluster-compute-1 Running 165m openshift-compute-1 baremetalhost:///openshift-machine-api/openshift-compute-1/0fdae6eb-2066-4241-91dc-e7ea72ab13b9 provisioned
NAME PHASE TYPE REGION ZONE AGE NODE PROVIDERID STATE examplecluster-control-plane-0 Running 3h11m openshift-control-plane-0 baremetalhost:///openshift-machine-api/openshift-control-plane-0/da1ebe11-3ff2-41c5-b099-0aa41222964e externally provisioned examplecluster-control-plane-1 Running 3h11m openshift-control-plane-1 baremetalhost:///openshift-machine-api/openshift-control-plane-1/d9f9acbc-329c-475e-8d81-03b20280a3e1 externally provisioned examplecluster-compute-0 Running 165m openshift-compute-0 baremetalhost:///openshift-machine-api/openshift-compute-0/3d685b81-7410-4bb3-80ec-13a31858241f provisioned examplecluster-compute-1 Running 165m openshift-compute-1 baremetalhost:///openshift-machine-api/openshift-compute-1/0fdae6eb-2066-4241-91dc-e7ea72ab13b9 provisionedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 노드가 삭제되었는지 확인하세요.
oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME STATUS ROLES AGE VERSION openshift-control-plane-0 Ready master 3h24m v1.33.4 openshift-control-plane-1 Ready master 3h24m v1.33.4 openshift-compute-0 Ready worker 176m v1.33.4 openshift-compute-1 Ready worker 176m v1.33.4
NAME STATUS ROLES AGE VERSION openshift-control-plane-0 Ready master 3h24m v1.33.4 openshift-control-plane-1 Ready master 3h24m v1.33.4 openshift-compute-0 Ready worker 176m v1.33.4 openshift-compute-1 Ready worker 176m v1.33.4Copy to Clipboard Copied! Toggle word wrap Toggle overflow 모든 클러스터 운영자가 변경 사항 롤아웃을 완료할 때까지 기다리세요. 다음 명령을 실행하여 진행 상황을 모니터링하세요.
watch oc get co
$ watch oc get coCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6.5. 새로운 제어 평면 노드 생성 링크 복사링크가 클립보드에 복사되었습니다!
BareMetalHost 개체와 노드를 만들어 새로운 제어 평면 노드를 만듭니다.
프로세스
이전에 저장한
bmh_affected.yaml파일을 편집합니다.파일에서 다음 메타데이터 항목을 제거합니다.
-
creationTimestamp -
세대 -
resourceVersion -
uid
-
-
파일의
상태섹션을 제거합니다.
결과 파일은 다음 예와 유사해야 합니다.
bmh_affected.yaml파일 예시Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
bmh_affected.yaml파일을 사용하여BareMetalHost객체를 만듭니다.oc create -f bmh_affected.yaml
$ oc create -f bmh_affected.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow BareMetalHost객체를 생성할 때 다음 경고가 예상됩니다.Warning: metadata.finalizers: "baremetalhost.metal3.io": prefer a domain-qualified finalizer name to avoid accidental conflicts with other finalizer writers
Warning: metadata.finalizers: "baremetalhost.metal3.io": prefer a domain-qualified finalizer name to avoid accidental conflicts with other finalizer writersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 제어 평면 점화 비밀을 추출합니다.
oc extract secret/master-user-data-managed \ -n openshift-machine-api \ --keys=userData \ --to=- \ | sed '/^userData/d' > new_controlplane.ign$ oc extract secret/master-user-data-managed \ -n openshift-machine-api \ --keys=userData \ --to=- \ | sed '/^userData/d' > new_controlplane.ignCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 또한 점화 비밀의 시작
userData줄을 제거합니다.다음 예를 참조하여 새 노드의 네트워크 구성을 위한
new_controlplane_nmstate.yaml이라는 이름의 Nmstate YAML 파일을 만듭니다.Nmstate YAML 파일 예시
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고에이전트 기반 설치 프로그램을 사용하여 클러스터를 설치한 경우 원래 클러스터 배포의
agent-config.yaml파일에 있는 실패한 노드의networkConfig섹션을 새 제어 평면 노드의 Nmstate 파일의 시작점으로 사용할 수 있습니다. 예를 들어, 다음 명령은 첫 번째 제어 평면 노드에 대한networkConfig섹션을 추출합니다.cat agent-config-iso.yaml | yq .hosts[0].networkConfig > new_controlplane_nmstate.yaml
$ cat agent-config-iso.yaml | yq .hosts[0].networkConfig > new_controlplane_nmstate.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 사용자 지정 Red Hat Enterprise Linux CoreOS(RHCOS) 라이브 ISO를 만듭니다.
coreos-installer iso customize rhcos-live.86_64.iso \ --dest-ignition new_controlplane.ign \ --network-nmstate new_controlplane_nmstate.yaml \ --dest-device /dev/disk/by-path/<device_path> \ -f$ coreos-installer iso customize rhcos-live.86_64.iso \ --dest-ignition new_controlplane.ign \ --network-nmstate new_controlplane_nmstate.yaml \ --dest-device /dev/disk/by-path/<device_path> \ -fCopy to Clipboard Copied! Toggle word wrap Toggle overflow <device_path>를ISO가 생성될 대상 장치의 경로로 바꾸세요.- 사용자 정의된 RHCOS 라이브 ISO로 새로운 제어 평면 노드를 부팅합니다.
- 클러스터에 새 노드를 가입시키기 위해 인증서 서명 요청(CSR)을 승인합니다.
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'
$ 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'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
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
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-7cc4fc79f105Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 레이블에 대한 클러스터 정보를 가져옵니다.
oc get machine -n openshift-machine-api \ -l machine.openshift.io/cluster-api-machine-role=master \ -L machine.openshift.io/cluster-api-cluster$ oc get machine -n openshift-machine-api \ -l machine.openshift.io/cluster-api-machine-role=master \ -L machine.openshift.io/cluster-api-clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
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
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-ng5sdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 유사한 yaml 파일을 만들어 새 제어 평면 노드에 대한
Machine객체를 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<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
Warning: metadata.finalizers: "machine.machine.openshift.io": prefer a domain-qualified finalizer name to avoid accidental conflicts with other finalizer writersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 단계를 단일 bash 셸 세션에서 수행하여 새 제어 평면 노드와
Machine객체를BareMetalHost객체에 연결합니다.다음 명령을 실행하여
NEW_NODE_NAME변수를 정의합니다.NEW_NODE_NAME=<new_node_name>
$ NEW_NODE_NAME=<new_node_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <new_node_name>을새 제어 평면 노드의 이름으로 바꿉니다.다음 명령을 실행하여
NEW_MACHINE_NAME변수를 정의합니다.NEW_MACHINE_NAME=<new_machine_name>
$ NEW_MACHINE_NAME=<new_machine_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <new_machine_name>을새 머신의 이름으로 바꾸세요.다음 명령을 실행하여 새 노드의
BareMetalHost개체에서BMH_UID를추출하여 정의합니다.BMH_UID=$(oc get -n openshift-machine-api bmh $NEW_NODE_NAME -ojson | jq -r .metadata.uid)
$ BMH_UID=$(oc get -n openshift-machine-api bmh $NEW_NODE_NAME -ojson | jq -r .metadata.uid)Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo $BMH_UID
$ echo $BMH_UIDCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 베어 메탈 호스트에
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"}}}'$ 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"}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
providerID값을 새 노드에 패치합니다.oc patch node $NEW_NODE_NAME --type merge --patch '{"spec":{"providerID":"baremetalhost:///openshift-machine-api/'$NEW_NODE_NAME'/'$BMH_UID'"}}'$ oc patch node $NEW_NODE_NAME --type merge --patch '{"spec":{"providerID":"baremetalhost:///openshift-machine-api/'$NEW_NODE_NAME'/'$BMH_UID'"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
providerID값을 검토하세요.oc get node -l node-role.kubernetes.io/control-plane -ojson | jq -r '.items[] | .metadata.name + " " + .spec.providerID'
$ oc get node -l node-role.kubernetes.io/control-plane -ojson | jq -r '.items[] | .metadata.name + " " + .spec.providerID'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 명령을 실행하여
BareMetalHost개체의poweredOn상태를true로 설정합니다.oc patch -n openshift-machine-api bmh $NEW_NODE_NAME --subresource status --type json -p '[{"op":"replace","path":"/status/poweredOn","value":true}]'$ oc patch -n openshift-machine-api bmh $NEW_NODE_NAME --subresource status --type json -p '[{"op":"replace","path":"/status/poweredOn","value":true}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
BareMetalHost개체의poweredOn상태를 검토합니다.oc get bmh -n openshift-machine-api -ojson | jq -r '.items[] | .metadata.name + " PoweredOn:" + (.status.poweredOn | tostring)'
$ oc get bmh -n openshift-machine-api -ojson | jq -r '.items[] | .metadata.name + " PoweredOn:" + (.status.poweredOn | tostring)'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
BareMetalHost개체의 프로비저닝 상태를 검토합니다.oc get bmh -n openshift-machine-api -ojson | jq -r '.items[] | .metadata.name + " ProvisioningState:" + .status.provisioning.state'
$ oc get bmh -n openshift-machine-api -ojson | jq -r '.items[] | .metadata.name + " ProvisioningState:" + .status.provisioning.state'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요프로비저닝 상태가
관리되지않음이 아닌 경우 다음 명령을 실행하여 프로비저닝 상태를 변경합니다.oc patch -n openshift-machine-api bmh $NEW_NODE_NAME --subresource status --type json -p '[{"op":"replace","path":"/status/provisioning/state","value":"unmanaged"}]'$ oc patch -n openshift-machine-api bmh $NEW_NODE_NAME --subresource status --type json -p '[{"op":"replace","path":"/status/provisioning/state","value":"unmanaged"}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 머신 상태를
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"}]'$ 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"}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6.7. 새로운 etcd 멤버 추가 링크 복사링크가 클립보드에 복사되었습니다!
클러스터에 새로운 etcd 멤버를 추가하여 새로운 제어 평면 노드 추가를 완료합니다.
프로세스
다음 단계를 단일 bash 셸 세션에서 수행하여 클러스터에 새로운 etcd 멤버를 추가합니다.
다음 명령을 실행하여 새 제어 평면 노드의 IP를 찾으세요.
oc get nodes -owide -l node-role.kubernetes.io/control-plane
$ oc get nodes -owide -l node-role.kubernetes.io/control-planeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 나중에 사용할 수 있도록 노드의 IP 주소를 기록해 두세요.
다음 명령을 실행하여 etcd 포드를 나열합니다.
oc get -n openshift-etcd pods -l k8s-app=etcd -o wide
$ oc get -n openshift-etcd pods -l k8s-app=etcd -o wideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 실행 중인 etcd 포드 중 하나에 연결합니다. 새 노드의 etcd Pod는
CrashLoopBackOff상태여야 합니다.oc rsh -n openshift-etcd <running_pod>
$ oc rsh -n openshift-etcd <running_pod>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <running_pod>를이전 단계에서 표시된 실행 중인 Pod의 이름으로 바꾸세요.다음 명령을 실행하여 etcd 멤버 목록을 확인하세요.
etcdctl member list -w table
sh-4.2# etcdctl member list -w tableCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 새로운 제어 평면 etcd 멤버를 추가합니다.
etcdctl member add <new_node> --peer-urls="https://<ip_address>:2380"
sh-4.2# etcdctl member add <new_node> --peer-urls="https://<ip_address>:2380"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<new_node>- 새 제어 평면 노드의 이름을 지정합니다.
<ip_address>- 새 노드의 IP 주소를 지정합니다.
다음 명령을 실행하여 rsh 셸을 종료합니다.
exit
sh-4.2# exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 명령을 실행하여 etcd 재배포를 강제로 실행합니다.
oc patch etcd cluster -p='{"spec": {"forceRedeploymentReason": "single-master-recovery-'"$( date --rfc-3339=ns )"'"}}' --type=merge$ oc patch etcd cluster -p='{"spec": {"forceRedeploymentReason": "single-master-recovery-'"$( date --rfc-3339=ns )"'"}}' --type=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 etcd 쿼럼 가드를 다시 켭니다.
oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": null}}'$ oc patch etcd/cluster --type=merge -p '{"spec": {"unsupportedConfigOverrides": null}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 클러스터 운영자 롤아웃을 모니터링합니다.
watch oc get co
$ watch oc get coCopy to Clipboard Copied! Toggle word wrap Toggle overflow