논문 주제로 쿠버네티스를 선정했기 때문에 실험을 진행할 쿠버네티스 클러스터가 필요했습니다. 제게는 물리 머신 한대만 주어져 있었으므로, 이것을 이용해서 쿠버네티스 클러스터를 구성했습니다.
KVM이란 리눅스 기반에서 CPU 기반의 전가상화, 즉 하드웨어 전체를 가상화 하는 것을 지원하는 하이퍼바이저를 말합니다.
sudo apt install -y qemu-kvm libvirt-bin bridge-utils ubuntu-vm-builder virt-manager
sudo virt-manager & # 백그라운드에서 실행
네트워크는 따로 안건들여 줘도 알아서 묶입니다.
이후 환경은 root 환경에서 실행했습니다. (sudo su)
마스터 노드 1대, 워커 노드 2대 생성을 목표로 하였으며, 할당한 컴퓨팅 자원은 다음과 같습니다.
클라이언트에서 서버로 ssh 접속 할 수 있도록 프로그램을 설치해 주는 과정입니다.
ssh 기본 포트인 22번으로 통신을 할 것이므로, 설치 후 별다른 설정은 해 주지 않았습니다.
sudo apt install openssh-server
netstat -an | grep 22 # 잘 켜졌는지 확인
환경설정의 편의를 위해 모든 작업을 root 권한으로 진행했으므로, ssh로 root 접속이 되도록 해야 했습니다.
sudo su
passwd # 패스워드 설정
vim /etc/ssh/sshd_config -> PermitRootLogin yes
service sshd restart
호스트에서 가상 머신들로 public key 를 보내고, ssh 접근이 alias로 되도록 설정해 주었습니다.
ssh-keygen # host 에서
ssh-copy-id root@[IP주소]
ssh-copy-id root@[IP주소]
ssh-copy-id root@[IP주소]
vim ~/.ssh/config
Host master
HostName [IP주소]
User root
IdentityFile /home/msyhu/.ssh/id_rsa
Host worker1
HostName [IP주소]
User root
IdentityFile /home/msyhu/.ssh/id_rsa
Host worker2
HostName [IP주소]
User root
IdentityFile /home/msyhu/.ssh/id_rsa
tmux란 Terminal MUltipleXer 의 약자로, 쉘을 여러개 사용할 때 쉘들에게 동시에 명령을 한다거나, 쉘을 나갔다가 들어갔을 때 이전 상태가 저장되어 있기를 원할 때 사용합니다.
클러스터를 구성하면서 같은 명령어를 여러 개의 노드에게 입력할 일이 많았는데, 그때 유용하게 사용했습니다.
sudo apt install tmux # tmux 설치
tmux new -s cluster # tmux 세션 'cluster' 생성
ctrl + b + % # 세로 나눔
ctrl + b + " # 가로 나눔
<Ctrl-B>, :
setw synchronize-panes on # 동시 명령어 입력
시스템이 랩탑 → 호스트 머신 → 가상머신 으로 구성되어 있으므로, 가상머신인 쿠버네티스 클러스터들을 랩탑에서 손쉽게 다루기 위해서는 랩탑에서 가상머신들로 바로 접근해야 했습니다. 그러기 위해서 호스트 머신에서 3대의 가상머신으로 포트포워딩을 해 주었습니다.
우분투에서 포트포워딩을 하기 위해서 iptable을 사용합니다. 우리의 목표는, 랩탑에서
ssh [호스트IP] -p [포트번호]
를 이용해 호스트 머신 안에 있는 특정 IP로 접속하는 것입니다.
iptable 이란?
리눅스상에서 방화벽을 설정하는 도구입니다. 패킷필터링 기능을 사용자 공간에서 제어하는 수준으로 사용할 수 있는데, 패킷필터링이란 지나가는 패킷의 해더를 보고 제어하는 것입니다.
sudo iptables -I INPUT -p tcp -s 0.0.0.0/0 -d [호스트IP] --dport [호스트에서 포트포워딩 하고싶은 포트] -j ACCEPT
sudo iptables -I FORWARD -m tcp -p tcp -d [가상머신IP] --dport 22 -j ACCEPT
sudo iptables -t nat -I PREROUTING -p tcp -d [호스트IP] --dport [호스트에서 포트포워딩 하고싶은 포트] -j DNAT --to-destination [가상머신IP]:22
위에서 사용한 iptables 기본 용어는 다음과 같은 것들이 있습니다.
이렇게 하여 랩탑에서 쿠버네티스 클러스터를 다룰 준비는 되었습니다.
다음 포스팅에서는 쿠버네티스 클러스터를 구축해 보도록 하겠습니다.