Install docker - Kubernetes on Ubuntu.

 

Steps to Install docker - Kubernetes on Ubuntu

Set up Docker

Step 1: Install Docker

Kubernetes requires an existing Docker installation on all nodes master and worker node. If you already have Docker installed, skip ahead to Step 2.

1. Update the package list with the command:

sudo apt-get update

2. Next, install Docker with the below command:

sudo apt-get install docker.io

3. after completing the docker instalation . Check the installation (and version) by entering the following:

sudo docker version



Step 2: Start and Enable Docker

1. Set Docker to launch at boot by entering the following:

sudo systemctl enable docker

2. Verify Docker is running:

sudo systemctl status docker

To start Docker if it’s not running:

sudo systemctl start docker



Install Kubernetes

Step 3: Add Kubernetes Signing Key(both master and worker node)

Since you are downloading Kubernetes from a non-standard repository, it is essential to ensure that the software is authentic. This is done by adding a signing key.

1. Enter the following to add a signing key:

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add

If you get an error that curl is not installed, install it with:

sudo apt-get install curl







Step 4: Add Software Repositories

Kubernetes is not included in the default repositories. To add them, enter the following:

sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

Repeat on each server node.

Step 5: Kubernetes Installation Tools

Kubeadm (Kubernetes Admin) is a tool that helps initialize a cluster. It fast-tracks setup by using community-sourced best practices. Kubelet is the work package, which runs on every node and starts containers. The tool gives you command-line access to clusters.

1. Install Kubernetes tools with the command:

sudo apt-get install kubeadm kubelet kubectl
sudo apt-mark hold kubeadm kubelet kubectl

Allow the process to complete.

2. Verify the installation with:

kubeadm version

3. Repeat for each server node.



Kubernetes Deployment

Step 6: Begin Kubernetes Deployment

Start by disabling the swap memory on each server:

sudo swapoff –a

If any issue as below while executing above commsnd:

[ERROR Swap]: running with swap on is not supported. Please disable swap.

1- sudo kubeadm reset

2- Create a file in /etc/systemd/system/kubelet.service.d/20-allow-swap.conf with the content:

[Service]
Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"

3- sudo swapoff –a



Step 7: Assign Unique Host name for Each Server Node 

Decide which server to set as the master node. Then enter the command:

sudo hostnamectl set-hostname master-node

Next, set a worker node hostname by entering the following on the worker server:

sudo hostnamectl set-hostname worker01

If you have additional worker nodes, use this process to set a unique hostname on each. For example:

worker node 1:

sudo hostnamectl set-hostname worker01

worker node 2:

sudo hostnamectl set-hostname worker02

Step 8: Initialize Kubernetes on Master Node only

Switch to the master server node, and enter the following:

sudo kubeadm init --pod-network-cidr=192.168.0.0/16

Once this command finishes, it will display a kubeadm join message at the end. Make a note of the whole entry. This will be used to join the worker nodes to the cluster.



Next, enter the following to create a directory for the cluster:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config



Step 9: Install Calico

  1. Install the Tigera Calico operator and custom resource definitions.

    sudo kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml
  2. Install Calico by creating the necessary custom resource.

    sudo kubectl create -f https://docs.projectcalico.org/manifests/custom-resources.yaml
    Note: Before creating this manifest, read its contents and make sure its settings are correct for your environment. For example, you may need to change the default IP pool CIDR to match your pod network CIDR.
  3. Confirm that all of the pods are running with the following command.

    watch kubectl get pods -n calico-system

    Wait until each pod has the STATUS of Running.

  4. Confirm that you now have a node in your cluster with the following command.

      kubectl get nodes -o wide

Step 10: Join Worker Node to Cluster

As indicated in Step 7, you can enter the kubeadm join command on each worker node to connect it to the cluster.

1- Switch to the worker01 system and enter the command you noted from Step 7:

Repeat for each worker node on the cluster. Wait a few minutes; then you can check the status of the nodes.

2- Switch to the master server, and enter:

kubectl get nodes

The system should display the worker nodes that you joined to the cluster.



Step-11: install registry

Use a command like the following to start the registry container:

sudo docker run -d -p 5000:5000 --restart=always --name registry registry:2

note: If error regarding registry already exsits. Remove the registry by below command and then recreate.

sudo docker container stop registry && sudo docker container rm -v registry

After that check the status of socker, below hiligeted line will added in status.

sudo systemctl status docker



Test with insecure registry

This procedure configures Docker to entirely disregard security for your registry. This is very insecure and is not recommended. It exposes your registry to trivial man-in-the-middle (MITM) attacks. Only use this solution for isolated testing or in a tightly controlled, air-gapped environment.

  1. Edit the daemon.json file, whose default location is /etc/docker/daemon.json on Linux

  2. If the daemon.json file does not exist, create it. Assuming there are no other settings in the file, it should have the following contents:

{
  "insecure-registries" : ["myregistrydomain.com:5000"]
}



3. Restart Docker for the changes to take effect.

Repeat steps-11 on every Engine host that wants to access your registry.



Step-12 – Intall helm

-From Apt (Debian/Ubuntu)

Members of the Helm community have contributed a helm package for Apt. This package is generally up to date.

curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -
sudo apt-get install apt-transport-https --yes
echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm