Bare-Metal Provisioning

The Kubernetes Deployment, aka KUD, has been designed to be consumed by Virtual Machines as well as Bare-Metal servers. The baremetal/aio.sh script contains the bash instructions for provisioning an All-in-One Kubernetes deployment in a Bare-Metal server. This document lists the Hardware & Software requirements and walkthrough the instructions that baremetal/aio.sh contains.

Hardware Requirements

Concept

Amount

CPUs

8

Memory

32GB

Hard Disk

150GB

Software Requirements

  • Ubuntu Server 16.04 LTS

baremetal/aio.sh

This bash script provides an automated process for deploying an All-in-One Kubernetes cluster.

The following two instructions start the provisioning process.

$ sudo su
# git clone https://git.onap.org/multicloud/k8s/
# cd k8s/kud/hosting_providers/baremetal/
# ./aio.sh

In overall, this script can be summarized in three general phases:

  1. Generating Inventory.

  2. Enabiling Nested-Virtualization.

  3. Deploying KUD services.

Inventory

Ansible works agains multiple systems, the way for selecting them is through the usage of the inventory. The inventory file is a static source for determining the target servers used for the execution of ansible tasks. The aio.sh script creates an inventory file for addressing those tasks to localhost.

cat <<EOL > inventory/hosts.ini
[all]
localhost

[kube-master]
localhost

[kube-node]
localhost

[etcd]
localhost

[ovn-central]
localhost

[ovn-controller]
localhost

[virtlet]
localhost

[k8s-cluster:children]
kube-node
kube-master
EOL

KUD consumes kubespray for provisioning a Kubernetes base deployment.

Ansible uses SSH protocol for executing remote instructions. The following instructions create and register ssh keys which avoid the usage of passwords.

# echo -e "\n\n\n" | ssh-keygen -t rsa -N ""
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# chmod og-wx ~/.ssh/authorized_keys

Enabling Nested-Virtualization

KUD installs Virtlet Kubernetes CRI for running Virtual Machine workloads. Nested-virtualization gives the ability of running a Virtual Machine within another. The node.sh bash script contains the instructions for enabling Nested-Virtualization.

# ./node.sh

Deploying KUD services

Finally, the KUD provisioning process can be started through the use of installer.sh bash script. The output of this script is collected in the kud_installer.log file for future reference.

# ./installer.sh | tee kud_installer.log
_images/installer_workflow.png