Yesterday I threw away the SmartOS hypervisor from my home lab server. SmartOS is an excellent operating system (based on the Illumos, an open source fork of Solaris) made for running very demanding cloud infrastructures. Zones, ZFS, DTrace, the KVM port are some of the kicking ass features built-in into SmartOS.

If you compare it to Xen or ESX, it’s pretty lightweight with the memory and doesn’t require disk based installation procedure because it usually boots from an USB image. When it comes to updates, if you screw it up you can easily rollback to an old USB image. Actually, I couldn’t find any drawbacks with SmartOS, but I still got rid of it. I’ll tell you why.

The rise of the containers is pushing away the boundaries of virtualization. The entire application stacks can be deployed much faster and with no virtualization overhead at all. “Every single CPU cycle that goes to your hypervisor is money wasted”, a Nasser’s Manesh quote, summarizes pretty much the previous statements. Running containers at bare metal performance is a reality.

CoreOS is a distributed orchestration platform for Docker and Rkt containers. Everything on CoreOS runs in a container. CoreOS is now powering my HP ProLiant DL160 G6 server. If you are curious about the specifications, here is:

  • 2 x Intel Xeon E5645 hex core processors
  • 32 GB DDR3 RAM
  • 2 x 1 TB SATA disks
  • 2 NIC adapters
Horsepower of the lab

CoreOS installation was straightforward. I booted the server from the CoreOS ISO image. Next, I generated a public/private key pair on my laptop:

$ ssh-keygen -t rsa -b 2048

The private key is used to ssh the CoreOS machine. After a small network issue, I was able to copy the public key to the server. One last thing was to create the minimal cloud-config yaml configuration file.

#cloud-config
hostname: rabbitstack
ssh_authorized_keys:
   - public key

I was ready to start the installation on /dev/sda disk device by executing the coreos-install script.

$ sudo su -
$ coreos-install -d /dev/sda -C stable -c cloud-config.yml
Installing CoreOS

It took about 10 minutes to download the latest image and to setup the CoreOS. Really fast! I was eager to test the installation (note the user name is core).

$ ssh -i rabbitstack core@rabbitstack

It works like a charm! Having a CoreOS cluster is more fun, so I am planning to deploy the KVM instance on the laptop. That should be enough to try things out. I am looking forward to try pachyderm, spark or storm in a containerized environment. Learning about etcd, fleet and flannel is going to be an exciting journey. I’ll share about the experience here - on the place where bunnies dwell.

See you soon.

CoreOS is ready to boot