본 가이드는 RHOCP 4.8.5에 RHCOS 4.8.2 기준으로 작성되어있습니다.
버전이 올라가면서 해당 방법은 변경될 수 있습니다. 아래 예제는 Bastion는 그냥 두고 PXE 서버를 구성해서 기 구성된 RHOCP Cluster에 worker 노드를 Join 시키는 방법입니다.
Bastion, bootstrap 등 초기 설치하는 설명을 포함하진 않습니다.
해당 방법을 통해 bootstrap / master / worker 노드를 PXE를 통해서 구성할 수 있습니다.
아래 예는 기 구축된 Cluster 에 worker 노드를 추가 하기 위한 방법이며, 내용에는 bootstrap, master 노드의 정보가 포함되어있습니다.
1. 준비 환경
KVM의 VM을 생성함
4 vCPU / 8G Mem / 50GB
1 NIC
RHEL 8.2
RHOCP 4.8.5
RHCOS 4.8.2
xinetd를 설치하긴 했으나, httpd만 사용
2. SELINUX 및 방화벽 비 활성화
[root@rhocp-pxe ~]# setenforce 0
또는
[root@rhocp-pxe ocp]# vi /etc/selinux/config
SELINUX=disabled
한 후 노드 재부팅
3. PXE 서버를 위한 필요 패키지 설치
[root@rhocp-pxe ~]# dnf install -y dnsmasq wget tcpdump syslinux httpd tftp-server
4. dnsmasq 설치 및 구성
[root@rhocp-pxe ~]# cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
[root@rhocp-pxe ~]# vi /etc/dnsmasq.conf
interface=ens3,lo
#bind-interfaces
domain=test
# DHCP range-leases
# 멀티 Network Pool 사용시 아래 내용 처럼 두 개의 네트워크 풀을 설정
dhcp-range= ens3,xx.xx.xx.200,xx.xx.xx.209,255.255.255.0,1h
dhcp-range= ens3,yy.yy.yy.200,yy.yy.yy.209,255.255.255.0,1h
# 특정 호스트의 고정 IP를 할당할 경우 아래와 같이 설정
#dhcp-range= ens3,yy.yy.yy.0,static
#dhcp-range= ens3,xx.xx.xx.0,static
dhcp-host= e4:43:4b:b5:1b:8c,yy.yy.yy.202
# PXE
dhcp-boot=pxelinux.0,pxeserver,xx.xx.xx.250
# Gateway
dhcp-option=3,xx.xx.xx.1
dhcp-option=3,yy.yy.yy.1
# DNS
dhcp-option=6,xx.xx.xx.1,8.8.8.8
dhcp-option=6,yy.yy.yy.1,8.8.8.8
server=8.8.8.8
# Broadcast Address (if 24 subnet = 224)
dhcp-option=224,yy.yy.yy.255
# NTP Server
dhcp-option=42,xx.xx.xx.250
pxe-prompt="Press F8 for menu.", 60
pxe-service=x86PC, "Install RHCOS 4.8.5 from network server xx.xx.xx.250", pxelinux
enable-tftp
tftp-root=/var/lib/tftpboot
5. SYSLINUX 부트 로더로 복사
[root@rhocp-pxe ~]# cp -r /usr/share/syslinux/* /var/lib/tftpboot
6. PXE 서버 구성 파일 설정
본 예제에서는 worker노드에 대한 부분을 참고해야하며, 아래 내용중 bootstrap과 master 노드의 IP 변경 그리고 메뉴 추가를 통해 사용자가 PXE를 통해서 Cluster를 구성할 수도 있습니다.
[root@rhocp-pxe ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@rhocp-pxe ~]# vi /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
prompt 0
timeout 1000
menu title ###HHHHH PXE Boot Menu ###HHHHH
label 1
menu label ^1 - Boot from bootstrap.ign
KERNEL http://xx.xx.xx.250:8080/ocp/rhcos-live-kernel-x86_64
APPEND ignition.platform=metal initrd=http://xx.xx.xx.250:8080/ocp/rhcos-live-initramfs.x86_64.img coreos.live.rootfs_url=http://xx.xx.xx.250:8080/ocp/rhcos-live-rootfs.x86_64.img coreos.inst.install_dev=/dev/vda coreos.inst.insecure coreos.inst.image_url=http://xx.xx.xx.250:8080/ocp/rhcos.tar.gz coreos.inst.ignition_url=http://xx.xx.xx.250:8080/ign/bootstrap.ign ip=xx.xx.xx.205::xx.xx.xx.1:255.255.255.0:rhocp-sdn-bootstrap.sa.test.com:ens3:none nameserver=xx.xx.xx.18
label 2
menu label ^2 - Boot from master.ign
KERNEL http://xx.xx.xx.250:8080/ocp/rhcos-live-kernel-x86_64
APPEND ignition.platform=metal initrd=http://xx.xx.xx.250:8080/ocp/rhcos-live-initramfs.x86_64.img coreos.live.rootfs_url=http://xx.xx.xx.250:8080/ocp/rhcos-live-rootfs.x86_64.img coreos.inst.install_dev=/dev/vda coreos.inst.insecure coreos.inst.image_url=http://xx.xx.xx.250:8080/ocp/rhcos.tar.gz coreos.inst.ignition_url=http://xx.xx.xx.250:8080/ign/master.ign ip=xx.xx.xx.205::xx.xx.xx.1:255.255.255.0:rhocp-sdn-master1.sa.test.com:ens3:none nameserver=xx.xx.xx.18
label 3
menu label ^3 - Boot from worker.ign
KERNEL http://xx.xx.xx.250:8080/ocp/rhcos-live-kernel-x86_64
APPEND ignition.platform=metal initrd=http://xx.xx.xx.250:8080/ocp/rhcos-live-initramfs.x86_64.img coreos.live.rootfs_url=http://xx.xx.xx.250:8080/ocp/rhcos-live-rootfs.x86_64.img coreos.inst.install_dev=/dev/vda coreos.inst.insecure coreos.inst.image_url=http://xx.xx.xx.250:8080/ocp/rhcos.tar.gz coreos.inst.ignition_url=http://xx.xx.xx.250:8080/ign/worker.ign ip=xx.xx.xx.205::xx.xx.xx.1:255.255.255.0:rhocp-sdn-worker5.sa.test.com:ens3:none nameserver=xx.xx.xx.18
7. httpd 구성
기 구성에 사용한 ign (ignition 파일)과 rhocp 설치 이미지들을 다운받거나 기 구성한 bastion에서 파일을 복사합니다.
아래와 같은 파일들이 있어야합니다.
rhcos.tar.gz 는 설정파일을 간단히 이름만 변경하였습니다. (rhcos-4.8.2-x86_64-metal.x86_64.raw.gz -> rhcos.tar.gz)
[root@rhocp-pxe ~]# mkdir -p /var/www/html/ign
[root@rhocp-pxe ~]# mkdir -p /var/www/html/ocp
[root@rhocp-pxe html]# ls ign/
111.ign bootstrap.ign master.ign worker.ign
[root@rhocp-pxe html]# ls ocp/
rhcos-installer-kernel-x86_64 rhcos-installer-rootfs.x86_64.img rhcos-live-initramfs.x86_64.img rhcos-live-kernel-x86_64 rhcos-live-rootfs.x86_64.img rhcos.tar.gz
[root@rhocp-pxe html]# vi /etc/httpd/conf/httpd.conf
Listen 8080
[root@rhocp-pxe html]# systemctl restart httpd
8. worker VM 생성
PXE 부팅 및 테스트를 위해 worker VM을 생성하고 PXE 부팅 설정을 합니다.
9. PXE Boot
boot 메뉴를 선택한 후 PXE 를 선택합니다.
10. PXE Boot
F8 키를 선택합니다.
엔터를 입력합니다.
본 가이드에서는 PXE 부팅을 통한 worker 노드 추가임으로 3번 메뉴를 선택 후 엔터를 입력합니다.
PXE 부팅 후 정상적으로 RHOCS 부팅이 이루어진 것을 확인 할 수 있습니다.
이후에도 몇 번의 노드 재기동이 발생할 수 있습니다.
11. 신규 worker 노드 추가 전 rhocp 노드 정보 확인
[root@rhocp-sdn-bastion ~]#oc get node
NAME STATUS ROLES AGE VERSION
rhocp-sdn-master1.sa.test.com Ready master 4d7h v1.21.1+9807387
rhocp-sdn-master2.sa.test.com Ready master 4d7h v1.21.1+9807387
rhocp-sdn-master3.sa.test.com Ready master 4d6h v1.21.1+9807387
rhocp-sdn-worker1.sa.test.com Ready worker 4d5h v1.21.1+9807387
rhocp-sdn-worker2.sa.test.com Ready worker 4d5h v1.21.1+9807387
rhocp-sdn-worker3.sa.test.com Ready worker 4d5h v1.21.1+9807387
12. 신규 노드의 인증서 서명 요청 승인
클러스터에 시스템을 추가하면 추가한 시스템별로 보류 중인 인증서 서명 요청(CSR)이 두 개씩 생성됩니다. 이러한 CSR이 승인되었는지 확인해야 하며, 필요한 경우 이를 직접 승인해야 합니다.
[root@rhocp-sdn-bastion ~]#oc get csr
NAME AGE SIGNERNAME REQUESTOR CONDITION
csr-55d24 3m43s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending
[root@rhocp-sdn-bastion ~]#oc adm certificate approve csr-55d24
certificatesigningrequest.certificates.k8s.io/csr-55d24 approved
[root@rhocp-sdn-bastion ~]#oc get csr
NAME AGE SIGNERNAME REQUESTOR CONDITION
csr-55d24 6m41s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Approved,Issued
13. Worker 노드 Join 확인
인증서 서명 확인 이후에 node 정보를 통해 기존 클러스터에 신규 노드가 Join되었는지 확인합니다. Not Ready일 경우 조금 기다리면 Ready가 됩니다.
[root@rhocp-sdn-bastion ~]#oc get node
NAME STATUS ROLES AGE VERSION
rhocp-sdn-master1.sa.test.com Ready master 4d7h v1.21.1+9807387
rhocp-sdn-master2.sa.test.com Ready master 4d7h v1.21.1+9807387
rhocp-sdn-master3.sa.test.com Ready master 4d6h v1.21.1+9807387
rhocp-sdn-worker1.sa.test.com Ready worker 4d5h v1.21.1+9807387
rhocp-sdn-worker2.sa.test.com Ready worker 4d5h v1.21.1+9807387
rhocp-sdn-worker3.sa.test.com Ready worker 4d5h v1.21.1+9807387
rhocp-sdn-worker5.sa.test.com NotReady worker 18s v1.21.1+9807387
[root@rhocp-sdn-bastion ~]#oc get node
NAME STATUS ROLES AGE VERSION
rhocp-sdn-master1.sa.test.com Ready master 4d7h v1.21.1+9807387
rhocp-sdn-master2.sa.test.com Ready master 4d7h v1.21.1+9807387
rhocp-sdn-master3.sa.test.com Ready master 4d6h v1.21.1+9807387
rhocp-sdn-worker1.sa.test.com Ready worker 4d5h v1.21.1+9807387
rhocp-sdn-worker2.sa.test.com Ready worker 4d5h v1.21.1+9807387
rhocp-sdn-worker3.sa.test.com Ready worker 4d5h v1.21.1+9807387
rhocp-sdn-worker5.sa.test.com Ready worker 82s v1.21.1+9807387
14. bastion에서 신규 추가된 worker에 접속 및 컨테이너 확인
PXE를 통해 추가 된 신규 worker 노드에 접속 후 컨테이너 상태를 확인합니다.
'Cloud > RedHat - OpenShift' 카테고리의 다른 글
[RHOCP4] RHEL7 worker 노드 추가 (0) | 2021.11.09 |
---|---|
[RHOCP4] openshift4 Pod 관리 (0) | 2021.11.09 |
[RHOCP4] openshift4 node 관리 (0) | 2021.11.09 |
[RHOCP4] OpenShift4 테스트 환경 설치 (4.8.14) (6) | 2021.11.08 |
RHOCP (Openshift) 개요 (0) | 2021.08.27 |