클라우드 엔지니어 꿈나무
Redhat Openshift UPI 설치 본문
IPI 와는 다르게 master node 및 worker node를 만들어 수동으로 연결
구성도
File Server, Load Balance : CentOS8
DNS : Windows Server 2019
Bootstrap : RHCOS 4.13.0
* bootstrap : 머신이 작동될 떄 명령을 시작하는 것
Master Node 1,2,3 : RHCOS 4.13.0
Worker Node 1,2,3 : RHCOS 4.13.0
Windoes Server 2019 - DNS
DNS 설정
정방향 조회 영역
연결된 PTR 레코드 업데이트 체크하여 역방향 조회 영역 같이 추가
역방향 조회 영역
CentOS8 - HAProxy, FileServer
# nmtui
DNS Server = DNS Server 로 구성해놓은 Windows Server IP
# yum install -y bind-utils => nslookup 사용을 위하여 설치
#nslookup
# getenforce
Selinux가 enforcing 인 상태로 진행 예정이므로 Selinux 관리 툴인 semanage 를 사용하게 진행
# yum install -y policycoreutils-python-utils => semanage 사용을 위하여 설치
HAProxy에서 사용할 6443 Port와 22623 Port 확장
6443 Port : 쿠버네티스 API 서버 포트
22623 : Openshift ignition 설정 포트
하기 semanage 작업을 하지 않으면 haproxy.cfg 수정 후 haproxy가 실행되지 못한다.
# semanage port -a -t http_port_t -p tcp 6443
# semanage port -a -t http_port_t -p tcp 22623
<<참고>>
semanage 를 설정하지 않고 진행을 하고자 한다면 setsebool 로 haproxy
# yum install -y policycoreutils => setsebool 사용을 위하여 설치
# setsebool -P haproxy_connect_any=1 => -p : 영구적으로 설정
HAProxy 설치
# vi /etc/haproxy/haproxy.cfg
HAProxy 설정
#---------------------------------------------------------------------
# Example configuration for a possible web application. See the
# full configuration options online.
#
# https://www.haproxy.org/download/1.8/doc/configuration.txt
#
#---------------------------------------------------------------------
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
# to have these messages end up in /var/log/haproxy.log you will
# need to:
#
# 1) configure syslog to accept network log events. This is done
# by adding the '-r' option to the SYSLOGD_OPTIONS in
# /etc/sysconfig/syslog
#
# 2) configure local2 events to go to the /var/log/haproxy.log
# file. A line like the following can be added to
# /etc/sysconfig/syslog
#
# local2.* /var/log/haproxy.log
#
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
# utilize system-wide crypto-policies
ssl-default-bind-ciphers PROFILE=SYSTEM
ssl-default-server-ciphers PROFILE=SYSTEM
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode tcp
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
balance roundrobin
server static 127.0.0.1:4331 check
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
frontend kubernetes_api
bind 0.0.0.0:6443
default_backend kubernetes_api
option tcplog
backend kubernetes_api
balance roundrobin
server bootstrap bootstrap.kang.kang.local:6443 check
server master1 master1.kang.kang.local:6443 check
server master2 master2.kang.kang.local:6443 check
server master3 master3.kang.kang.local:6443 check
server worker1 worker1.kang.kang.local:6443 check
server worker2 worker2.kang.kang.local:6443 check
frontend ignition_config
bind 0.0.0.0:22623
default_backend ignition_config
option tcplog
backend ignition_config
balance roundrobin
server bootstrap bootstrap.kang.kang.local:22623 check
server master1 master1.kang.kang.local:22623 check
server master2 master2.kang.kang.local:22623 check
server master3 master3.kang.kang.local:22623 check
server worker1 worker1.kang.kang.local:22623 check
server worker2 worker2.kang.kang.local:22623 check
frontend https_router
bind 0.0.0.0:443
default_backend https_router
backend https_router
balance roundrobin
server master1 master1.kang.kang.local:443 check
server master2 master2.kang.kang.local:443 check
server master3 master3.kang.kang.local:443 check
server worker1 worker1.kang.kang.local:443 check
server worker2 worker2.kang.kang.local:443 check
frontend http_router
bind 0.0.0.0:80
default_backend http_router
backend http_router
balance roundrobin
server master1 master1.kang.kang.local:80 check
server master2 master2.kang.kang.local:80 check
server master3 master3.kang.kang.local:80 check
server worker1 worker1.kang.kang.local:80 check
server worker2 worker2.kang.kang.local:80 check
<<참고>>
Roundrip : 순차적으로 분배(최대 연결 가능 서버 4128개)
방화벽 설정
# firewall-cmd --add-port=6443/tcp --permanent # firewall-cmd --add-port=22623/tcp --permanent
# firewall-cmd --add-pot=8080/tcp --permanent
# firewall-cmd --add-pot=80/tcp --permanent
# firewall-cmd --reload
파일 서버 설치
# yum install -y httpd => File Server 로 Apache 사용하기 위하여 설치
# vi /etc/httpd/conf/httpd.conf
80번 Port는 로드밸런서에서 사용하므로 8080 Port로 수정
# systemctl enable --now httpd
# mkdir -p /var/www/html/ign/hi
실제 PC 인터넷창
hi 폴더까지 잘 생성된 것을 확인할 수 있다.
CentOS8 - HAProxy, FileServer
설치 파일 구성
=> OpenShift Container Platform의 설치 도구 다운로드 (OpenShift를 클러스터로 설치할 때 사용하는 명령행 도구가 포함, 이 도구로 OpenShift 클러스터를 배포하고 구성 가능)
# wget https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable/openshift-client-linux.tar.gz
=> OpenShift Container Platform의 클라이언트 도구 다운로드 ( OpenShift 클러스터와 상호 작용하기 위한 명령행 도구가 포함, 클러스터와 통신하여 애플리케이션을 관리하거나 다양한 작업을 수행)
# tar xvfz openshift-install-linux.tar.gz
# tar xvfz openshift-client-linux.tar.gz
# cp ./kubectl /usr/local/bin/kubectl
# cp ./oc /usr/local/bin/oc
pullsecret key 하기 경로에서 복사
https://console.redhat.com/openshift/install/metal/multi
ssh-key 생성
# ssh-keygen
# ls .ssh/
# mkdir oc_installation
# cd oc_installation
# vi installation-config.yaml
apiVersion: v1
baseDomain: kang.local
compute:
- hyperthreading: Enabled
name: worker
replicas: 3
controlPlane:
hyperthreading: Enabled
name: master
replicas: 3
metadata:
name: kang
networking:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
networkType: OpenShiftSDN
serviceNetwork:
- 172.30.0.0/16
platform:
none: {}
fips: false
pullSecret: '{"auths":...}'
sshKey: 'ssh...'
baseDomain : 설정한 Domain 값 입력
compute : worker node
replicas : 생성할 worker node 수 기재 (추후 worker node 수를 달리 설치해도 상관 없음)
controlPlane : master node
replicas : 생성할 worker node 수 기재
metadata :
name : 클러스터명
pullSecret: 위에서 복사한 PullSecret 입력
sshKey: ssh-keygen 으로 받은 값 중 id_rsa.pub 키 사용
yaml 파일 실행 후, 기존 yaml 파일이 없어지니 복사
# cp install-config.yaml install-config.yaml.bak
# ../openshift-install create manifests
manifests 디렉토리와 openshift 디렉토리가 생긴 것을 확인할 수 있다.
# vi manifests/cluster-scheduler-02-config.yml
master node와 worker node 분리하여 설치할 것이기 때문에 false 로 기재
apiVersion: config.openshift.io/v1
kind: Scheduler
metadata:
creationTimestamp: null
name: cluster
spec:
mastersSchedulable: false
policy:
name: ""
status: {}
# ../openshift-install create ignition-configs
# cp *.ign /var/www/html/ign/ => 파일 서버로 ignition 파일들 복사
# chmod 777 /var/www/html/ign/*.ign
File Server & HAProxy Server, DNS Server, Bootstrap, Master1,2,3 시간 통일 필수
# ln -sf /usr/share/zoneinfo/UTC /etc/localtime
Bootstrap
$ nmtui
$ hostname
$ sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime
$ sudo coreos-installer install --copy-network --ginition-url=http://192.168.1.100:8080/bootstrap.ign --insecure-ignition /dev/sda
$ reboot
Master 1,2,3
$ nmtui
$ hostname
$ sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime
$ sudo coreos-installer install --copy-network --ginition-url=http://192.168.1.100:8080/bootstrap.ign --insecure-ignition /dev/sda
$ reboot
CentOS8 - HAProxy, FileServer
# export KUBECONFIG=/root/installation_directory/auth/kubeconfig
# oc get nodes
Node들이 다 Ready 가 된 것을 확인 후,
# ./openshift-install wait-for bootsterap-complete --log-level=info --dir=oc_installation/
인증서 확인하여 pending 인 항목들 approve로 수정
# oc get csr
# oc adm certificate approve csr-q8fv6
# oc adm certificate approve csr-qftfl
# oc adm certificate approve csr-t59mn
....
# oc get csr
<<참고>>
approve 일일이 타이핑하기 번거롭다면 하기와 같은 방식으로 진행해도 무방
# cd /usr/local/bin/
# vi csr.sh
for csr_name in $(oc get csr | grep -o '^csr-[a-zA-Z0-9]*'); do
oc adm certificate approve "$csr_name"
done
# sh csr.sh
Worker 1,2,3
$ nmtui
$ hostname
$ sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime #ignition
$ sudo coreos-installer install --copy-network --ignition-url=http://172.16.10.210/worker.ign --insecure-ignition /dev/sda $ reboot
CentOS8 - HAProxy, FileServer
임시 컨트롤플레인에서 진짜 컨트롤플레인을 마스터 머신에 등록
# ./openshift-install wait-for install-complete --dir=/root/oc_installation --log-level=debug
하기 나오는 주소로 실제 PC 네트워크 설정 변경 후, 실제 PC 인터넷 창에서 입력
실제 PC 네트워크
실제 PC 인터넷창
안전하지 않음 으로 이동 후, 위에서 출력된 ID와 비밀번호를 기입
끝
'Vsphere Exsi' 카테고리의 다른 글
venter 사용자 권한 관리 (0) | 2023.11.06 |
---|---|
Vsphere Live-Migration (0) | 2023.10.24 |
Vsphere 가상화 : ESXi + VCenter 설치 (0) | 2023.10.23 |