10.5. 클러스터 확장
설치 관리자 프로비저닝 OpenShift Container Platform 클러스터를 배포한 후 다음 절차를 사용하여 작업자 노드 수를 확장할 수 있습니다. 가능한 각 작업자 노드가 사전 요구 사항을 충족하는지 확인합니다.
RedFish Virtual Media를 사용하여 클러스터를 구성하려면 최소 펌웨어 요구 사항을 충족해야 합니다. RedFish Virtual Media를 사용하여 클러스터를 설정할 때 추가 세부 사항은 사전 요구 사항 섹션에서 가상 미디어를 사용하여 설치를 위한 펌웨어 요구 사항을 참조하십시오.
10.5.1. 베어 메탈 노드 준비
클러스터를 확장하려면 DHCP 서버가 필요합니다. 각 노드에는 DHCP 예약이 있어야 합니다.
일부 관리자는 각 노드의 IP 주소가 DHCP 서버에서 일정하게 유지되도록 고정 IP 주소를 사용하는 것을 선호합니다. OpenShift Container Platform 클러스터에서 고정 IP 주소를 사용하려면 무한 리스로 DHCP 서버의 IP 주소를 예약합니다. 설치 프로그램이 노드를 성공적으로 프로비저닝하면 디스패치 스크립트에서 노드의 네트워크 구성을 확인합니다. 디스패치 스크립트에서 네트워크 구성에 DHCP 무한 리스가 포함되어 있음을 발견하면 DHCP 무한 리스에서 IP 주소를 사용하여 고정 IP 연결로 연결을 다시 생성합니다. DHCP 무한 리스가 없는 NIC는 수정되지 않은 상태로 유지됩니다.
무한 리스로 IP 주소를 설정하는 것은 Machine Config Operator를 사용하여 배포된 네트워크 구성과 호환되지 않습니다.
베어 메탈 노드를 준비하려면 프로비저너 노드에서 다음 절차를 실행해야 합니다.
절차
필요한 경우
oc
바이너리를 가져옵니다. 이는 이미 프로비저너 노드에 있어야 합니다.$ curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/$VERSION/openshift-client-linux-$VERSION.tar.gz | tar zxvf - oc
$ sudo cp oc /usr/local/bin
- 베이스 보드 관리 컨트롤러를 사용하여 베어 메탈 노드의 전원을 끄고 해제되었는지 확인합니다.
베어 메탈 노드의 베이스 보드 관리 컨트롤러의 사용자 이름 및 암호를 검색합니다. 그런 다음 사용자 이름과 암호에서
base64
문자열을 생성합니다.$ echo -ne "root" | base64
$ echo -ne "password" | base64
베어 메탈 노드에 대한 구성 파일을 생성합니다.
$ vim bmh.yaml
--- apiVersion: v1 kind: Secret metadata: name: openshift-worker-<num>-bmc-secret type: Opaque data: username: <base64-of-uid> password: <base64-of-pwd> --- apiVersion: metal3.io/v1alpha1 kind: BareMetalHost metadata: name: openshift-worker-<num> spec: online: true bootMACAddress: <NIC1-mac-address> bmc: address: <protocol>://<bmc-ip> credentialsName: openshift-worker-<num>-bmc-secret
두 개의
<num>
필드와credentialsName
필드에서 베어 메탈 노드의 작업자 번호<num>
을 바꿉니다 .<base64-of-uid>
를 사용자 이름의base64
문자열로 바꿉니다.<base64-of-pwd>
를 암호의base64
문자열로 바꿉니다.<NIC1-mac-address>
를 베어 메탈 노드의 첫 번째 NIC의 MAC 주소로 바꿉니다.추가 BMC 구성 옵션은 BMC 주소 지정 섹션을 참조하십시오.
<protocol>
을 IPMI, RedFish 또는 기타와 같은 BMC 프로토콜로 바꿉니다.<bmc-ip>
를 베어 메탈 노드의 베이스 보드 관리 컨트롤러의 IP 주소로 바꿉니다.참고기존 베어 메탈 노드의 MAC 주소가 프로비저닝하려는 베어 메탈 호스트의 MAC 주소와 일치하면 Ironic 설치가 실패합니다. 호스트 등록, 검사, 정리 또는 기타 Ironic 단계가 실패하면 Bare Metal Operator에서 설치를 지속적으로 다시 시도합니다. 자세한 내용은 호스트 중복 MAC 주소 진단을 참조하십시오.
베어 메탈 노드를 생성합니다.
$ oc -n openshift-machine-api create -f bmh.yaml
secret/openshift-worker-<num>-bmc-secret created baremetalhost.metal3.io/openshift-worker-<num> created
여기서
<num>
은 작업자 번호입니다.베어 메탈 노드의 전원을 켜고 검사합니다.
$ oc -n openshift-machine-api get bmh openshift-worker-<num>
여기서
<num>
은 작업자 노드 번호입니다.NAME STATE CONSUMER ONLINE ERROR openshift-worker-<num> ready true
10.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.9.0 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
오브젝트를 제거한 후 머신 컨트롤러에서Node
오브젝트를 자동으로 삭제합니다.BMC 인증 정보를 저장할 새
BareMetalHost
오브젝트와 시크릿을 생성합니다.$ cat <<EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: control-plane-<num>-bmc-secret 1 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-secret 6 bootMACAddress: <NIC1_mac_address> 7 bootMode: UEFI externallyProvisioned: false hardwareProfile: unknown online: true EOF
- 1 4 6
name
필드와credentialsName
필드에서 베어 메탈 노드의 컨트롤 플레인 번호 <num
>을 바꿉니다.- 2
- &
lt;base64_of_uid&
gt;를 사용자 이름의base64
문자열로 바꿉니다. - 3
- &
lt;base64_of_pwd
>를 암호의base64
문자열로 바꿉니다. - 5
- &
lt;protocol
>을 redfish ,redfish
-virtualmediaidrac-virtualmedia
등과 같은 BMC 프로토콜로 바꿉니다. <bmc_ip
>를 베어 메탈 노드의 베이스 보드 관리 컨트롤러의 IP 주소로 바꿉니다. 추가 BMC 구성 옵션은 추가 리소스 섹션의 "BMC 주소 지정"을 참조하십시오. - 7
- &
lt;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
오브젝트를 생성해야 합니다. 다른 컨트롤 플레인머신
오브젝트에서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> 1 labels: machine.openshift.io/cluster-api-cluster: control-plane-<num> 2 machine.openshift.io/cluster-api-machine-role: master machine.openshift.io/cluster-api-machine-type: master name: control-plane-<num> 3 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
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 5h53m
RHCOS 설치 후
BareMetalHost
가 클러스터에 추가되었는지 확인합니다.$ oc get nodes
출력 예
NAME STATUS ROLES AGE VERSION control-plane-1.example.com available master 4m2s v1.18.2 control-plane-2.example.com available master 141m v1.18.2 control-plane-3.example.com available master 141m v1.18.2 compute-1.example.com available worker 87m v1.18.2 compute-2.example.com available worker 87m v1.18.2
참고새 컨트롤 플레인 노드를 교체한 후 새 노드에서 실행중인 etcd pod는
크래시 루프
상태에 있습니다. 자세한 내용은 추가 리소스 섹션의 "않던 etcd 멤버 교체"를 참조하십시오.
추가 리소스
10.5.3. 가상 네트워크에서 가상 미디어를 사용하여 배포 준비
provisioning
네트워크가 활성화되어 있고 baremetal
네트워크에서 가상 미디어를 사용하여 클러스터를 확장하려면 다음 절차를 사용하십시오.
사전 요구 사항
-
baremetal
네트워크와provisioning
네트워크가 있는 기존 클러스터가 있습니다.
프로세스
provisioning
CR(사용자 정의 리소스)을 편집하여baremetal
네트워크에서 가상 미디어를 사용하여 배포할 수 있습니다.oc edit provisioning
apiVersion: metal3.io/v1alpha1 kind: Provisioning metadata: creationTimestamp: "2021-08-05T18:51:50Z" finalizers: - provisioning.metal3.io generation: 8 name: provisioning-configuration resourceVersion: "551591" uid: f76e956f-24c6-4361-aa5b-feaf72c5b526 spec: preProvisioningOSDownloadURLs: {} provisioningDHCPRange: 172.22.0.10,172.22.0.254 provisioningIP: 172.22.0.3 provisioningInterface: enp1s0 provisioningNetwork: Managed provisioningNetworkCIDR: 172.22.0.0/24 provisioningOSDownloadURL: http://192.168.111.1/images/rhcos-<version>.x86_64.qcow2.gz?sha256=<sha256> virtualMediaViaExternalNetwork: true 1 status: generations: - group: apps hash: "" lastGeneration: 7 name: metal3 namespace: openshift-machine-api resource: deployments - group: apps hash: "" lastGeneration: 1 name: metal3-image-cache namespace: openshift-machine-api resource: daemonsets observedGeneration: 8 readyReplicas: 0
- 1
provisioning
CR에virtualœViaExternalNetwork: true
를 추가합니다.
API VIP 주소를 사용하도록 머신 세트를 편집합니다.
oc edit machineset
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: creationTimestamp: "2021-08-05T18:51:52Z" generation: 11 labels: machine.openshift.io/cluster-api-cluster: ostest-hwmdt machine.openshift.io/cluster-api-machine-role: worker machine.openshift.io/cluster-api-machine-type: worker name: ostest-hwmdt-worker-0 namespace: openshift-machine-api resourceVersion: "551513" uid: fad1c6e0-b9da-4d4a-8d73-286f78788931 spec: replicas: 2 selector: matchLabels: machine.openshift.io/cluster-api-cluster: ostest-hwmdt machine.openshift.io/cluster-api-machineset: ostest-hwmdt-worker-0 template: metadata: labels: machine.openshift.io/cluster-api-cluster: ostest-hwmdt machine.openshift.io/cluster-api-machine-role: worker machine.openshift.io/cluster-api-machine-type: worker machine.openshift.io/cluster-api-machineset: ostest-hwmdt-worker-0 spec: metadata: {} providerSpec: value: apiVersion: baremetal.cluster.k8s.io/v1alpha1 hostSelector: {} image: checksum: http:/172.22.0.3:6181/images/rhcos-<version>.x86_64.qcow2.<md5sum> 1 url: http://172.22.0.3:6181/images/rhcos-<version>.x86_64.qcow2 2 kind: BareMetalMachineProviderSpec metadata: creationTimestamp: null userData: name: worker-user-data status: availableReplicas: 2 fullyLabeledReplicas: 2 observedGeneration: 11 readyReplicas: 2 replicas: 2
10.5.4. 클러스터에서 새 호스트를 프로비저닝할 때 중복된 MAC 주소 진단
클러스터에 있는 기존 베어 메탈 노드의 MAC 주소가 클러스터에 추가하려는 베어 메탈 호스트의 MAC 주소와 일치하는 경우 베어 메탈 Operator는 기존 노드와 호스트를 연결합니다. 호스트 등록, 검사, 정리 또는 기타 Ironic 단계가 실패하면 Bare Metal Operator에서 설치를 지속적으로 다시 시도합니다. 실패한 베어 메탈 호스트에 대한 등록 오류가 표시됩니다.
openshift-machine-api
네임스페이스에서 실행 중인 베어 메탈 호스트를 검사하여 중복된 MAC 주소를 진단할 수 있습니다.
사전 요구 사항
- OpenShift Container Platform 클러스터를 베어 메탈에 설치합니다.
-
OpenShift Container Platform CLI
oc
를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
프로세스
프로비저닝에 실패하는 베어 메탈 호스트에 기존 노드와 동일한 MAC 주소가 있는지 확인하려면 다음을 수행하십시오.
openshift-machine-api
네임스페이스에서 베어 메탈 호스트를 실행합니다.$ oc get bmh -n openshift-machine-api
출력 예
NAME STATUS PROVISIONING STATUS CONSUMER openshift-master-0 OK externally provisioned openshift-zpwpq-master-0 openshift-master-1 OK externally provisioned openshift-zpwpq-master-1 openshift-master-2 OK externally provisioned openshift-zpwpq-master-2 openshift-worker-0 OK provisioned openshift-zpwpq-worker-0-lv84n openshift-worker-1 OK provisioned openshift-zpwpq-worker-0-zd8lm openshift-worker-2 error registering
장애가 발생한 호스트의 상태에 대한 자세한 정보를 보려면 다음 명령을 실행하여
<bare_metal_host_name>
을 호스트 이름으로 교체합니다.$ oc get -n openshift-machine-api bmh <bare_metal_host_name> -o yaml
출력 예
... status: errorCount: 12 errorMessage: MAC address b4:96:91:1d:7c:20 conflicts with existing node openshift-worker-1 errorType: registration error ...
10.5.5. 베어 메탈 노드 프로비저닝
베어 메탈 노드를 프로비저닝하려면 프로비저너 노드에서 다음 절차를 실행해야 합니다.
프로세스
베어 메탈 노드를 프로비저닝하기 전에
STATE
가준비
되었는지 확인합니다.$ oc -n openshift-machine-api get bmh openshift-worker-<num>
여기서
<num>
은 작업자 노드 번호입니다.NAME STATE CONSUMER ONLINE ERROR openshift-worker-<num> ready true
작업자 노드 수를 계산합니다.
$ oc get nodes
NAME STATUS ROLES AGE VERSION provisioner.openshift.example.com Ready master 30h v1.22.1 openshift-master-1.openshift.example.com Ready master 30h v1.22.1 openshift-master-2.openshift.example.com Ready master 30h v1.22.1 openshift-master-3.openshift.example.com Ready master 30h v1.22.1 openshift-worker-0.openshift.example.com Ready master 30h v1.22.1 openshift-worker-1.openshift.example.com Ready master 30h v1.22.1
머신 세트를 가져옵니다.
$ oc get machinesets -n openshift-machine-api
NAME DESIRED CURRENT READY AVAILABLE AGE ... openshift-worker-0.example.com 1 1 1 1 55m openshift-worker-1.example.com 1 1 1 1 55m
작업자 노드 수를 하나씩 늘립니다.
$ oc scale --replicas=<num> machineset <machineset> -n openshift-machine-api
<num>
을 새 작업자 노드 수로 바꿉니다.<machineset>
를 이전 단계의 머신 세트 이름으로 바꿉니다.베어 메탈 노드 상태를 확인합니다.
$ oc -n openshift-machine-api get bmh openshift-worker-<num>
여기서
<num>
은 작업자 노드 번호입니다. STATE가준비
상태에서프로비저닝
으로 변경됩니다.NAME STATE CONSUMER ONLINE ERROR openshift-worker-<num> provisioning openshift-worker-<num>-65tjz true
provisioning
상태는 OpenShift Container Platform 클러스터가 노드를 프로비저닝할 때까지 유지됩니다. 이 작업을 수행하는 데 30분 이상 걸릴 수 있습니다. 노드를 프로비저닝하면 상태가provisioned
로 변경됩니다.NAME STATE CONSUMER ONLINE ERROR openshift-worker-<num> provisioning openshift-worker-<num>-65tjz true
프로비저닝이 완료되면 베어 메탈 노드가 준비되었는지 확인합니다.
$ oc get nodes
NAME STATUS ROLES AGE VERSION provisioner.openshift.example.com Ready master 30h v1.22.1 openshift-master-1.openshift.example.com Ready master 30h v1.22.1 openshift-master-2.openshift.example.com Ready master 30h v1.22.1 openshift-master-3.openshift.example.com Ready master 30h v1.22.1 openshift-worker-0.openshift.example.com Ready master 30h v1.22.1 openshift-worker-1.openshift.example.com Ready master 30h v1.22.1 openshift-worker-<num>.openshift.example.com Ready worker 3m27s v1.22.1
kubelet도 확인할 수 있습니다.
$ ssh openshift-worker-<num>
[kni@openshift-worker-<num>]$ journalctl -fu kubelet