Rancher 설치

개요

AWS에 테스트로 랜처 설치를 진행하려고 한다.

먼저 AWS에 EC2에서 인스턴스 3개를 생성한다. 하나는 마스터용 나머지는 워커용이다.

랜처 가이드에서 최소사양이라고 얘기하는 사양으로는 진행이 힘들다. 최소 4 vcpu, memory 16Gb, storage 30Gb 로 설정한다. OS이미지는 Suse 리눅스 엔터프라이즈 15 버전으로 한다. (참고로 레드헷 최신버전으로 진행했을때 안되는 것들이 좀 있었다. 하고자 하면 할수도 있지만, 별도로 검색해서 찾아보고 설치하시길 권한다.)

스토리지도 10Gb로 설정하고 진행한 적이 있는데 용량이 부족해서 오류가 났던 적이 있다. 혹시 용량을 낮게 설정했다면 볼륨수정을 통해서 용량을 증설한다. 30Gb로 했을 때, 문제는 없었다.

df -h
lsblk
growpart /dev/xvda 3 # 증가시킬 것을 선택한도 위에서 lsblk를 한것 기준으로 해당 명령어는 변경될수 있다.
xfs_growfs -d /

위 명령어를 참고하길 바란다.

설정이 모두 끝나면 아래와 같이 인스턴스가 생성된다.

마스터 설정

RKE2 서버 서비스 설치

먼저 마스터 노드에 접속한다.

root계정으로 이동해서 아래 명령어를 실행한다.

swapoff -a
mkdir -p /etc/rancher/rke2/
curl -sfL https://get.rke2.io | sh -

간단히 설명하면 메모리 스왑을 끄고, 설치하는 명령어다.

설치가 완료되었다.

레드헷일 경우 아래 명령어를 별도로 수행한다.

systemctl disable nm-cloud-setup.service nm-cloud-setup.timer
reboot

RKE2서비스를 실행한다.

systemctl enable rke2-server.service
systemctl start rke2-server.service
systemctl status rke2-server.service

성공이다.

mkdir ~/.kube/
cp /etc/rancher/rke2/rke2.yaml ~/.kube/config
export PATH=$PATH:/var/lib/rancher/rke2/bin/
echo 'export PATH=/usr/local/bin:/var/lib/rancher/rke2/bin:$PATH' >> ~/.bashrc
kubectl get nodes

k로 실행할 수 있도록 별칭을 설정해 준다.

echo 'alias k=kubectl' >> ~/.bashrc
source ~/.bashrc

Rancher 설치

Helm 설치

랜처 설치에 앞서 헬름 설치가 필요하다.

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

Jetstack 헬름 레파지토리를 추가한다.

helm repo add jetstack https://charts.jetstack.io

Cert-manager 설치

지원하는 버전을 설치해야 한다. 1.13버전이 지원하는 마지막 버전이다. (2024/1/24일 현재)

helm install cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --version v1.13.1 \
  --set installCRDs=true \
  --create-namespace

제대로 설치되었는지 확인한다.

k -n cert-manager rollout status deploy/cert-manager
k -n cert-manager rollout status deploy/cert-manager-webhook

Rancher 설치

랜처를 설치한다. 안정버전과 최신 버전이 있는데 여기선 최신버전으로 설치하는 것으로 한다.

helm repo add rancher-latest https://releases.rancher.com/server-charts/latest

서버 환경에 맞게 아래 명령어를 수정해서 실행한다.

helm install rancher rancher-latest/rancher \
  --namespace cattle-system \
  --set hostname=rancher.birdspring.com \
  --set replicas=1 \
  --version 2.8.1 \
  --set bootstrapPassword=rancherjjang \
  --create-namespace

만약 도메인이 없는 상태라면 /etc/hosts에 아래와 같이 추가한다.

127.0.0.1     rancher.birdspring.com

아래 명령어로 랜처가 준비되는지 확인하면서 기다린다.

while true; do curl -kv https://rancher.birdspring.com 2>&1 | grep -q "dynamiclistener-ca"; if [ $? != 0 ] ; then echo "Rancher isn't ready yet"; sleep 5; continue; fi; break; done; echo "Rancher is Ready";

위 스크립트를 실행하면 5초마다 “Rancher isn’t ready yet”이라고 출력되다가 화면이 호출되면 “Rancher is Ready”라고 출력된다. 준비가 되었다고 출력되면 위 URL을 입력하여 첫 화면을 브라우저에 띄운다.

준비 상태가 되면 아래 명령어를 실행해서 토큰을 기록해 놓는다.

cat /var/lib/rancher/rke2/server/node-token

워커 설정

워커 1번에 접속한다. 워커는 설정이 모두 동일하니 워커 1번 설정으로 모든 워커설정을 갈음한다.

swapoff -a
curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="agent" sh -

마스터에 붙기 위한 설정을 한다.

systemctl enable rke2-agent.service
mkdir -p /etc/rancher/rke2/
vi /etc/rancher/rke2/config.yaml

vi로 열린 config.yaml에 아래 내용을 추가한다.(cat /var/lib/rancher/rke2/server/node-token를 실행해서 얻은 토큰을 아래 token: 다음에 설정한다.)

server: https://<마스터서버의내부아이피>:9345
token: <마스터서버에서 얻은 토큰>

저장하고 나와서, 에이전트 서비스를 실행한다.

systemctl start rke2-agent.service
systemctl status rke2-agent.service

마무리

여기까지 하면 랜처 설치가 완료된 것으로 볼 수 있다. 위에서 설정했던 호스트 네임으로 접속하면 아래와 같은 화면으로 접근이 된다.

… 최초 접근 화면의 스샷을 못찍었다. 대충 말로 설명하면 위에서 헬름으로 랜처를 설치할떄 설정했던 비밀번호를 입력하는 화면이 나온다. 내가 설정했던 “rancherjjang”을 입력하고 다음으로 넘어가면 아래와 같은 화면이 출력된다.

잘 설치가 된 것으로 보인다.

실제로 회사서버에 설치할때 아래와 같은 오류가 발생했었다.

… memcache.go:265] couldn't get current server API group list: Get "https://127.0.0.1:6443/api?timeout=32s": tls: failed to verify certificate: x509: certificate signed by unknown authority…

시간에 문제가 있어서 발생했던 오류로 인증서 만료시간이 관계된것으로 보였다. 서버마다 date 명령어를 수행해 보았더니 시간의 차이가 많이 났다. 그래서 아래 명령어로 ntp데몬을 설치하고 ntpdate명렁어를 사용해서 시간을 동기화 한후 진행했더니 오류가 사라졌다.

zypper install ntp
ntpdate -b -s time.bora.net

참고 하길 바란다.