11.2. OpenShift Container Platform 설치를 위한 환경 설정
11.2.1. IBM Cloud에 OpenShift Container Platform 설치를 위한 프로비저너 노드 준비
다음 단계를 수행하여 프로비저너 노드를 준비합니다.
프로세스
-
ssh
를 통해 프로비저너 노드에 로그인합니다. root가 아닌 사용자 (
kni
)를 만들고 해당 사용자에게sudo
권한을 부여합니다.# useradd kni
# passwd kni
# echo "kni ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/kni
# chmod 0440 /etc/sudoers.d/kni
새 사용자에 대한
ssh
키를 만듭니다.# su - kni -c "ssh-keygen -f /home/kni/.ssh/id_rsa -N ''"
프로비저너 노드에서 새 사용자로 로그인합니다.
# su - kni
Red Hat Subscription Manager를 사용하여 프로비저닝 노드를 등록합니다.
$ sudo subscription-manager register --username=<user> --password=<pass> --auto-attach
$ sudo subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms \ --enable=rhel-8-for-x86_64-baseos-rpms
참고Red Hat Subscription Manager에 대한 자세한 내용은 Using and Configuring Red Hat Subscription Manager에서 참조하십시오.
다음 패키지를 설치합니다.
$ sudo dnf install -y libvirt qemu-kvm mkisofs python3-devel jq ipmitool
사용자를 변경하여
libvirt
그룹을 새로 만든 사용자에 추가합니다.$ sudo usermod --append --groups libvirt kni
firewalld
시작 :$ sudo systemctl start firewalld
firewalld
활성화 :$ sudo systemctl enable firewalld
http
서비스를 시작합니다.$ sudo firewall-cmd --zone=public --add-service=http --permanent
$ sudo firewall-cmd --reload
libvirtd
서비스를 시작하고 활성화합니다.$ sudo systemctl enable libvirtd --now
프로비저너 노드의 ID를 설정합니다.
$ PRVN_HOST_ID=<ID>
다음
ibmcloud
명령을 사용하여 ID를 볼 수 있습니다.$ ibmcloud sl hardware list
공용 서브넷의 ID를 설정합니다.
$ PUBLICSUBNETID=<ID>
다음
ibmcloud
명령을 사용하여 ID를 볼 수 있습니다.$ ibmcloud sl subnet list
사설 서브넷의 ID를 설정합니다.
$ PRIVSUBNETID=<ID>
다음
ibmcloud
명령을 사용하여 ID를 볼 수 있습니다.$ ibmcloud sl subnet list
프로비저너 노드 공용 IP 주소를 설정합니다.
$ PRVN_PUB_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | jq .primaryIpAddress -r)
공용 네트워크의 CIDR을 설정합니다.
$ PUBLICCIDR=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .cidr)
공용 네트워크의 IP 주소 및 CIDR을 설정합니다.
$ PUB_IP_CIDR=$PRVN_PUB_IP/$PUBLICCIDR
public 네트워크의 게이트웨이를 설정합니다.
$ PUB_GATEWAY=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .gateway -r)
프로비저너 노드의 개인 IP 주소를 설정합니다.
$ PRVN_PRIV_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | \ jq .primaryBackendIpAddress -r)
사설 네트워크의 CIDR을 설정합니다.
$ PRIVCIDR=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .cidr)
사설 네트워크의 IP 주소 및 CIDR을 설정합니다.
$ PRIV_IP_CIDR=$PRVN_PRIV_IP/$PRIVCIDR
사설 네트워크의 게이트웨이를 설정합니다.
$ PRIV_GATEWAY=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .gateway -r)
baremetal
및provisioning
네트워크의 브리지를 설정합니다.$ sudo nohup bash -c " nmcli --get-values UUID con show | xargs -n 1 nmcli con delete nmcli connection add ifname provisioning type bridge con-name provisioning nmcli con add type bridge-slave ifname eth1 master provisioning nmcli connection add ifname baremetal type bridge con-name baremetal nmcli con add type bridge-slave ifname eth2 master baremetal nmcli connection modify baremetal ipv4.addresses $PUB_IP_CIDR ipv4.method manual ipv4.gateway $PUB_GATEWAY nmcli connection modify provisioning ipv4.addresses 172.22.0.1/24,$PRIV_IP_CIDR ipv4.method manual nmcli connection modify provisioning +ipv4.routes \"10.0.0.0/8 $PRIV_GATEWAY\" nmcli con down baremetal nmcli con up baremetal nmcli con down provisioning nmcli con up provisioning init 6 "
참고필요에 따라
eth1
및eth2
의 경우 적절한 인터페이스 이름을 대체합니다.필요한 경우
provisioner
노드로 다시 SSH 연결을 수행합니다.# ssh kni@provisioner.<cluster-name>.<domain>
연결 브리지가 올바르게 생성되었는지 확인합니다.
$ sudo nmcli con show
출력 예
NAME UUID TYPE DEVICE baremetal 4d5133a5-8351-4bb9-bfd4-3af264801530 bridge baremetal provisioning 43942805-017f-4d7d-a2c2-7cb3324482ed bridge provisioning virbr0 d9bca40f-eee1-410b-8879-a2d4bb0465e7 bridge virbr0 bridge-slave-eth1 76a8ed50-c7e5-4999-b4f6-6d9014dd0812 ethernet eth1 bridge-slave-eth2 f31c3353-54b7-48de-893a-02d2b34c4736 ethernet eth2
pull-secret.txt
파일을 생성합니다.$ vim pull-secret.txt
웹 브라우저에서 Install on Bare Metal with user-provisioned infrastructure 로 이동합니다. 1단계에서 Download pull secret(pull secret 다운로드 )을 클릭합니다.
pull-secret.txt
파일에 내용을 붙여 넣고kni
사용자의 홈 디렉터리에 저장합니다.
11.2.2. 공용 서브넷 구성
모든 OpenShift Container Platform 클러스터 노드는 퍼블릭 서브넷에 있어야 합니다. IBM Cloud®는 서브넷에 DHCP 서버를 제공하지 않습니다. 프로비저너 노드에서 별도로 설정합니다.
프로비저너 노드를 준비할 때 정의된 BASH 변수를 재설정해야 합니다. 준비 후 프로비저너 노드를 재부팅하면 이전에 설정한 BASH 변수가 삭제됩니다.
프로세스
dnsmasq
를 설치하십시오 :$ sudo dnf install dnsmasq
dnsmasq
구성 파일을 엽니다.$ sudo vi /etc/dnsmasq.conf
dnsmasq
구성 파일에 다음 구성을 추가합니다.interface=baremetal except-interface=lo bind-dynamic log-dhcp dhcp-range=<ip_addr>,<ip_addr>,<pub_cidr> 1 dhcp-option=baremetal,121,0.0.0.0/0,<pub_gateway>,<prvn_priv_ip>,<prvn_pub_ip> 2 dhcp-hostsfile=/var/lib/dnsmasq/dnsmasq.hostsfile
- 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
<publicsubnetid>
를 공용 서브넷의 ID로 바꿉니다.<pub_gateway>
값을 검색하려면 다음을 실행합니다.$ ibmcloud sl subnet detail <publicsubnetid> --output JSON | jq .gateway -r
<publicsubnetid>
를 공용 서브넷의 ID로 바꿉니다.<prvn_priv_ip>
값을 검색하려면 다음을 실행합니다.$ ibmcloud sl hardware detail <id> --output JSON | \ jq .primaryBackendIpAddress -r
<id>
를 프로비저너 노드의 ID로 바꿉니다.<prvn_pub_ip>
값을 검색하려면 다음을 실행합니다.$ ibmcloud sl hardware detail <id> --output JSON | jq .primaryIpAddress -r
<id>
를 프로비저너 노드의 ID로 바꿉니다.클러스터의 하드웨어 목록을 가져옵니다.
$ ibmcloud sl hardware list
각 노드의 MAC 주소 및 IP 주소를 가져옵니다.
$ ibmcloud sl hardware detail <id> --output JSON | \ jq '.networkComponents[] | \ "\(.primaryIpAddress) \(.macAddress)"' | grep -v null
<id>
를 노드 ID로 바꿉니다.출력 예
"10.196.130.144 00:e0:ed:6a:ca:b4" "141.125.65.215 00:e0:ed:6a:ca:b5"
공용 네트워크의 MAC 주소와 IP 주소를 기록합니다. 나중에
install-config.yaml
파일에서 사용할 사설 네트워크의 MAC 주소를 별도로 기록합니다. 공용베어
메탈 네트워크의 모든 공용 MAC 및 IP 주소 및 개인프로비저닝
네트워크의 MAC 주소가 있을 때까지 각 노드에 대해 이 절차를 반복합니다.각 노드의 공용
baremetal
네트워크의 MAC 및 IP 주소 쌍을dnsmasq.hostsfile
파일에 추가합니다.$ sudo vim /var/lib/dnsmasq/dnsmasq.hostsfile
입력 예
00:e0:ed:6a:ca:b5,141.125.65.215,master-0 <mac>,<ip>,master-1 <mac>,<ip>,master-2 <mac>,<ip>,worker-0 <mac>,<ip>,worker-1 ...
<mac>,<ip>
를 해당 노드 이름의 공용 MAC 주소 및 공용 IP 주소로 바꿉니다.dnsmasq
시작 :$ sudo systemctl start dnsmasq
노드를 부팅할 때 시작되도록
dnsmasq
를 활성화합니다.$ sudo systemctl enable dnsmasq
dnsmasq
가 실행 중인지 확인합니다.$ sudo systemctl status dnsmasq
출력 예
● dnsmasq.service - DNS caching server. Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2021-10-05 05:04:14 CDT; 49s ago Main PID: 3101 (dnsmasq) Tasks: 1 (limit: 204038) Memory: 732.0K CGroup: /system.slice/dnsmasq.service └─3101 /usr/sbin/dnsmasq -k
UDP 프로토콜로 포트
53
및67
을 엽니다.$ sudo firewall-cmd --add-port 53/udp --permanent
$ sudo firewall-cmd --add-port 67/udp --permanent
masquerade를 사용하여 외부 영역에
프로비저닝
을 추가합니다.$ sudo firewall-cmd --change-zone=provisioning --zone=external --permanent
이 단계에서는 관리 서브넷에 대한 IPMI 호출에 대한 네트워크 주소 변환을 수행합니다.
firewalld
구성을 다시 로드합니다.$ sudo firewall-cmd --reload
11.2.3. OpenShift Container Platform 설치 프로그램 검색
설치 프로그램의 stable-4.x
버전을 사용하여 일반적으로 사용 가능한 안정적인 OpenShift Container Platform 버전을 배포합니다.
$ export VERSION=stable-4.9 export RELEASE_IMAGE=$(curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/$VERSION/release.txt | grep 'Pull From: quay.io' | awk -F ' ' '{print $3}')
11.2.4. OpenShift Container Platform 설치 프로그램 추출
설치 프로그램을 가져온 후 다음 단계로 압축을 풉니다.
절차
환경 변수를 설정합니다.
$ export cmd=openshift-baremetal-install $ export pullsecret_file=~/pull-secret.txt $ export extract_dir=$(pwd)
oc
바이너리를 가져옵니다.$ curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/$VERSION/openshift-client-linux.tar.gz | tar zxvf - oc
설치 프로그램 압축을 풉니다.
$ sudo cp oc /usr/local/bin $ oc adm release extract --registry-config "${pullsecret_file}" --command=$cmd --to "${extract_dir}" ${RELEASE_IMAGE} $ sudo cp openshift-baremetal-install /usr/local/bin
11.2.5. install-config.yaml 파일 구성
install-config.yaml
파일에는 몇 가지 추가 정보가 필요합니다. 대부분의 정보는 사용 가능한 IBM Cloud® 하드웨어에 대해 설치 프로그램 및 결과 클러스터에 충분한 정보를 제공하여 이를 완전히 관리할 수 있도록 하는 것입니다. 베어 메탈에 설치하고 IBM Cloud에 설치하는 것과 중요한 차이점은 install-config.yaml
파일의 BMC 섹션에서 IPMI의 권한 수준을 명시적으로 설정해야 한다는 것입니다.
절차
install-config.yaml
을 설정합니다.pullSecret
및sshKey
등 환경에 맞게 적절한 변수를 변경합니다.apiVersion: v1 baseDomain: <domain> metadata: name: <cluster_name> networking: machineNetwork: - cidr: <public-cidr> networkType: OVNKubernetes compute: - name: worker replicas: 2 controlPlane: name: master replicas: 3 platform: baremetal: {} platform: baremetal: apiVIP: <api_ip> ingressVIP: <wildcard_ip> provisioningNetworkInterface: <NIC1> provisioningNetworkCIDR: <CIDR> hosts: - name: openshift-master-0 role: master bmc: address: ipmi://10.196.130.145?privilegelevel=OPERATOR 1 username: root password: <password> bootMACAddress: 00:e0:ed:6a:ca:b4 2 rootDeviceHints: deviceName: "/dev/sda" - name: openshift-worker-0 role: worker bmc: address: ipmi://<out-of-band-ip>?privilegelevel=OPERATOR 3 username: <user> password: <password> bootMACAddress: <NIC1_mac_address> 4 rootDeviceHints: deviceName: "/dev/sda" pullSecret: '<pull_secret>' sshKey: '<ssh_pub_key>'
참고ibmcloud
명령줄 유틸리티를 사용하여 암호를 검색할 수 있습니다.$ ibmcloud sl hardware detail <id> --output JSON | \ jq '"(.networkManagementIpAddress) (.remoteManagementAccounts[0].password)"'
<id>
를 노드 ID로 바꿉니다.클러스터 구성을 저장할 디렉터리를 생성합니다.
$ mkdir ~/clusterconfigs
install-config.yaml
파일을 디렉터리에 복사합니다.$ cp install-config.yaml ~/clusterconfig
OpenShift Container Platform 클러스터를 설치하기 전에 모든 베어 메탈 노드의 전원이 꺼져 있는지 확인합니다.
$ ipmitool -I lanplus -U <user> -P <password> -H <management_server_ip> power off
이전 배포 시도에서 이전 부트스트랩 리소스가 남아 있는 경우 이전 부트스트랩 리소스를 제거합니다.
for i in $(sudo virsh list | tail -n +3 | grep bootstrap | awk {'print $2'}); do sudo virsh destroy $i; sudo virsh undefine $i; sudo virsh vol-delete $i --pool $i; sudo virsh vol-delete $i.ign --pool $i; sudo virsh pool-destroy $i; sudo virsh pool-undefine $i; done
11.2.6. 추가 install-config
매개 변수
install-config.yaml
파일의 필수 매개 변수 hosts
매개 변수 및 bmc
매개 변수는 다음 표를 참조하십시오.
매개 변수 | 기본 | 설명 |
---|---|---|
|
클러스터의 도메인 이름입니다. 예: | |
|
|
노드의 부팅 모드입니다. 옵션은 |
|
| |
|
| |
metadata: name: |
OpenShift Container Platform 클러스터에 지정되는 이름입니다. 예: | |
networking: machineNetwork: - cidr: |
외부 네트워크의 공개 CIDR (Classless Inter-Domain Routing)입니다. 예: | |
compute: - name: worker | OpenShift Container Platform 클러스터에는 노드가 없는 경우에도 작업자 (또는 컴퓨팅) 노드에 이름을 지정해야 합니다. | |
compute: replicas: 2 | 복제는 OpenShift Container Platform 클러스터의 작업자 (또는 컴퓨팅) 노드 수를 설정합니다. | |
controlPlane: name: master | OpenShift Container Platform 클러스터에는 컨트롤 플레인 (마스터) 노드의 이름이 필요합니다. | |
controlPlane: replicas: 3 | 복제는 OpenShift Container Platform 클러스터의 일부로 포함된 컨트롤 플레인 (마스터) 노드의 수를 설정합니다. | |
|
| |
| 플랫폼 구성없이 머신 풀에 사용되는 기본 설정입니다. | |
| (선택 사항) Kubernetes API 통신의 가상 IP 주소입니다.
이 설정은 | |
|
|
|
| (선택 사항) 수신 트래픽의 가상 IP 주소입니다.
이 설정은 |
매개 변수 | 기본 | 설명 |
---|---|---|
|
|
|
|
|
프로비저닝에 사용할 네트워크의 CIDR입니다. 이 옵션은 |
|
|
프로비저닝 서비스가 실행되는 클러스터 내의 IP 주소입니다. 기본값은 |
|
|
설치 프로그램이 컨트롤 플레인 (마스터) 노드를 배포하는 동안 프로비저닝 서비스가 실행되는 부트스트랩 VM의 IP 주소입니다. 기본값은 |
|
|
|
|
|
|
| 플랫폼 구성없이 머신 풀에 사용되는 기본 설정입니다. | |
|
부트스트랩 노드의 기본 운영 체제 이미지를 재정의하는 URL입니다. URL에는 이미지의 SHA-256 해시가 포함되어 있어야합니다. 예: | |
|
클러스터 노드의 기본 운영 체제를 재정의하는 URL입니다. URL에는 이미지의 SHA-256 해시가 포함되어 있어야 합니다. 예: | |
|
| |
| 이 매개 변수를 환경 내에서 사용되는 적절한 HTTP 프록시로 설정합니다. | |
| 이 매개 변수를 환경 내에서 사용되는 적절한 HTTPS 프록시로 설정합니다. | |
| 이 매개 변수를 환경 내 프록시 사용에 대한 적절한 예외 목록으로 설정합니다. |
호스트
hosts
매개 변수는 클러스터를 빌드하는 데 사용되는 별도의 베어 메탈 자산 목록입니다.
이름 | 기본 | 설명 |
---|---|---|
|
세부 정보와 연결할 | |
|
베어 메탈 노드의 역할입니다. | |
| 베이스 보드 관리 컨트롤러에 대한 연결 세부 정보입니다. 자세한 내용은 BMC 주소 지정 섹션을 참조하십시오. | |
|
호스트가 참고
|
11.2.7. 루트 장치 팁
rootDeviceHints
매개 변수를 사용하면 설치 프로그램이 RHCOS (Red Hat Enterprise Linux CoreOS) 이미지를 특정 장치에 프로비저닝할 수 있습니다. 설치 프로그램은 장치를 검색한 순서대로 검사하고 검색된 값을 팁과 비교합니다. 설치 프로그램은 팁과 일치하는 첫 번째 검색된 장치를 사용합니다. 이 설정은 여러 팁을 결합할 수 있지만 장치는 설치 프로그램이이를 선택할 수 있도록 모든 팁과 일치해야 합니다.
서브 필드 | 설명 |
---|---|
|
|
|
|
| 공급 업체별 장치 식별자가 포함된 문자열. 팁은 실제 값의 하위 문자열입니다. |
| 장치의 공급 업체 또는 제조업체 이름이 포함된 문자열입니다. 팁은 실제 값의 하위 문자열입니다. |
| 장치 일련 번호가 포함된 문자열입니다. 팁은 실제 값과 정확히 일치해야 합니다. |
| 장치의 최소 크기 (기가 바이트)를 나타내는 정수입니다. |
| 고유 저장소 식별자를 포함하는 문자열입니다. 팁은 실제 값과 정확히 일치해야 합니다. |
| 공급 업체 확장이 추가된 고유 한 저장소 식별자가 포함된 문자열입니다. 팁은 실제 값과 정확히 일치해야 합니다. |
| 고유 공급 업체 저장소 식별자를 포함하는 문자열입니다. 팁은 실제 값과 정확히 일치해야 합니다. |
| 장치가 회전 디스크 여야하는지 (true) 아닌지 (false)를 나타내는 부울 값입니다. |
사용 예
- name: master-0 role: master bmc: address: ipmi://10.10.0.3:6203 username: admin password: redhat bootMACAddress: de:ad:be:ef:00:40 rootDeviceHints: deviceName: "/dev/sda"
11.2.8. OpenShift Container Platform 매니페스트 만들기
OpenShift Container Platform 매니페스트를 만듭니다.
$ ./openshift-baremetal-install --dir ~/clusterconfigs create manifests
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
11.2.9. OpenShift Container Platform 설치 프로그램을 통해 클러스터 배포
OpenShift Container Platform 설치 프로그램을 실행합니다.
$ ./openshift-baremetal-install --dir ~/clusterconfigs --log-level debug create cluster
11.2.10. 설치 후
배포 프로세스 중에 설치 디렉터리 폴더의 .openshift_install.log
로그 파일에 tail
명령을 실행하여 설치의 전체 상태를 확인할 수 있습니다.
$ tail -f /path/to/install-dir/.openshift_install.log