This project offers a reference for deploying a Kubernetes cluster. Its ansible playbooks allow to provision a deployment on Bare-metal or Virtual Machines.
Name | Description | Source | Status |
---|---|---|---|
Kubernetes | Base Kubernetes deployment | kubespray | Done |
Virtlet | Allows to run VMs | configure-virtlet.yml | Tested |
Multus | Provides Multiple Network support in a pod | Tested | |
NFD | Node feature discovery | nfd role | Tested |
Istio | Service Mesh platform | Tested | |
PMEM | Persistent Memory CSI | pmem role | Implemented |
QAT | QuickAssist Technology Plugin | qat_plugin role | Tested |
SR-IOV | Single Root Input/Output Virtualization Plugin | sriov_plugin role | Implemented |
The installer bash script contains the minimal Ubuntu instructions required for running this project.
This project uses Vagrant tool for provisioning Virtual Machines automatically. The setup.sh script of the bootstrap-vagrant project contains the Linux instructions to install dependencies and plugins required for its usage. This script supports two Virtualization technologies (Libvirt and VirtualBox).
$ curl -fsSL http://bit.ly/initVagrant | PROVIDER=libvirt bash
Once Vagrant is installed, it's possible to provision a cluster using the following instructions:
$ vagrant up && vagrant up installer
The KRD command script provides an easy way to install complementary Kubernetes projects to an existing cluster. Those projects are grouped in KRD actions and it's possible to get the current list of current supported actions executing the following instruction:
$ ./krd_command.sh -h
The actions which require the execution of a distributed commands were implemented through the install_k8s_addons KRD action. This action uses the KRD_ADDONS environment variable to specify the Ansible playbook to be executed.
$ KRD_ADDONS=virtlet ./krd_command.sh -a install_k8s_addons
Note: Some KRD AddOns have a corresponding validation script in the tests folder.
The functions defined in this project covers the life-cycle of a Kubernetes cluster. In other words, its possible to add more nodes, upgrade the existing deployment or remove the services. The following instruction shows how to upgrade the existing Kubernetes cluster to v1.15.3 using the Kubespray version v2.11.0:
$ KRD_KUBE_VERSION=v1.15.3 KRD_KUBESPRAY_VERSION=v2.11.0 ./krd_command.sh -a upgrade_k8s
Name | Default | Description |
---|---|---|
KRD_DEBUG | false | Enables verbose execution |
KRD_KUBE_VERSION | Specifies the Kubernetes version to be upgraded | |
KRD_KUBESPRAY_VERSION | Specifies the Kubespray version to be used during the upgrade process | |
KRD_ENABLE_TESTS | Enables the functional tests during the deployment process | |
KRD_HELM_CHART | Specifies the Helm chart to be installed | |
KRD_FOLDER | /opt/krd | KRD source code destination folder |
KRD_ACTIONS | install_k8s | KRD actions to be installed during the All-in-One execution |
KRD_ADDONS | addons | Specifies the Kubernetes AddOns to be installeb by install_k8s_addons |
KRD_CONTAINER_RUNTIME | docker | Specifies the Container Runtime to be used for deploying kubernetes |
KRD_NETWORK_PLUGIN | kube-ovn | Choose network plugin (calico, canal, cilium, contiv, flannel weave) |
KRD_ENABLE_MULTUS | false | Enable/Disable Kubernetes Multus CNI |
KRD_QAT_PLUGIN_MODE | dpdk | Specifies the deployment mode for Intel QuickAssist Plugin |