2025. 1. 21. 13:53ㆍ인프라 환경 구성/openshift
5. bootstrap 서버 설치
ISO 다운로드 : https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/
위 URL 에서 RH CoreOS ISO 파일을 다운로드 하고, OS 설치를 위해 CD 굽기 또는 iODD 와 같은 장치에 넣어둡니다.
나머지 서버 6대 (bootstrap, master, worker) 에 설치를 해야 합니다.
- 파일명 : rhcos-4.12.0-x86_64-live.x86_64.iso
파일 URL 은 아래와 같은 명령으로도 쉽게 확인이 가능합니다. (위와 같은파일)
# ./openshift-install coreos print-stream-json | grep '\.iso[^.]' | grep x86_64
"location": "https://rhcos.mirror.openshift.com/art/storage/prod/streams/4.12/builds/412.86.202212081411-0/x86_64/rhcos-412.86.202212081411-0-live.x86_64.iso",
* OCP 서버에서 작업합니다.
추후 bootstrap.ign 검증을 위해 해시값이 필요한데, 해시값의 길이가 길어 타이핑이 어려우므로 bootstrap.hash 파일에 해시값 넣습니다.
# cd /usr/share/nginx/html/files
# sha512sum bootstrap.ign |awk {'print $1'} > bootstrap.hash
# sha512sum master.ign |awk {'print $1'} > master.hash
# sha512sum worker.ign |awk {'print $1'} > worker.hash
* 여기부터 bootstrap 서버에서의 작업입니다.
Vmware workstation에서 Virtual machine 생성 시 꼭 운영체제를 Linux로 해주세요. 아니면 네트워크 인터페이스가 잡히지 않습니다!
bootstrap 서버에 CD 또는 iODD 장치를 연결하고 위에서 다운로드 받았던 RH CoreOS ISO 이미지로 부팅하면 시간이 지나 명령 수행이 가능한 쉘프롬프트로 떨어지게 됩니다.
우선 네트워크에 연결되어진 장치명을 확인하고 nmtui (Network Manager TUI) 명령을 이용하여 네트워크 설정을 진행합니다.
$ nmcli d
DEVICE TYPE STATE CONNECTION
eno2 ethernet connecting (getting IP configuration) Wired connection 2
eno1 ethernet unavailable --
lo loopback unmanaged --
$ nmtui
* IPv4 설정에 아래 내용만 입력하면 됩니다. (IP 와 Subnet 같이 입력, 내부 DNS)
DNS 는 내부 DNS 만 입력해주세요.
- Addresses : 115.68.142.100/27
- Gateway : 115.68.142.97
- DNS servers : 115.68.142.99
셋팅 후 자동으로 네트워크가 구성되는데, 간혹 네트워크 연결이 늦는 경우가 있어
sudo 를 붙여 root 권한으로 데몬을 재시작 해줍니다.
$ sudo systemctl restart NetworkManager
ignition 파일의 해시값을 변수에 저장하고 이를 이용하여 OS 설치를 진행합니다.
OS 설치 명령줄 앞에 sudo 를 붙여 root 권한으로 설치 해야 합니다.
$ hash=`curl http://115.68.142.99:8080/bootstrap.hash`
$ sudo coreos-installer install --copy-network --ignition-url http://115.68.142.99:8080/bootstrap.ign /dev/sda --ignition-hash sha512-${hash}
* bootstrap 오타에 주의하세요!
* 사용한 옵션
- 현재 네트워크 정보 복사 (/etc/NetworkManager/system-connections/ 디렉토리 아래 네트워크 설정 파일)
- 노드 유형의 ignition 파일
- 설치할 HDD 장치명
- 노드 유형의 ignition 파일 sha512 다이제스트 (해시값)
OS 가 설치 되면, 리부팅을 한 번 해줍니다.
정상 부팅이 될 경우 ignition 파일이 적용되면서 로그인 화면 상단에 아래와 같은 메세지가 출력됩니다.
Red Hat Enterprise Linux CoreOS 412.86.202212081411-0 (Optpa) 4.12
Ignition: ran on 2023/01/26 05:32:21 UTC (this boot)
Ignition: user-provided config was applied
SSH host key: SHA256:SOwMQInuqATecciNzA1NcTfAQRJvsn18EbXD9FX0Ycw (ECDSA)
SSH host key: SHA256:XvmtyNr1IWD4P+WNUhd6yIuu2b+7mEBEy+6k1swRIvu (ED25519)
SSH host key: SHA256:5ut4yCLOm0zuEmiBz9bfw75FSS8WjRt3EhyvthuV93A (RSA)
localhost login:
* 로그인 방법
OCP 서버에서 ssh 접근을 하면 패스워드 없이 로그인이 가능합니다.
# ssh core@115.68.142.100
접속후 서버 시간을 한국 표준시로 맞춰줍니다.
$ sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
* root 로그인 허용
core 계정이 아닌 root 계정으로 로그인하고 싶을 경우 아래와 같은 절차를 따릅니다.
# ssh core@115.68.142.100
[core@bootstrap ~]$ sudo su -
[root@bootstrap ~]# passwd // 새 패스워드 두번 입력
[root@bootstrap ~]# vi /etc/ssh/sshd_config // ssh 설정파일에서 아래 3가지 옵션 확인 및 수정
PermitRootLogin yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
[root@bootstrap ~]# systemctl restart sshd // ssh 데몬 재시작
이제 OCP 서버에서 다른 노드로 root 접속이 가능해 졌습니다.
* bootstrap 서버 네트워크 문제
bootstrap 서버의 네트워크가 연결 되지 않거나 연결중 끊어지는 경우 네트워크 상태를 확인해봐야 합니다.
연결 문제가 언제 발생할지 모르므로 단절 반복 주기인 5분 동안 (icmp_seq 300회 정도) 외부망 연결을 지켜 봅니다.
여기에서 테스트 할때는 원인은 찾지 못했지만 5분 단절, 5분 연결이 반복 되었기 때문입니다.
$ ping 8.8.8.8
끊어진다면 bootstrap 서버에서 NetworkManager 데몬을 몇차례 다시 재시작 해보고 5분 정도 추가 모니터링을 합니다.
끊김이 없다면 bootstrap 서버 설치를 완료한 것이므로 Kubernetes API 연결이 잘 되는지 아래 명령으로 확인해봅니다.
(OCP 서버에서)
# ./openshift-install --dir installation_directory wait-for bootstrap-complete --log-level=info
INFO Waiting up to 20m0s (until 9:17AM) for the Kubernetes API at https://api.az1.sysdocu.kr:6443...
INFO API v1.25.4+77bec7a up
INFO Waiting up to 30m0s (until 9:36AM) for bootstrapping to complete...
지금까지의 설정이 올바로 되었다면 파란색 두줄이 출력됩니다. Kubernetes API 연결 확인이 잘 된 것입니다.
(최대 20분까지 대기하지만 이 경우 성공 가능성 낮음)
에러 출력시 --------------------
INFO Waiting up to 20m0s (until 4:03PM) for the Kubernetes API at https://api.az1.sysdocu.kr:6443...
ERROR Attempted to gather ClusterOperator status after wait failure: listing ClusterOperator objects: Get "https://api.az1.sysdocu.kr:6443/apis/config.openshift.io/v1/clusteroperators": EOF
INFO Use the following commands to gather logs from the cluster
INFO openshift-install gather bootstrap --help
ERROR Bootstrap failed to complete: Get "https://api.az1.sysdocu.kr:6443/version": EOF
ERROR Failed waiting for Kubernetes API. This error usually happens when there is a problem on the bootstrap host that prevents creating a temporary control plane.
이 경우 bootstrap 서버에서 도메인 질의가 잘 되는지 확인합니다.
구입해서 사용하는 도메인일 경우 외부 DNS 로 인해 도메인 연결이 안되는 경우가 있습니다.
(bootstrap 서버에서)
$ ping api.az1.sysdocu.kr
만약 연결이 안되는 것이 맞다면 내부 DNS 에 설정한 zone 파일 내용을 외부 DNS 에도 설정해주면 됩니다.
그리고 서버내 네임서버 설정도 확인이 필요합니다. 아래처럼 내부 DNS 만 있으면 됩니다.
$ cat /etc/resolv.conf
search az1.sysdocu.kr
nameserver 115.68.142.99
------------------------------------
이어서 master 노드를 설치합니다.
'인프라 환경 구성 > openshift' 카테고리의 다른 글
openshift 진단 환경 구성(5) - Openshift Installer 설치 (0) | 2025.01.20 |
---|---|
openshift 진단 환경 구성(4) - LB (LoadBalancer) 설정 (0) | 2025.01.20 |
openshift 진단 환경 구성(3) - HTTP 파일 서버 설정 (0) | 2025.01.20 |
openshift 진단 환경 구성(1) - 환경설정 (0) | 2025.01.20 |
openshift 진단 환경 구성(2) - DNS 설치 (0) | 2025.01.20 |