Are you new to Kubernetes? Want to build your career in Kubernetes? Then Welcome ! You are at the right place. This blog post series brings you tutorials that help you get hands-on experience using Kubernetes. Here you will find a mix of labs and tutorials that will help you, no matter if you are a beginner, SysAdmin, IT Pro or Developer. Yes, you read it correct ! Its $0 learning platform. You don’t need any infrastructure. Most of the tutorials runs on Play with K8s Platform. This is a free browser based learning platform for you. Kubernetes tools like kubeadm, kompose & kubectl are already installed for you. All you need is to get started.
Kubernetes (often abbreviated to K8S), is a container orchestration platform for applications that run on containers. Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. It groups containers that make up an application into logical units for easy management and discovery.
Kubernetes can speed up the development process by making easy, automated deployments, updates (rolling-update) and by managing our apps and services with almost zero downtime. It also provides self-healing. Kubernetes can detect and restart services when a process crashes inside the container. Any developer can package up applications and deploy them on Kubernetes with basic Docker knowledge.
At a minimum, Kubernetes can schedule and run application containers on clusters of physical or virtual machines. However, Kubernetes also allows developers to ‘cut the cord’ to physical and virtual machines, moving from a host-centric infrastructure to a container-centric infrastructure, which provides the full advantages and benefits inherent to containers. Kubernetes provides the infrastructure to build a truly container-centric development environment. K8s provides a rich set of features for container grouping, container orchestration, health checking, service discovery, load balancing, horizontal autoscaling, secrets & configuration management, storage orchestration, resource usage monitoring, CLI, and dashboard.
This is the first blog targeted at setting up 5-Node Kubernetes cluster. To get started with Kubernetes, follow the below steps:
- Open https://labs.play-with-k8s.com on your browser.
Click on “Start” button to get access to PWK instances as shown below:
Click on Add Instances to setup first k8s node.
Cloning the Repository
git clone https://github.com/ajeetraina/kubernetes101/ cd kubernetes101/install
Bootstrapping the First Node Cluster
Adding New K8s Cluster Node
Click on Add Instances to setup first k8s node cluster
Wait for 1 minute time till it gets completed.
Copy the command starting with
kubeadm join ..... We will need it to be run on the worker node.
Setting up Worker Node
Click on “Add New Instance” and paste the last kubeadm command on this fresh new worker node.
[node2 ~]$ kubeadm join --token 4f924f.14eb7618a20d2ece 192.168.0.8:6443 --discovery-token-ca-cert-hash sha256:a5c25aa4573e06a0c11b11df23c8f85c95bae36cbb07d5e7879d9341a3ec67b3```
You will see the below output:
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters. [preflight] Skipping pre-flight checks[discovery] Trying to connect to API Server "192.168.0.8:6443" [discovery] Created cluster-info discovery client, requesting info from "https://192.168.0.8:6443" [discovery] Requesting info from "https://192.168.0.8:6443" again to validate TLS against the pinned public key [discovery] Cluster info signature and contents are valid and TLS certificate validates against pinned roots, will use API Server "192.168.0.8:6443"[discovery] Successfully established connection with API Server "192.168.0.8:6443" [bootstrap] Detected server version: v1.8.15 [bootstrap] The server supports the Certificates API (certificates.k8s.io/v1beta1) Node join complete: * Certificate signing request sent to master and response received. * Kubelet informed of new secure connection details. Run 'kubectl get nodes' on the master to see this machine join. [node2 ~]$
Verifying Kubernetes Cluster
Run the below command on master node
[node1 ~]$ kubectl get nodes NAME STATUS ROLES AGE VERSION node1 Ready master 15m v1.10.2 node2 Ready <none> 1m v1.10.2 [node1 ~]$
Adding Worker Nodes
[node1 ~]$ kubectl get nodes NAME STATUS ROLES AGE VERSION node1 Ready master 58m v1.10.2 node2 Ready <none> 57m v1.10.2 node3 Ready <none> 57m v1.10.2 node4 Ready <none> 57m v1.10.2 node5 Ready <none> 54s v1.10.2
[node1 ]$ kubectl get po No resources found.
[node1 ]$ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 1h [node1 ]$
In the next blog series, I will showcase how to build a simple Nginx application on top of 5-Node Kubernetes cluster.