Shane Cunningham

Personal blog of an infrastructure engineer

Self-hosted Kubernetes with Tectonic-Installer

This is more of an update to my previous post on deploying a self-hosted Kubernetes cluster using Bootkube/Matchbox. Since then there’s been some updates and CoreOS has open sourced their tectonic-installer project. This adds Terraform, so the full stack for the bare-metal provider is Terraform -> Matchbox -> Bootkube -> Tectonic assets/manifests. This time I created a Container Linux VM to act as the PXE and deployment host. All of this is from readily available documentation, compiled down to what you need to get up and running quickly. I have two physical servers, one will act as the controller [node1] and the other as the worker [node2]. ...

October 22, 2017 · 7 min · Shane Cunningham

Self-hosted Kubernetes on bare-metal with Bootkube/Matchbox

10/22/2017: Updated post on this method I use a cobbler VirtualBox VM on my laptop to PXE boot my three bare-metal servers in my home lab for OpenStack. This enables me to quickly test new OpenStack deployments with setting three “–netboot” cobbler values to true and then rebooting my servers. Cobbler takes care of PXE booting my servers with Ubuntu and with my specific partitioning scheme. I can then use Ansible to prepare my three nodes and then use Ansible to lay down OpenStack. ...

March 18, 2017 · 12 min · Shane Cunningham

Scale your Kubernetes cluster with OpenStack Magnum

Quick post on how easy OpenStack Magnum makes scaling your Kubernetes clusters up or down. I spun up a one controller, one worker node Kubernetes cluster. Scaling this cluster up and down, where Magnum takes care of adding and removing the worker node to the cluster, is only one command each way. $ kubectl cluster-info Kubernetes master is running at https://192.168.88.233:6443 KubeUI is running at https://192.168.88.233:6443/api/v1/proxy/namespaces/kube-system/services/kube-ui $ kubectl get nodes NAME STATUS AGE 10.0.0.3 Ready,SchedulingDisabled 6m ku-ptzjkk2wew-0-b2tsvzrd63o4-kube-minion-uol3nin7zndb Ready 4m root@infra01-utility-container-e6fba879:~# nova list +--------------------------------------+-------------------------------------------------------+--------+------------+-------------+----------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-------------------------------------------------------+--------+------------+-------------+----------------------------------+ | 643e4ad8-a9db-44c8-b236-8536efc5fc44 | ku-4b3scjlreg-0-jvxjrtd2b7lg-kube-master-wri52qlujljn | ACTIVE | - | Running | private=10.0.0.3, 192.168.88.233 | | 0aa58f68-b05c-4c3d-b54b-93848132d2f4 | ku-ptzjkk2wew-0-b2tsvzrd63o4-kube-minion-uol3nin7zndb | ACTIVE | - | Running | private=10.0.0.4, 192.168.88.227 | +--------------------------------------+-------------------------------------------------------+--------+------------+-------------+----------------------------------+ We use the cluster-update command to add another worker node. ...

February 8, 2017 · 3 min · Shane Cunningham

Installing OpenStack Magnum using openstack-ansible

An Ansible role was developed we can use with openstack-ansible to deploy OpenStack Magnum. This is still somewhat early in development so it’s likely these steps will change soon. You’ll need an OpenStack environment already deployed with openstack-ansible and functioning correctly. In my environment I had one controller node and 1 compute. I found Kubernetes refused to deploy a worker/minion on the same compute node as the master was deployed on, so if you’re doing Kubernetes you might want at least two compute nodes. ...

December 7, 2016 · 8 min · Shane Cunningham

Deploying and customizing OpenStack Mitaka with openstack-ansible

This guide will be similar to my other guides on how to install OpenStack using openstack-ansible, LXC containers and some simple YAML configs, but I plan to go a little more in depth with some of the configuration options and customizations that are available. This version will deploy OpenStack Mitaka. Overview Hardware Setting up physical hosts Downloading openstack-ansible Customizing our OpenStack cloud Installing OpenStack Configuring Neutron Testing our cloud Next Hardware infra01: Lenovo ThinkServer TS140 Xeon E3-1225 v3 3.2 GHz 16GB ECC RAM 2 x 1Gb NICs (em1 and p4p1) ...

August 19, 2016 · 13 min · Shane Cunningham

Deploying OpenStack Liberty with Ceph

In this example of deploying OpenStack I’ll be adding a third server that will act as our Ceph storage server. With a few config changes to openstack-ansible we will setup nova, cinder and glance to use Ceph as their backend storage systems. infra01: Lenovo ThinkServer TS140 Xeon E3-1225 v3 3.2 GHz 16GB ECC RAM 2 x 1Gb NICs IP address for em1: 192.168.88.100 IP address for br-mgmt: 172.29.236.51 IP address for br-vxlan: 172.29.240.51 IP address for br-storage: 172.29.244.51 IP address for br-vlan: none compute01: Dell Poweredge T110 II Xeon E3-1230 v2 3.3 GHz 32GB ECC RAM 2 x 1Gb NICs ...

April 10, 2016 · 5 min · Shane Cunningham