Kubernetes Installation on BareMetal(Fedora)



With years of experience in managing highly scalable products, google has released kubernetes an open source project which manages containerized applications across multiple hosts. Kubernetes is actively developed with more than 700 active developers. Kubernetes can be setup over any cloud platform any os. Its is based on etc which is a key value store that provides shared configuration and service discovery for clusters.

Kubernetes Services:
Kubernetes consists of four core services:
  • etcd 
  • apiserver
  • controll manager
  • scheduler

So all we have to do is run these services providing the servers ip addresses and the application we want to deploy.


Cluster : A cluster is a set of physical or virtual machines and other infrastructure resources used by Kubernetes to run your applications. Kubernetes can run anywhere.

Node : A node is a physical or virtual machine running Kubernetes, onto which pods can be scheduled.
Pod : Pods are a colocated group of application containers with shared volumes. They're the smallest deployable units that can be created, scheduled, and managed with Kubernetes. Pods can be created individually, but it's recommended to use a replication controller even if creating a single pod.

Replication controller :Replication controllers manage the lifecycle of pods. They ensure that a specified number of pods are running at any given time, by creating or killing pods as required.

Service : Services provide a single, stable name and address for a set of pods. They act as basic load balancers.

Label : Labels are used to organize and select groups of objects based on the key:value pairs.

Configuring Kubernetes on Fedora:

At least we need to have two hosts, and each host should have docker configured. Here we assume fed-master as host1 which acts as master and fed-node being the slave on host2.

Install kubernetes on both fed-master and fed-node:

yum -y install --enablerepo=updates-testing kubernetes

Install etcd on fed-master:

yum -y install etcd iptables

Edit /etc/hosts

echo "<host1_ip_addr_here>    fed-master

<host2_ip_addr_here>    fed-node" >> /etc/hosts

Configure etcd, edit /etc/kubernetes/config

Disable iptable service:

To avoid firewall issues with docker we are disabling iptables service.

systemctl disable iptables-services firewalld

systemctl stop iptables-services firewalld
Configure kubernetes on  fed-master:

Edit etc/kubernetes/apiserver


Edit /etc/etcd/etcd.conf

Create /var/run/kubernetes on master:
mkdir /var/run/kubernetes
chown kube:kube /var/run/kubernetes
chmod 750 /var/run/kubernetes
Now lets start the services:
systemctl restart etcd
systemctl restart kube-apiserver
systemctl restart kube-controller-manager
systemctl restart kube-scheduler

Create following node.json file on Kubernetes master:

    "apiVersion": "v1",
    "kind": "Node",
    "metadata": {
        "name": "fed-node",
        "labels":{ "name": "fed-node-label"}
    "spec": {
        "externalID": "fed-node"

create the fed-node over cluster

kubectl create -f ./node.json

the above node.json file illustrates the fed-node structure, it does not run the node so you will get unknown status as shown below:

$ kubectl get nodes
NAME                LABELS              STATUS
fed-node           name=fed-node-label     Unknown

Now configure the kubelet on the fed-node:

Edit /etc/kubernetes/kubelet





Start the services on host2(fed-node):

systemctl restart kube-proxy
systemctl restart kubelet
systemctl restart docker

That's it to check whether the node is up and ready execute:

$ kubectl get nodes
NAME                LABELS              STATUS

fed-node          name=fed-node-label     Ready

Posted On 28 May 2016 By MicroPyramid

Need any Help in your Project?Let's Talk

Latest Comments
How to deploy django with uwsgi and nginx using Ansible play book.

Ansible is a scripting language mostly used to automate installing applications, deploying apps etc..
Why Ansible:
You may think why learn new language if I ...

Continue Reading...
Django Testing Automated with Self Hosted Gitlab CI and Docker

It is a bit pricy if you want to host code for collaboration using bitbucket or github on your own VPS or On-Premisis servers. Gitlab ...

Continue Reading...
Fabric - Learning part1

Using Fabric, we can configure Linux production server with uwsgi, nginx, vsftpd, mysql, mongodb, postfix, php, python tools, and other relevant pieces of software single-handedly ...

Continue Reading...

Subscribe To our news letter

Subscribe and Stay Updated about our Webinars, news and articles on Django, Python, Machine Learning, Amazon Web Services, DevOps, Salesforce, ReactJS, AngularJS, React Native.
* We don't provide your email contact details to any third parties