Metal as a Service (Maas) Tip
maas를 사용하면서 알게된 팁을 공유한다.
dhcp 서버
이것도 maas를 설치시 기본으로 설치가 되서 기존에 따로 관리하던 dhcp서버를 없앴수 있엇다.
설치만 되고 기본적으로 바로 실행되지 않기 때문에 dhcp설정을 해주면 자동으로 실행됨을 알수 있다.
여기서 설정해주면 된다.
dns 서버 (bind)
dns 서버도 설치시 기본으로 설치가 된다. 따로 관리하던 dns서버를 없앨수 있다.
여기에 설정된 내용을 확인할수가 있다. 다만 사용하는 subnet이외에서 이 dns를 사용하려면 다음처럼 세팅을 해야한다.
setting » dns에서 위 그림처럼 세팅을 하면된다. 이부분은 사실 maas를 처음 설치시 값을 넣어줄수가 있게 되있다.
0.0.0.0/0 이부분은 모든 아이피 대역을 다 사용할수 잇게 오픈한다는 뜻이다. 사용하는 용도에 따라 192.168.0.0/24 등으로 사용해도 된다.
node01.maas등으로 접속을 할수 있다.
.maas는 dns세팅에 따라 다르다.
새 노드를 추가할때 일어나는 일
개인적으로 이렇게 추측을 해보고 있다.
- 맨처음 새장비를 추가를 하면서 hard disk에 os가 없기 때문에 pxe 부팅을 한다. 필요한 이미지를 새 노드가 받아서 스크립트등을 실행해서 필요한 내용을 다 데이터(mac, etc )로 만든후 maas에 등록을 한다.
- maas는 이 맥어드레스로 들어온 것은 new 상태로 되있는것을 알고 있다.
- commissioning 을 하면 다시 노드가 재부팅 된다 이때도 하드에 os가 없기 때문에 pxe로 부팅해서 commission을 하면서 필요한 스크립트들이 들어있는 기존과는 다른 pxe 부팅이미지를 준다. 이게 중요. 다른 작업을 하고 나서 maas에 정보를 보내서 maas는 Ready상태로 바꿔주는거 같다. 중요한건 maas가 new 상태인것을 알고 있으므로 pxe 이미지를 commission용으로 보내줄수 있다는 것이다.
- maas에서 노드가 ready 상태로 바뀌었다.
- os를 deploy를 하면 다시 재부팅이 되는데 이때는 pxe로 부팅이 되고 os 설치 이미지가 pxe로 내려가는것 같다.
- os를 설치하고 나면 다시 재부팅을 하는데 이때는 harddisk로 부팅이 되어야한다. (그럴줄 알앗는데 pxe로 부팅이 되도 maas에서 os설치 pxe를 하지 않는거같다. maas가 deploy가 끝난걸 알기 때문에 pxe를 요청을 하면 아무 부팅이미지를 안주는것 같다. 그래서 harddisk로 부팅이 가능하게된다. )
kvm을 사용하여 vm을 설치를 하면 항상 pxe부팅이 먼저 되게 되있다. 그래도 deploy도 잘되고 그렇더라. 그러므로 bearmetal도 전부 pxe를 Hard disk보다 먼저 부팅순서에 놓고 쓰면 편한듯 하다.
장비에 따라서 pxe로 해두면 마지막 디플로이가 계속 실패하는경우가 잇었다 그럴때는 장비앞에서 마지막 부팅될때 harddisk로 부팅이 되게 강제로 했다.
추천
bearmetal위에 kvm을 사용하여 vm을 사용하시는게 아무래도 관리가 편하더라구요.
os deploy시 외부 인터넷 필요
어제 발견된것인데 os설치시 외부 인터넷이 안되면 설치가 실패되던데 add node나 commission도 마찬가지일것으로 추측
kvm으로 ubuntu를 사용시 재부팅하면 /etc/hosts파일 기본값으로 항상 초기화
요즘 리눅스에서 vm사용시 cloud-init이라는 것이 기본으로 실행이 되게 되있다고 한다. 이 cloud-init이라는 프로그램이 vm에 초기 상태에 대해서 관리하는듯 하다
cloud-init에 대한 내용은 다시 정리하는것으로 하고 항상 /etc/hosts가 초기화가 되버리면 안되서 maas에서 설치시 특정 설정을 주면 이부분을 해결할수 있다.
deploy시 user-data를 사용하자.
cloud-init user-data를 사용하면 된다.
참고로 #cloud-config
는 꼭 적어줘야한다.
#cloud-config
timezone: America/Los_Angeles
packages:
- htop
- tree
- net-tools
package_update: true
package_upgrade: true
manage_etc_hosts: false
power_state:
delay: "+30"
mode: poweroff
message: Bye Bye
timeout: 30
condition: True
manage_etc_hosts : 이분이 host파일을 내가 관리하겟다는것이고 package_update : apt update package_upgrade : apt upgrade timezone과 패키지등도 초반에 설정할수 있다.
power_state : 다 끝나면 재부팅을 하게 해두었다.
원하는 모든 기능을 실행할수 있으므로 자세한 내용도 봐두면 좋을듯 싶다.
memory overcommit
vm사용시 보통은 memory overcommit 을 사용할수가 있다. vm들이 할당된 메모리를 다 안쓴다는 가정에 따라서 그렇다
그런데 나는 kubernetes를 사용하는데 쿠버네티스가 가용한 모든 메모리를 사용한다고 한다. 그래서 memory overcommit을 하고 vm을 많이 만들어버리면 물리 장비가 멈추어 버리는경우가 생긴다.
그러므로 kubernetes사용자들은 가능하면 memory overcommit은 사용하지 않는게 어떨가 한다.
vm 20대 설치
vm을 20대를 설치를 해봣다. 10분 정도에 다 설치할수 가 있다.