우분투의 최신버전을 받으려고  사이트에 방문을 했는데

기본 옵션이 multipass로 되어있는 것을 확인하였다. 따라가서 링크를 클릭해보면

cloude-init와 같이 public 클라우드마냥 우분투 VM을 single command로 얻을 수 있다고.

윈도우에서 설치가 가능하긴 한데, 로컬 환경에 virtual box가 설치되는 것을 안좋아해서 ubuntu 인스턴스 위에서 돌려본다.

# 설치는 그냥 한줄
sudo snap install multipass

# 인스턴스 생성은은 1분정도 기다리면 된다.
gold@gold:~$ multipass launch --name foo
Retrieving image: 39%

# 오...
gold@gold:~$ multipass list
Name                    State             IPv4             Image
foo                     Running           10.196.118.37    Ubuntu 20.04 LTS

# 인스턴스에 접속도 쉽고
gold@gold:~$ multipass exec foo bash
ubuntu@foo:~$
ubuntu@foo:~$ whoami
ubuntu

# 인스턴스는 가상의 네트워크를 사용.
ubuntu@foo:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:d3:44:d2 brd ff:ff:ff:ff:ff:ff
    inet 10.196.118.37/24 brd 10.196.118.255 scope global ens3
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fed3:44d2/64 scope link
       valid_lft forever preferred_lft forever

코드형 인프라를 위해 cloud-init 도 지원하고있다.

multipass launch -n bar --cloud-init cloud-config.yaml

이미지 중 스냅크래프트 또한 지원하고 있다

snap 을 이용한 배포구성은 한번 연구를 해볼 필요가 있을 것 같다.

Image                       Aliases           Version          Description
snapcraft:core18            18.04             20201111         Snapcraft builder for Core 18
snapcraft:core20            20.04             20210921         Snapcraft builder for Core 20

multipass help 명령어로 다양한 방법을 지원하는데 궁금한것은 포트포워딩 기능과, 사양 할당 , 네트워크 구성 등이다.

1. 사양 변경

# 설정을 안해주면 core는 1, 메모리도 1gb 인것같다.
	-c, --cpus <cpus>    Number of CPUs to allocate.
                       Minimum: 1, default: 1.
  -d, --disk <disk>    Disk space to allocate. Positive integers, in bytes, or
                       with K, M, G suffix.
                       Minimum: 512M, default: 5G.
  -m, --mem <mem>      Amount of memory to allocate. Positive integers, in
                       bytes, or with K, M, G suffix.
                       Minimum: 128M, default: 1G.
  -n, --name <name>    Name for the instance. If it is 'primary' (the
                       configured primary instance name), the user's home

# 들어가서 확인해보니 그렇다. 실제 테스트배드로 설계한다면 이 부분을 주의해주어야 할듯.
ubuntu@foo:~$ cat /proc/cpuinfo | grep processor
processor       : 0
ubuntu@foo:~$
ubuntu@foo:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:            976         134         423           0         419         694

# 구글링해보니 k8s 관련 vm을 만들때 아래와같이 응용이 가능한것으로 보인다.
multipass launch --name master-k8s --cpus 2 --mem 2048M --disk 5G
multipass launch --name worker-1-k8s --cpus 2 --mem 2048M --disk 5G
multipass launch --name worker-1-k8s --cpus 2 --mem 2048M --disk 5G

https://medium.com/platformer-blog/kubernetes-multi-node-cluster-with-multipass-on-ubuntu-18-04-desktop-f80b92b1c6a7

2. 포트포워딩

multipass help launch 와 network를 찾아봐도 포트포워딩에 대한 정보는 없는것같다.

docker 처럼 무언가 클러스터로 연결하여 진입점을 정의하는게 아니라 베어메탈 서버를 서비스화 하는데에 중점을 준듯.

굳이 한다면 방화벽의 포트포워딩 기능을 쓰면 되는것같고, 그 외에도 다양한 포워딩 프로그램이 있으나 multipass의 취지에 맞지 않는 듯 하다.

3. 호스트브릿지 사용

이 방법을 쓰면 굳이 포트포워딩을 하지 않아도 호스트 네트워크에서 누구든지 붙을수 있다.

결론

redhat기반 os를 주로 사용하기에 메인으로 사용하기에는 어려울 것 같다.

그러나 ubuntu를 사용하여 다중 클러스터 테스트를 할때 매우 용이 할것으로 보임.

나머지 사용법은, 공식링크에서 확인

https://multipass.run/docs