MAAS with Intel RSD

Deploying Kubernetes Core with MAAS and Intel Rack Scale Design

Introduction

I have had the fortunate opportunity to work on Intel Rack Scale Design (RSD) compatability for MAAS.

The reason this was a cool project to work on was that several new features and improvements were added to MAAS to accommodate RSD. One example is support for composable hardware. MAAS can now manually or dynamically compose (create) new machines from an available pool of resources on the RSD. This allows administrators to request machines with specific resources on demand and be able to deploy their workloads on them. Another example is the new concept of a Pod. In MAAS, Pods are an abstraction to describe the availability of resources that allows MAAS to create or compose a machine with a set of those resources.

In greater detail, MAAS support for Intel RSD includes the following features:

  • Ability to discover all available resources
  • Ability to discover all pre-composed (pre-existing) resources or machines
  • Ability to compose machines (manually) via the API or the web UI
  • Ability to compose machines (manually and dynamically) with remote attached storage (iSCSI)
  • Ability to (dynamically) compose machines

Setting up MAAS with RSD

You will need an RSD hardware setup as well as an installed MAAS server that can communicate with the RSD. For help on setting up and installing MAAS please see the documentation for MAAS installation. Once your MAAS is installed you will need to add an RSD Pod. After completing these steps, when you go to the Pod details page it should display all of its available resources similar to something like this:

Alt text

For this tutorial the RSD Pod will need to have at least three composable machines for deploying Kubernetes Core. When setting up your RSD Pod, if there are any pre-composed machines that are found during the discovery process of the RSD Pod creation and there are still enough resources to dynamically compose three additional machines, please allocate these pre-composed machines after they finish commissioning so they will not be used during this tutorial. By setting these machines to Allocated, when Juju requests machines, it won’t use these machines and instead MAAS will dynamically create them in the RSD, which is one of the new features that I want to demonstrate here. It should be noted, for this blog post I am using Ubuntu 16.04LTS for the MAAS server machine and for the client machine.

Deploying Kubernetes Core using MAAS and RSD

In this blog post I am going to walk you through deploying Kubernetes Core using RSD‘s dynamically composable resources.

Once you have your MAAS server installed and RSD Pod created, we will need to install conjure-up on the client machine and start the application:

$ sudo snap install conjure-up --classic
$ conjure-up kubernetes

Select Kubernetes Core:

Alt text

Create a new controller and select the maas Cloud type:

Alt text
Alt text

Add MAAS server IP address and API Key:

Alt text

Deploy the applications:

Alt text

Wait for Juju bootstrap to finish:

The awesome thing going on here, is at this point there are no available machines in MAAS but since there is a registered RSD Pod in MAAS, a bootstrap node is dynamically created on the fly.

Alt text

Checking back in on the MAAS UI Pod details page:

All three nodes that have been dynamically composed up to this point. The bootstrap node is deployed with two other worker nodes being deployed.

Alt text

Wait for our Applications to be fully deployed:

Alt text

Run the final post processing steps to automatically configure your Kubernetes environment:

Alt text

Review the final summary screen:

Alt text

Now you are free to access your Kubernetes by running kubectl

Conclusion

I hope this blog post gave you a look at what can be done with MAAS and Intel RSD and some of the new features that make it work well, like Pods and dynamic composition.

Leave a Reply

Your email address will not be published. Required fields are marked *