DevOps/etc

놀고있는 노트북으로 homelab을 꾸려보자-2

bandal-gom 2025. 2. 1. 23:15

서버랙 (feat. 다이소)

오늘의 설정 ⚒️

✅ ubuntu-server 설치

✅ 맥북 --> 홈랩 서버 원격 설정

✅ 홈랩서버 클램쉘 모드 설정

✅ k3s cluster 구성


ubuntu-server 설치

노트북 각각 ubuntu-server를 깔고, docker로 설치완료했다.

ubuntu-server를 깔기 위해서는 ISO 이미지를 다운받아 bootable usb를 만들어야 한다!

  1. ubuntu-server ISO를 다운받는다
  2. https://etcher.balena.io/ 를 다운받는다 (ubuntu 오피셜 사이트에서 추천해 준 툴)
  3. 다운받은 ISO 이미지를 선택 -> usb 드라이브 선택 -> usb드라이브에 설치되기까지 대기
  4. 다운이 완료된 usb를 ubuntu-server를 설치하고자 하는 컴퓨터에 연결
  5. 부팅 시 usb로 실행

여튼 설치 완료했으니, 이제 k3s를 설정하면 된다. 2대밖에 없지만, 나름 control-plane, agent-node 구성으로 세팅할 것이다.

  • 삼성 노트북 - control plane
  • hp 노트북 - agent node

삼성 노트북이 디스크 용량이 좀 떨어지지만, hp보다는 cpu성능이 좋아서 control plane으로 설정했다. 둘 다 좋은 성능의 노트북은 아니라서 사실 비교하기도 민망함.. 좀 더 써보고 괜찮다 싶으면 라즈베리 파이를 투입하는 것도 좋을 것 같다!

맥북 -> 홈랩 서버 원격 설정

각 노트북이 오래되기도 하고, 아예 ubuntu-server를 설치했다 보니, 마우스도 없고 폰트 크기설정도 안돼서 (되긴 하지만, 짧게 찾아본 결과 설정이 안 먹었다) 맥북에서 원격 접속해서 이제,, 앞으로는 구린 키감을 느끼며, 잘 안 보여서 눈 찡그리며 타이핑하지 않아도 된다.

맥북에서 원격으로 접속하도록 설정하려면 다음과 같은 항목들이 필요하다.

  • [ubuntu-server] openssh 설치
  • [ubuntu-server] ssh 서비스 활성화, 시작
  • [ubuntu-server] ip 확인
  • [ubuntu-server] ssh password 접근 활성화
  • [mac] ssh 접속

거의 Ubuntu-server 쪽에서의 설정만 되면 끝이라고 보면 된다!

oepnssh는 아마, ubuntu-server를 설치하면서 같이 설치가 되었을 거라, ssh 서비스가 활성화되어있는지 확인이 필요하다

 

ssh 서비스 활성화, 시작

sudo systemctl status ssh // ssh 서비스 상태 확인 
sudo systemctl start ssh // ssh 서비스 시작 
sudo systemctl enable ssh // 자동시작 설정

시작 후에 status 명령어를 통해 활성상태를 확인한다. 이렇게 나오면 정상적으로 동작하고 있는 것 `Active: active (running)`

 

ip 확인

ip addr

현재 LAN내 ip주소 확인. 나는 ubuntu-server들을 와이파이에 연결해 뒀으므로 wlan나 wlp로 시작하는 무선랜 인터페이스에서 inet (ipv4) 항목을 참고했다.

 

ssh password 접근 활성화

sudo vim /etc/ssh/sshd_config // 선호하는 text editor 사용하기~

PasswordAuthentication 옵션이 yes로 설정되어 있는지 확인. 주석처리 되어있거나 no로 되어있다면 주석해제 or yes로 변경

 

ssh 접속

ssh [ubuntu-server 사용자 이름]@[서버IP주소]

이렇게 해서 접근설정! 여기에서 접근이 안된다면, 방화벽 설정 때문에 접근이 안될 수 있으니, ubuntu-server에서 ssh를 허용하도록 설정해야 한다!

근데, 이렇게 매번 비번 입력하고 들어가기 귀찮으니까...! 스크립트를 추가했다. 나는 서버 두대만 있어서, 이렇게 간단하게 구성했지만, 더 복잡한 구성이 필요하다면..... 그때 수정하는 것으로!

로컬 머신이라 sshpass를 사용해서 비번을 바로 입력하게 하였지만, 회사 컴퓨터, 공용 컴퓨터에서는 보안을 위해서 하지 않는 것을 권장한다.

#!/bin/bash

# 서버 정보 설정 
CONTROL1="IP주소"
AGENT1="IP주소"
USERNAME= # 서버에 접속할 사용자 이름
PASSWORD= # SSH 접속에 사용할 비밀번호

echo "접속할 서버를 선택하세요:"
echo "1) 서버 1 ($SERVER1)"
echo "2) 서버 2 ($SERVER2)"
echo -n "선택 (1 또는 2): "
read choice

if [ "$choice" = "1" ]; then
    echo "컨트롤-1 ($CONTROL1)에 접속합니다..."
    sshpass -p "$PASSWORD" ssh "$USERNAME@$CONTROL1"
elif [ "$choice" = "2" ]; then
    echo "에이전트-1 ($AGENT1)에 접속합니다..."
    sshpass -p "$PASSWORD" ssh "$USERNAME@$AGENT1"
else
    echo "잘못된 선택입니다. 스크립트를 종료합니다."
fi

홈랩서버 클램쉘 모드 설정

이렇게 원격으로 접속을 하고 나서, 앞으로 이 구린 노트북에서 직접 명령어를 입력할 일은 없을 것! 하고 닫았는데, 연결이 바로 끊겼다.

서버처럼 동작하게 하려면, 클램쉘 모드?처럼 동작하도록 설정을 해줘야 한다.

sudo vim /etc/systemd/logind.conf

파일 내에서 이 항목들을 주석처리 해제 하거나, 수정!

  • HandleLidSwitch=ignore
  • HandleLidSwitchDocked=ignore
sudo systemctl restart systemd-logind // 변경사항 적용

변경사항 적용엔 시간이 좀 소요될 수도 있다. 이렇게 하면! 이제 노트북 뚜껑을 닫아도 원격으로 쭈욱 접속할 수 있게 된다!

k3s 설치

k3s 문서에서 quick start 가이드에 나온 설치는 single-node 기준이라, 내가 원하는 master-agent 구성으로 설정하려면 아래와 같이 설정해야 한다.

control plane node에서 실행

curl -sfL https://get.k3s.io | sh -s - server --cluster-init

node-token 저장

sudo cat /var/lib/rancher/k3s/server/node-token

agent node에서 실행

curl -sfL https://get.k3s.io | K3S_URL=https://[control-plane IP주소]:6443 K3S_TOKEN=[node-token] sh -

이렇게 구성하면!

이렇게 아름다운 로그를 확인할 수 있다 🎉


간단하게 control plane-agent node로 잘 돌아가는지 테스트도 완료했다.

이다음은, 홈 CI/CD 구성해보기 도전해 볼 예정. 하면서 다른 것도 돌아갈만하면 (?) 해볼 예정.

반응형