You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

Kubespray (henceforth KS) is a composition of Ansible playbooks, inventory, provisioning tools, and domain knowledge for generic OS/Kubernetes clusters configuration management tasks. Kubespray provides:

  • a highly available cluster;
  • composable attributes;
  • support for most popular Linux distributions (Ubuntu, CentOS, Fedora, ecc.).

Creating a cluster

Meet the requirements

Before using KS, some preliminary steps are required. Obviously the first thing is to create on OpenStack the VMs that will be part of the cluster and a VM, which we will call ServerAnsible (henceforth SA) and that it will have Ansible installed on it, from which to implement it. Communication via SSH from SA to other machines must be allowed. For example, you can create a key pair with the ssh-keygen command, depositing the private part on the SA and the public part on the cluster VMs. It is advisable to perform at least one access test between the SA and the other VMs, both for a connection test and to automatically register the VMs in the $HOME/.ssh/known_hosts file.

Now we are ready to clone the repository from GitHub to the SA

Clone repo
$ git clone https://github.com/kubernetes-sigs/kubespray.git
# After the download, enter the following folder
# (the locations of the other files that will be presented in the guide are relative to it)
$ cd kubespray

Now let's run the following commands

Deploy cluster
# Install dependencies (any missing packages will be reported)
$ sudo pip3 install -r requirements.txt
# Copy the folder, so that you always have a default from which to start over
$ cp -rfp inventory/sample inventory/mycluster
# Create an array with the IPs of the cluster VMs
$ declare -a IPS=(<IP_VM1> <IP_VM2> <IP_VM3>)
# Automatically generates the possible cluster structure
$ CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
# Review and change parameters
$ cat inventory/mycluster/group_vars/all/all.yml
$ cat inventory/mycluster/group_vars/k8s-cluster/k8s-cluster.yml
$ cat inventory/mycluster/group_vars/k8s-cluster/addons.yml
# Deploy Kubespray with Ansible Playbook
$ ansible-playbook -i inventory/mycluster/hosts.yaml  --become --become-user=root cluster.yml

Before launching KS, it is recommended that you take a look at the files mentioned above, which contain various parameters to customize the cluster. However, we will talk about these files in more detail in the next sub-chapter.

Info

Ansible uses existing privilege escalation systems to execute tasks with root privileges or with another user’s permissions. The become keyword leverages existing privilege escalation tools like sudo.







  • No labels