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
-
Install the Tigera
Calico operator and custom resource definitions.
sudo
kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml
-
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.
-
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
.
-
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.
s
udo 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.
-
Edit the daemon.json
file, whose default location is /etc/docker/daemon.json
on Linux
-
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