Difference between revisions of "Installing Kubernetes with Ansible on AWS"

From PKC
Jump to navigation Jump to search
Line 29: Line 29:
</syntaxhighlight>
</syntaxhighlight>


For <code>inventory</code> file:
For <code>inventory</code> file, one should provide a list of machines, and a list of variables that applies to all these machines. In our case, we want to access all these machines using the same <code>ansible_user</code>: <code>ubuntu</code>.
<syntaxhighlight lang="CSS">
<syntaxhighlight lang="CSS">
m1.xlp.pub
m1.xlp.pub
w1.xlp.pub
w1.xlp.pub
[all:vars]
ansible_user=ubuntu
</syntaxhighlight>
</syntaxhighlight>



Revision as of 09:23, 3 August 2021

This article explains how to install Kubernetes using Ansible on AWS's Ubuntu 20.04 computing clusters.

Set up at least two machines on AWS

The first task is to create two EC2 instances that matches Kubernetes Cluster minimal configuration:

The master node must have at least 2 CPU cores, 2 Gb of memory.
The worker node (slave) should have at least 1 CPU core and 2 Gb of memory.

Set the right Security Groups

{{#lst:Input/K8s Installation/Security Groups|Security Groups}}

Ideally, one could first create a Security Group, and name it K8s Sec Grp, then, just create two or more instances of EC2, and select the said security group during the creation cycle.

Use the same Signature File

When creating these instances, make sure that you create or select the same Identity file (.pem file) for all instances of the same cluster. This will significantly reduce the complexity of installation.

Make sure Ansible is installed

Install Ansible on the machine that will run Ansible to install the cluster. You may follow this procedure: Installing Ansible. If you already installed Python 3.0 and pip3, launch the following instruction in your terminal should work:

 pip3 install ansible

Set up Ansible Hosts and Inventory file

It is necessary to set up the hosts and inventory files for Ansible. See the following examples:

For hosts file:

m1.xlp.pub
w1.xlp.pub

For inventory file, one should provide a list of machines, and a list of variables that applies to all these machines. In our case, we want to access all these machines using the same ansible_user: ubuntu.

m1.xlp.pub
w1.xlp.pub
[all:vars]
ansible_user=ubuntu

Test to see if Ansible can access the machines

One must supply the following data points to enable Ansible to access the machines:

  1. all for all the machines listed in the inventory file in the current working directory.
  2. -i for input file, in this case, the inventory file in the current working directory.
  3. --key-file for the secret key file, in this case, the ~/.ssh/ansible.pem is the one that is shared with all the nodes.
  4. -u for user name, in this case, ubuntu is the user associated with the key file.
  5. -m for module name, in this case, ping is the module to be executed.
ansible all -i inventory --key-file ~/.ssh/ansible.pem -u ubuntu -m ping