IBM Cloud Bare Metal (Classic) 설치
IBM Cloud Bare Metal (Classic)에 OpenShift Container Platform 설치
초록
1장. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
설치 관리자 프로비저닝 설치를 사용하여 IBM Cloud® Bare Metal(Classic) 노드에 OpenShift Container Platform을 설치할 수 있습니다. 이 문서에서는 IBM Cloud® 노드에 OpenShift Container Platform을 설치할 때 사전 요구 사항 및 절차를 설명합니다.
Red Hat은 provisioning 네트워크에서만 IPMI 및 PXE를 지원합니다. Red Hat은 IBM Cloud® 배포에서 Secure Boot와 같은 Red Hat, 가상 미디어 또는 기타 보완 기술을 테스트하지 않았습니다. provisioning 네트워크가 필요합니다.
OpenShift Container Platform 설치 프로그램으로 프로비저닝된 설치에는 다음이 필요합니다.
- 프로비저너를 실행하기 위한 RHCOS(Red Hat Enterprise Linux CoreOS) 8.x가 설치된 노드 1개
- 컨트롤 플레인 노드 세 개
- 라우팅 가능한 네트워크 1개
- 하나의 프로비저닝 네트워크
IBM Cloud® Bare Metal(Classic)에서 설치 관리자 프로비저닝 설치를 시작하기 전에 다음 사전 요구 사항 및 요구 사항을 해결합니다.
1.1. IBM Cloud Bare Metal (Classic) 인프라 설정 링크 복사링크가 클립보드에 복사되었습니다!
IBM Cloud® Bare Metal (Classic) 인프라에 OpenShift Container Platform 클러스터를 배포하려면 먼저 IBM Cloud® 노드를 프로비저닝해야 합니다.
Red Hat은 provisioning
네트워크에서만 IPMI 및 PXE를 지원합니다. Red Hat은 IBM Cloud® 배포에서 Secure Boot와 같은 Red Hat, 가상 미디어 또는 기타 보완 기술을 테스트하지 않았습니다. provisioning
네트워크가 필요합니다.
IBM Cloud® API를 사용하여 IBM Cloud® 노드를 사용자 지정할 수 있습니다. IBM Cloud® 노드를 생성할 때 다음 요구 사항을 고려해야 합니다.
클러스터당 하나의 데이터 센터 사용
OpenShift Container Platform 클러스터의 모든 노드는 동일한 IBM Cloud® 데이터 센터에서 실행해야 합니다.
공용 및 개인 VLAN 생성
단일 공용 VLAN과 단일 개인 VLAN을 사용하여 모든 노드를 생성합니다.
서브넷에 충분한 IP 주소가 있는지 확인
IBM Cloud® 공용 VLAN 서브넷에서는 기본적으로 16개의 IP 주소를 제공하는 /28
접두사를 사용합니다. 이는 baremetal
네트워크의 세 개의 컨트롤 플레인 노드, 4개의 작업자 노드, API VIP 및 Ingress VIP의 IP 주소 두 개로 구성된 클러스터에 충분합니다. 대규모 클러스터의 경우 더 작은 접두사가 필요할 수 있습니다.
IBM Cloud® 프라이빗 VLAN 서브넷에서는 기본적으로 64개의 IP 주소를 제공하는 /26
접두사를 사용합니다. IBM Cloud® Bare Metal(Classic)은 프라이빗 네트워크 IP 주소를 사용하여 각 노드의 BMC(Baseboard Management Controller)에 액세스합니다. OpenShift Container Platform은 provisioning
네트워크에 대한 추가 서브넷을 생성합니다. provisioning
네트워크 서브넷의 네트워크 트래픽은 개인 VLAN을 통해 라우팅됩니다. 대규모 클러스터의 경우 더 작은 접두사가 필요할 수 있습니다.
IP 주소 | 접두사 |
---|---|
32 |
|
64 |
|
128 |
|
256 |
|
NIC 설정
OpenShift Container Platform은 다음 두 가지 네트워크를 사용하여 배포합니다.
-
provisioning
:provisioning
네트워크는 OpenShift Container Platform 클러스터의 일부인 각 노드에서 기본 운영 체제를 프로비저닝하는 데 사용되는 라우팅할 수 없는 네트워크입니다. -
baremetal
:baremetal
네트워크는 라우팅 가능한 네트워크입니다.provisioningNetworkInterface
구성 설정에 지정된 NIC 또는provisioning
네트워크에 대한 노드의bootMACAddress
구성 설정에 연결된 NIC가 아닌 경우baremetal
네트워크와 상호 작용하기 위해 NIC를 사용할 수 있습니다.
클러스터 노드에는 두 개 이상의 NIC가 포함될 수 있지만 설치 프로세스는 처음 두 개의 NIC에만 중점을 둡니다. 예를 들면 다음과 같습니다.
NIC | 네트워크 | VLAN |
---|---|---|
NIC1 |
| <provisioning_vlan> |
NIC2 |
| <baremetal_vlan> |
이전 예에서 모든 컨트롤 플레인 및 작업자 노드의 NIC1은 OpenShift Container Platform 클러스터 설치에만 사용되는 라우팅 불가능한 네트워크(provisioning
)에 연결됩니다. 모든 컨트롤 플레인 및 작업자 노드의 NIC2는 라우팅 가능한 baremetal
네트워크에 연결됩니다.
PXE | 부팅 순서 |
---|---|
NIC1 PXE 지원 | 1 |
NIC2 | 2 |
provisioning
네트워크에 사용되는 NIC에서 PXE가 활성화되어 있고 다른 모든 NIC에서 비활성화되어 있는지 확인합니다.
표준 이름 구성
클라이언트는 baremetal
네트워크를 통해 OpenShift Container Platform 클러스터 노드에 액세스합니다. 표준 이름 확장이 클러스터 이름인 IBM Cloud® 하위 도메인 또는 하위 영역을 구성합니다.
<cluster_name>.<domain>
<cluster_name>.<domain>
예를 들면 다음과 같습니다.
test-cluster.example.com
test-cluster.example.com
DNS 항목 생성
다음을 위해 공용 서브넷에서 사용되지 않는 IP 주소를 확인하는 DNS A
레코드 항목을 생성해야 합니다.
사용법 | 호스트 이름 | IP |
---|---|---|
API | api.<cluster_name>.<domain> | <ip> |
Ingress LB (apps) | *.apps.<cluster_name>.<domain> | <ip> |
컨트롤 플레인 및 작업자 노드에는 프로비저닝 후 DNS 항목이 이미 있습니다.
다음 표에서는 정규화된 도메인 이름의 예를 제공합니다. API 및 Nameserver 주소는 표준 이름 확장으로 시작됩니다. 컨트롤 플레인 및 작업자 노드의 호스트 이름은 예외이므로 원하는 호스트 이름 지정 규칙을 사용할 수 있습니다.
사용법 | 호스트 이름 | IP |
---|---|---|
API | api.<cluster_name>.<domain> | <ip> |
Ingress LB (apps) | *.apps.<cluster_name>.<domain> | <ip> |
Provisioner node | provisioner.<cluster_name>.<domain> | <ip> |
Master-0 | openshift-master-0.<cluster_name>.<domain> | <ip> |
Master-1 | openshift-master-1.<cluster_name>.<domain> | <ip> |
Master-2 | openshift-master-2.<cluster_name>.<domain> | <ip> |
Worker-0 | openshift-worker-0.<cluster_name>.<domain> | <ip> |
Worker-1 | openshift-worker-1.<cluster_name>.<domain> | <ip> |
Worker-n | openshift-worker-n.<cluster_name>.<domain> | <ip> |
OpenShift Container Platform에는 클러스터 멤버십 정보를 사용하여 A
레코드를 생성하는 기능이 포함되어 있습니다. 이렇게 하면 노드 이름이 해당 IP 주소로 확인됩니다. 노드가 API에 등록되면 클러스터에서 CoreDNS-mDNS를 사용하지 않고 노드 정보를 분산할 수 있습니다. 그러면 멀티캐스트 DNS와 연결된 네트워크 트래픽이 제거됩니다.
IBM Cloud® 노드를 프로비저닝한 후 CoreDNS를 제거하면 로컬 항목이 사라지기 때문에 외부 DNS에서 api.<cluster_name>.
<domain> 도메인 이름에 대한 DNS 항목을 생성해야 합니다. 외부 DNS 서버에서 api.<cluster_name>.<domain>
도메인 이름에 대한 DNS 레코드를 생성하지 않으면 작업자 노드가 클러스터에 참여하지 못하도록 합니다.
Network Time Protocol (NTP)
클러스터의 각 OpenShift Container Platform 노드는 NTP 서버에 액세스할 수 있습니다. OpenShift Container Platform 노드는 NTP를 사용하여 클럭을 동기화합니다. 예를 들어 클러스터 노드는 검증이 필요한 SSL 인증서를 사용하므로 노드 간 날짜와 시간이 동기화되지 않은 경우 인증서가 실패할 수 있습니다.
각 클러스터 노드의 BIOS 설정에서 일관된 클럭 날짜 및 시간 형식을 정의하지 않으면 설치에 실패할 수 있습니다.
DHCP 서버 구성
IBM Cloud® Bare Metal(Classic)은 공용 또는 프라이빗 VLAN에서 DHCP를 실행하지 않습니다. IBM Cloud® 노드를 프로비저닝한 후에는 OpenShift Container Platform의 baremetal
네트워크에 해당하는 공용 VLAN에 대한 DHCP 서버를 설정해야 합니다.
각 노드에 할당된 IP 주소는 IBM Cloud® Bare Metal(Classic) 프로비저닝 시스템에서 할당한 IP 주소와 일치시킬 필요가 없습니다.
자세한 내용은 "공용 서브넷 구성" 섹션을 참조하십시오.
BMC 액세스 권한 확인
대시보드의 각 노드에 대한 "원격 관리" 페이지에는 노드의 IPMI(Intelligent Platform Management Interface) 인증 정보가 포함되어 있습니다. 기본 IPMI 권한을 사용하면 사용자가 특정 부팅 대상을 변경하지 못하게 합니다. Ironic에서 이러한 변경을 수행할 수 있도록 권한 수준을 OPERATOR
로 변경해야 합니다.
install-config.yaml
파일에서 privilegelevel
매개 변수를 각 BMC를 구성하는 데 사용되는 URL에 추가합니다. 자세한 내용은 " install-config.yaml 파일 구성" 섹션을 참조하십시오. 예를 들면 다음과 같습니다.
ipmi://<IP>:<port>?privilegelevel=OPERATOR
ipmi://<IP>:<port>?privilegelevel=OPERATOR
또는 IBM Cloud® 지원에 문의하여 각 노드의 ADMINISTRATOR
에 대한 IPMI 권한을 늘리도록 요청합니다.
베어 메탈 서버 생성
리소스 생성 → Classic용 베어 메탈 서버로 이동하여 IBM Cloud® 대시보드에서 베어 메탈 서버를 생성합니다.
또는 ibmcloud
CLI 유틸리티를 사용하여 베어 메탈 서버를 생성할 수도 있습니다. 예를 들면 다음과 같습니다.
IBM Cloud® CLI 설치에 대한 자세한 내용은 독립 실행형 IBM Cloud® CLI 설치를 참조하십시오.
IBM Cloud® 서버는 사용 가능한 데 3-5 시간이 걸릴 수 있습니다.
2장. OpenShift Container Platform 설치를 위한 환경 설정 링크 복사링크가 클립보드에 복사되었습니다!
2.1. IBM Cloud(R) Bare Metal(Classic) 인프라에서 프로비저너 노드 준비 링크 복사링크가 클립보드에 복사되었습니다!
프로비저너 노드를 준비하려면 다음 단계를 수행합니다.
프로세스
-
ssh
를 통해 프로비저너 노드에 로그인합니다. root가 아닌 사용자 (
kni
)를 만들고 해당 사용자에게sudo
권한을 부여합니다.useradd kni
# useradd kni
Copy to Clipboard Copied! Toggle word wrap Toggle overflow passwd kni
# passwd kni
Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo "kni ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/kni
# echo "kni ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/kni
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chmod 0440 /etc/sudoers.d/kni
# chmod 0440 /etc/sudoers.d/kni
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 사용자에 대한
ssh
키를 만듭니다.su - kni -c "ssh-keygen -f /home/kni/.ssh/id_rsa -N ''"
# su - kni -c "ssh-keygen -f /home/kni/.ssh/id_rsa -N ''"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프로비저너 노드에서 새 사용자로 로그인합니다.
su - kni
# su - kni
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Subscription Manager를 사용하여 프로비저닝 노드를 등록합니다.
sudo subscription-manager register --username=<user> --password=<pass> --auto-attach
$ sudo subscription-manager register --username=<user> --password=<pass> --auto-attach
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms \ --enable=rhel-8-for-x86_64-baseos-rpms
$ sudo subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms \ --enable=rhel-8-for-x86_64-baseos-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고Red Hat Subscription Manager에 대한 자세한 내용은 Using and Configuring Red Hat Subscription Manager에서 참조하십시오.
다음 패키지를 설치합니다.
sudo dnf install -y libvirt qemu-kvm mkisofs python3-devel jq ipmitool
$ sudo dnf install -y libvirt qemu-kvm mkisofs python3-devel jq ipmitool
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사용자를 변경하여
libvirt
그룹을 새로 만든 사용자에 추가합니다.sudo usermod --append --groups libvirt kni
$ sudo usermod --append --groups libvirt kni
Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewalld
시작:sudo systemctl start firewalld
$ sudo systemctl start firewalld
Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewalld
활성화:sudo systemctl enable firewalld
$ sudo systemctl enable firewalld
Copy to Clipboard Copied! Toggle word wrap Toggle overflow http
서비스를 시작합니다.sudo firewall-cmd --zone=public --add-service=http --permanent
$ sudo firewall-cmd --zone=public --add-service=http --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo firewall-cmd --reload
$ sudo firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow libvirtd
서비스를 시작하고 활성화합니다.sudo systemctl enable libvirtd --now
$ sudo systemctl enable libvirtd --now
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프로비저너 노드의 ID를 설정합니다.
PRVN_HOST_ID=<ID>
$ PRVN_HOST_ID=<ID>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음
ibmcloud
명령을 사용하여 ID를 볼 수 있습니다.ibmcloud sl hardware list
$ ibmcloud sl hardware list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 공용 서브넷의 ID를 설정합니다.
PUBLICSUBNETID=<ID>
$ PUBLICSUBNETID=<ID>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음
ibmcloud
명령을 사용하여 ID를 볼 수 있습니다.ibmcloud sl subnet list
$ ibmcloud sl subnet list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프라이빗 서브넷의 ID를 설정합니다.
PRIVSUBNETID=<ID>
$ PRIVSUBNETID=<ID>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음
ibmcloud
명령을 사용하여 ID를 볼 수 있습니다.ibmcloud sl subnet list
$ ibmcloud sl subnet list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프로비저너 노드 공용 IP 주소를 설정합니다.
PRVN_PUB_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | jq .primaryIpAddress -r)
$ PRVN_PUB_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | jq .primaryIpAddress -r)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 공용 네트워크의 CIDR을 설정합니다.
PUBLICCIDR=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .cidr)
$ PUBLICCIDR=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .cidr)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 공용 네트워크의 IP 주소 및 CIDR을 설정합니다.
PUB_IP_CIDR=$PRVN_PUB_IP/$PUBLICCIDR
$ PUB_IP_CIDR=$PRVN_PUB_IP/$PUBLICCIDR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 공용 네트워크의 게이트웨이를 설정합니다.
PUB_GATEWAY=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .gateway -r)
$ PUB_GATEWAY=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .gateway -r)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프로비저너 노드의 개인 IP 주소를 설정합니다.
PRVN_PRIV_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | \ jq .primaryBackendIpAddress -r)
$ PRVN_PRIV_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | \ jq .primaryBackendIpAddress -r)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사설 네트워크의 CIDR을 설정합니다.
PRIVCIDR=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .cidr)
$ PRIVCIDR=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .cidr)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사설 네트워크의 IP 주소 및 CIDR을 설정합니다.
PRIV_IP_CIDR=$PRVN_PRIV_IP/$PRIVCIDR
$ PRIV_IP_CIDR=$PRVN_PRIV_IP/$PRIVCIDR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사설 네트워크의 게이트웨이를 설정합니다.
PRIV_GATEWAY=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .gateway -r)
$ PRIV_GATEWAY=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .gateway -r)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow baremetal
및provisioning
네트워크에 대한 브릿지를 설정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고eth1
및eth2
의 경우 필요에 따라 적절한 인터페이스 이름을 대체합니다.필요한 경우
provisioner
노드로 SSH를 실행합니다.ssh kni@provisioner.<cluster-name>.<domain>
# ssh kni@provisioner.<cluster-name>.<domain>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 연결 브리지가 올바르게 생성되었는지 확인합니다.
sudo nmcli con show
$ sudo nmcli con show
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pull-secret.txt
파일을 만듭니다.vim pull-secret.txt
$ vim pull-secret.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 웹 브라우저에서 Install on Bare Metal with user-provisioned infrastructure 로 이동합니다. 1단계에서 풀 시크릿 다운로드를 클릭합니다.
pull-secret.txt
파일에 내용을 붙여 넣고kni
사용자의 홈 디렉터리에 저장합니다.
2.2. 공용 서브넷 구성 링크 복사링크가 클립보드에 복사되었습니다!
모든 OpenShift Container Platform 클러스터 노드는 공용 서브넷에 있어야 합니다. IBM Cloud® Bare Metal(Classic)은 서브넷에 DHCP 서버를 제공하지 않습니다. 프로비저너 노드에서 별도로 설정합니다.
프로비저너 노드를 준비할 때 정의된 BASH 변수를 재설정해야 합니다. 준비 후 프로비저너 노드를 재부팅하면 이전에 설정된 BASH 변수가 삭제됩니다.
프로세스
dnsmasq
를 설치합니다.sudo dnf install dnsmasq
$ sudo dnf install dnsmasq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dnsmasq
구성 파일을 엽니다.sudo vi /etc/dnsmasq.conf
$ sudo vi /etc/dnsmasq.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dnsmasq
구성 파일에 다음 구성을 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- DHCP 범위를 설정합니다.
baremetal
네트워크의dhcp-range
가 IP 주소로 시작되고 종료되도록<ip_addr>
의 두 인스턴스를 공용 서브넷에서 사용하지 않는 IP 주소로 모두 바꿉니다.<pub_cidr>
을 공용 서브넷의 CIDR로 바꿉니다. - 2
- DHCP 옵션을 설정합니다.
<pub_gateway>
를baremetal
네트워크의 게이트웨이 IP 주소로 바꿉니다.<prvn_priv_ip>
를provisioning
네트워크에서 프로비저너 노드 개인 IP 주소의 IP 주소로 바꿉니다.<prvn_pub_ip>
를baremetal
네트워크에서 프로비저너 노드 공용 IP 주소의 IP 주소로 바꿉니다.
<pub_cidr>
의 값을 검색하려면 다음을 실행합니다.ibmcloud sl subnet detail <publicsubnetid> --output JSON | jq .cidr
$ ibmcloud sl subnet detail <publicsubnetid> --output JSON | jq .cidr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <publicsubnetid>
를 공용 서브넷의 ID로 바꿉니다.<pub_gateway>
의 값을 검색하려면 다음을 실행합니다.ibmcloud sl subnet detail <publicsubnetid> --output JSON | jq .gateway -r
$ ibmcloud sl subnet detail <publicsubnetid> --output JSON | jq .gateway -r
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <publicsubnetid>
를 공용 서브넷의 ID로 바꿉니다.<prvn_priv_ip>
의 값을 검색하려면 다음을 실행합니다.ibmcloud sl hardware detail <id> --output JSON | \ jq .primaryBackendIpAddress -r
$ ibmcloud sl hardware detail <id> --output JSON | \ jq .primaryBackendIpAddress -r
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <id>
를 프로비저너 노드의 ID로 바꿉니다.<prvn_pub_ip>
의 값을 검색하려면 다음을 실행합니다.ibmcloud sl hardware detail <id> --output JSON | jq .primaryIpAddress -r
$ ibmcloud sl hardware detail <id> --output JSON | jq .primaryIpAddress -r
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <id>
를 프로비저너 노드의 ID로 바꿉니다.클러스터의 하드웨어 목록을 가져옵니다.
ibmcloud sl hardware list
$ ibmcloud sl hardware list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 각 노드의 MAC 주소 및 IP 주소를 가져옵니다.
ibmcloud sl hardware detail <id> --output JSON | \ jq '.networkComponents[] | \ "\(.primaryIpAddress) \(.macAddress)"' | grep -v null
$ ibmcloud sl hardware detail <id> --output JSON | \ jq '.networkComponents[] | \ "\(.primaryIpAddress) \(.macAddress)"' | grep -v null
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <id>
를 노드 ID로 바꿉니다.출력 예
"10.196.130.144 00:e0:ed:6a:ca:b4" "141.125.65.215 00:e0:ed:6a:ca:b5"
"10.196.130.144 00:e0:ed:6a:ca:b4" "141.125.65.215 00:e0:ed:6a:ca:b5"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 공용 네트워크의 MAC 주소 및 IP 주소를 기록합니다. 나중에
install-config.yaml
파일에서 사용할 사설 네트워크의 MAC 주소를 별도로 기록해 둡니다. 공용baremetal
네트워크의 공용 MAC 및 IP 주소와 개인provisioning
네트워크의 MAC 주소가 모두 있을 때까지 각 노드에 대해 이 절차를 반복합니다.각 노드의 공용
baremetal
네트워크의 MAC 및 IP 주소 쌍을dnsmasq.hostsfile
파일에 추가합니다.sudo vim /var/lib/dnsmasq/dnsmasq.hostsfile
$ sudo vim /var/lib/dnsmasq/dnsmasq.hostsfile
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 입력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <mac>,<ip>
를 해당 노드 이름의 공용 MAC 주소 및 공용 IP 주소로 바꿉니다.dnsmasq
를 시작합니다.sudo systemctl start dnsmasq
$ sudo systemctl start dnsmasq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 노드를 부팅할 때 시작되도록
dnsmasq
를 활성화합니다.sudo systemctl enable dnsmasq
$ sudo systemctl enable dnsmasq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dnsmasq
가 실행 중인지 확인합니다.sudo systemctl status dnsmasq
$ sudo systemctl status dnsmasq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow UDP 프로토콜을 사용하여 포트
53
및67
을 엽니다.sudo firewall-cmd --add-port 53/udp --permanent
$ sudo firewall-cmd --add-port 53/udp --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo firewall-cmd --add-port 67/udp --permanent
$ sudo firewall-cmd --add-port 67/udp --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow masquerade를 사용하여 외부 영역에
provisioning
을 추가합니다.sudo firewall-cmd --change-zone=provisioning --zone=external --permanent
$ sudo firewall-cmd --change-zone=provisioning --zone=external --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 단계에서는 관리 서브넷에 대한 IPMI 호출의 네트워크 주소 변환을 보장합니다.
firewalld
구성을 다시 로드합니다.sudo firewall-cmd --reload
$ sudo firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. OpenShift Container Platform 설치 프로그램 검색 링크 복사링크가 클립보드에 복사되었습니다!
설치 프로그램의 stable-4.x
버전과 선택한 아키텍처를 사용하여 일반적으로 사용 가능한 OpenShift Container Platform 버전을 배포합니다.
export VERSION=stable-4.17
$ export VERSION=stable-4.17
export RELEASE_ARCH=<architecture>
$ export RELEASE_ARCH=<architecture>
export RELEASE_IMAGE=$(curl -s https://mirror.openshift.com/pub/openshift-v4/$RELEASE_ARCH/clients/ocp/$VERSION/release.txt | grep 'Pull From: quay.io' | awk -F ' ' '{print $3}')
$ export RELEASE_IMAGE=$(curl -s https://mirror.openshift.com/pub/openshift-v4/$RELEASE_ARCH/clients/ocp/$VERSION/release.txt | grep 'Pull From: quay.io' | awk -F ' ' '{print $3}')
2.4. OpenShift Container Platform 설치 프로그램 추출 링크 복사링크가 클립보드에 복사되었습니다!
설치 프로그램을 가져온 후 다음 단계로 압축을 풉니다.
프로세스
환경 변수를 설정합니다.
export cmd=openshift-baremetal-install
$ export cmd=openshift-baremetal-install
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export pullsecret_file=~/pull-secret.txt
$ export pullsecret_file=~/pull-secret.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export extract_dir=$(pwd)
$ export extract_dir=$(pwd)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc
바이너리를 가져옵니다.curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/$VERSION/openshift-client-linux.tar.gz | tar zxvf - oc
$ curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/$VERSION/openshift-client-linux.tar.gz | tar zxvf - oc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 설치 프로그램 압축을 풉니다.
sudo cp oc /usr/local/bin
$ sudo cp oc /usr/local/bin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc adm release extract --registry-config "${pullsecret_file}" --command=$cmd --to "${extract_dir}" ${RELEASE_IMAGE}
$ oc adm release extract --registry-config "${pullsecret_file}" --command=$cmd --to "${extract_dir}" ${RELEASE_IMAGE}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo cp openshift-baremetal-install /usr/local/bin
$ sudo cp openshift-baremetal-install /usr/local/bin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5. install-config.yaml 파일 구성 링크 복사링크가 클립보드에 복사되었습니다!
install-config.yaml
파일에는 몇 가지 추가 정보가 필요합니다. 대부분의 정보는 설치 프로그램을 교육하여 사용 가능한 IBM Cloud® 베어 메탈(Classic) 하드웨어에 대해 충분한 정보를 제공하여 이를 완전히 관리할 수 있도록 합니다. 베어 메탈에 설치하고 IBM Cloud® Bare Metal(Classic)에 설치하는 것과의 주요 차이점은 install-config.yaml
파일의 BMC 섹션에서 IPMI의 권한 수준을 명시적으로 설정해야 한다는 것입니다.
프로세스
install-config.yaml
을 설정합니다.pullSecret
및sshKey
등 환경에 맞게 적절한 변수를 변경합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고ibmcloud
명령줄 유틸리티를 사용하여 암호를 검색할 수 있습니다.ibmcloud sl hardware detail <id> --output JSON | \ jq '"(.networkManagementIpAddress) (.remoteManagementAccounts[0].password)"'
$ ibmcloud sl hardware detail <id> --output JSON | \ jq '"(.networkManagementIpAddress) (.remoteManagementAccounts[0].password)"'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <id>
를 노드 ID로 바꿉니다.클러스터 구성을 저장할 디렉터리를 생성합니다.
mkdir ~/clusterconfigs
$ mkdir ~/clusterconfigs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow install-config.yaml
파일을 디렉터리에 복사합니다.cp install-config.yaml ~/clusterconfig
$ cp install-config.yaml ~/clusterconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform 클러스터를 설치하기 전에 모든 베어 메탈 노드의 전원이 꺼졌는지 확인합니다.
ipmitool -I lanplus -U <user> -P <password> -H <management_server_ip> power off
$ ipmitool -I lanplus -U <user> -P <password> -H <management_server_ip> power off
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 배포에서 남은 경우 이전 부트스트랩 리소스를 제거합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6. 추가 install-config 매개 변수 링크 복사링크가 클립보드에 복사되었습니다!
install-config.yaml
파일의 필수 매개 변수 hosts
매개 변수 및 bmc
매개 변수는 다음 표를 참조하십시오.
매개 변수 | 기본 | 설명 |
---|---|---|
|
클러스터의 도메인 이름입니다. 예: | |
|
|
노드의 부팅 모드입니다. 옵션은 |
|
부트스트랩 노드의 정적 네트워크 DNS입니다. 베어 메탈 네트워크에 DHCP(Dynamic Host Configuration Protocol) 서버가 없는 경우 고정 IP 주소가 있는 클러스터를 배포할 때 이 값을 설정해야 합니다. 이 값을 설정하지 않으면 설치 프로그램은 | |
| 부트스트랩 VM의 고정 IP 주소입니다. 베어 메탈 네트워크에 DHCP 서버가 없는 경우 고정 IP 주소가 있는 클러스터를 배포할 때 이 값을 설정해야 합니다. | |
| 부트스트랩 VM에 대한 게이트웨이의 고정 IP 주소입니다. 베어 메탈 네트워크에 DHCP 서버가 없는 경우 고정 IP 주소가 있는 클러스터를 배포할 때 이 값을 설정해야 합니다. | |
|
| |
|
| |
metadata: name:
|
OpenShift Container Platform 클러스터에 지정되는 이름입니다. 예: | |
networking: machineNetwork: - cidr:
|
외부 네트워크의 공개 CIDR (Classless Inter-Domain Routing)입니다. 예: | |
compute: - name: worker
| OpenShift Container Platform 클러스터에는 노드가 없는 경우에도 컴퓨팅 노드에 이름을 제공해야 합니다. | |
compute: replicas: 2
| replicas는 OpenShift Container Platform 클러스터의 컴퓨팅 노드 수를 설정합니다. | |
controlPlane: name: master
| OpenShift Container Platform 클러스터에는 컨트롤 플레인 노드의 이름이 필요합니다. | |
controlPlane: replicas: 3
| replicas는 OpenShift Container Platform 클러스터의 일부로 포함된 컨트롤 플레인 노드 수를 설정합니다. | |
|
provisioning 네트워크에 연결된 노드의 네트워크 인터페이스 이름입니다. OpenShift Container Platform 4.9 이상 릴리스의 경우 | |
| 플랫폼 구성없이 머신 풀에 사용되는 기본 설정입니다. | |
| (선택 사항) Kubernetes API 통신의 가상 IP 주소입니다.
이 설정은 기본 이름이 올바르게 확인되도록 MachineNetwork에서 예약된 IP로 참고
OpenShift Container Platform 4.12 이전에는 클러스터 설치 프로그램에서 | |
|
|
|
| (선택 사항) Ingress 트래픽의 가상 IP 주소입니다.
이 설정은 기본 이름이 올바르게 확인되도록 MachineNetwork에서 예약된 IP로 참고
OpenShift Container Platform 4.12 이전에는 클러스터 설치 프로그램에서 |
매개 변수 | 기본 | 설명 |
---|---|---|
|
| provisioning 네트워크에서 노드의 IP 범위를 정의합니다. |
|
| 프로비저닝에 사용할 네트워크의 CIDR입니다. 이 옵션은 provisioning 네트워크에서 기본 주소 범위를 사용하지 않는 경우 필요합니다. |
|
|
프로비저닝 서비스가 실행되는 클러스터 내의 IP 주소입니다. 기본값은 provisioning 서브넷의 세 번째 IP 주소입니다. 예: |
|
|
설치 프로그램이 컨트롤 플레인 (마스터) 노드를 배포하는 동안 프로비저닝 서비스가 실행되는 부트스트랩 VM의 IP 주소입니다. 기본값은 provisioning 서브넷의 두 번째 IP 주소입니다. 예를 들면 |
|
| 베어 메탈 네트워크에 연결된 하이퍼바이저의 베어 메탈 브리지의 이름입니다. |
|
|
provisioning 네트워크에 연결된 |
|
클러스터의 호스트 아키텍처를 정의합니다. 유효한 값은 | |
| 플랫폼 구성없이 머신 풀에 사용되는 기본 설정입니다. | |
|
부트스트랩 노드의 기본 운영 체제 이미지를 재정의하는 URL입니다. URL에는 이미지의 SHA-256 해시가 포함되어 있어야합니다. 예: | |
|
| |
| 이 매개 변수를 환경 내에서 사용되는 적절한 HTTP 프록시로 설정합니다. | |
| 이 매개 변수를 환경 내에서 사용되는 적절한 HTTPS 프록시로 설정합니다. | |
| 이 매개 변수를 환경 내 프록시 사용에 대한 적절한 예외 목록으로 설정합니다. |
호스트
hosts
매개 변수는 클러스터를 빌드하는 데 사용되는 별도의 베어 메탈 자산 목록입니다.
이름 | 기본 | 설명 |
---|---|---|
|
세부 정보와 연결할 | |
|
베어 메탈 노드의 역할입니다. | |
| 베이스 보드 관리 컨트롤러에 대한 연결 세부 정보입니다. 자세한 내용은 BMC 주소 지정 섹션을 참조하십시오. | |
|
호스트가 provisioning 네트워크에 사용하는 NIC의 MAC 주소입니다. ironic은 참고 provisioning 네트워크를 비활성화한 경우 호스트에서 유효한 MAC 주소를 제공해야 합니다. | |
| 이 선택적 매개 변수를 설정하여 호스트의 네트워크 인터페이스를 구성합니다. 자세한 내용은 "(선택 사항) 호스트 네트워크 인터페이스 구성을 참조하십시오. |
2.7. 루트 장치 팁 링크 복사링크가 클립보드에 복사되었습니다!
rootDeviceHints
매개 변수를 사용하면 설치 프로그램이 RHCOS (Red Hat Enterprise Linux CoreOS) 이미지를 특정 장치에 프로비저닝할 수 있습니다. 설치 프로그램은 장치를 검색한 순서대로 검사하고 검색된 값을 팁과 비교합니다. 설치 프로그램은 팁과 일치하는 첫 번째 검색된 장치를 사용합니다. 이 설정은 여러 팁을 결합할 수 있지만 장치는 설치 프로그램이이를 선택할 수 있도록 모든 팁과 일치해야 합니다.
서브 필드 | 설명 |
---|---|
|
Linux 장치 이름(예: |
|
|
| 공급 업체별 장치 식별자가 포함된 문자열. 팁은 실제 값의 하위 문자열입니다. |
| 장치의 공급 업체 또는 제조업체 이름이 포함된 문자열입니다. 팁은 실제 값의 하위 문자열입니다. |
| 장치 일련 번호가 포함된 문자열입니다. 팁은 실제 값과 정확히 일치해야 합니다. |
| 장치의 최소 크기 (기가 바이트)를 나타내는 정수입니다. |
| 고유 저장소 식별자를 포함하는 문자열입니다. 팁은 실제 값과 정확히 일치해야 합니다. |
| 공급 업체 확장이 추가된 고유 한 저장소 식별자가 포함된 문자열입니다. 팁은 실제 값과 정확히 일치해야 합니다. |
| 고유 공급 업체 저장소 식별자를 포함하는 문자열입니다. 팁은 실제 값과 정확히 일치해야 합니다. |
| 장치가 회전 디스크 여야하는지 (true) 아닌지 (false)를 나타내는 부울 값입니다. |
사용 예
2.8. OpenShift Container Platform 매니페스트 만들기 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform 매니페스트를 만듭니다.
./openshift-baremetal-install --dir ~/clusterconfigs create manifests
$ ./openshift-baremetal-install --dir ~/clusterconfigs create manifests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow INFO Consuming Install Config from target directory WARNING Making control-plane schedulable by setting MastersSchedulable to true for Scheduler cluster settings WARNING Discarding the OpenShift Manifest that was provided in the target directory because its dependencies are dirty and it needs to be regenerated
INFO Consuming Install Config from target directory WARNING Making control-plane schedulable by setting MastersSchedulable to true for Scheduler cluster settings WARNING Discarding the OpenShift Manifest that was provided in the target directory because its dependencies are dirty and it needs to be regenerated
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.9. OpenShift Container Platform 설치 프로그램을 통해 클러스터 배포 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform 설치 프로그램을 실행합니다.
./openshift-baremetal-install --dir ~/clusterconfigs --log-level debug create cluster
$ ./openshift-baremetal-install --dir ~/clusterconfigs --log-level debug create cluster
2.10. 설치 진행 상황 링크 복사링크가 클립보드에 복사되었습니다!
배포 프로세스 중에 설치 디렉터리 폴더의 .openshift_install.log
로그 파일에 tail
명령을 실행하여 설치의 전체 상태를 확인할 수 있습니다.
tail -f /path/to/install-dir/.openshift_install.log
$ tail -f /path/to/install-dir/.openshift_install.log
Legal Notice
링크 복사링크가 클립보드에 복사되었습니다!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.