Kubernetes is an open-source container orchestration solution that streamlines container deployment, scalability, and load balancing. It supports a variety of platforms, including on-premises bare metal, OpenStack, and major public clouds such as Google, Azure, and AWS.
Why use Kubernetes?
Microservices provide higher adaptability than monolithic services, which is pushing their acceptance in the rapidly evolving IT world. Deploying applications in containers offers robustness, with Kubernetes managing containers for zero downtime, making it necessary for both micro and monolithic apps.
Kubernetes Features
Automated Scheduling
Self-Healing Capabilities
Automated rollouts & rollback
Horizontal Scaling & Load Balancing
Offers enterprise-ready features
Application-centric management
Auto-scalable infrastructure
Kubernetes Disadvantages
Kubernetes can be an overkill for simple applications
Kubernetes is very complex and can reduce productivity
The transition to Kubernetes can be complicated
Kubernetes control plane only supports the Linux platform
Only Kubernetes V1.14 is supported by Windows Server 2019
Supports clusters with up to 5000 nodes
Supports 150000 total pods
Supports 300000 total containers
Supports 100 pods per node
2 GiB or more of RAM per machine for Kubernetes
At least 2 CPUs on the machine that you use as a control-plane node
Kubernetes allows administrators to set quotas, in namespaces
Object types in Kubernetes
Kubernetes supports the following key objects:
Pod
Node
Service
Replica Set
Namespace
Replication Controller
Deployments
Volume
Secret
Kubectl
Kubernetes Alternatives
Rancher
Nomad
Docker Swarm
Cloud Foundry
AWS Fargate
Apache Mesos
OpenStack
Docker Compose
Kubernetes-master supports the platform
Ubuntu 16.04+
Debian 9+
CentOS 7
Red Hat Enterprise Linux (RHEL) 7
Fedora 25+
HypriotOS v1.0.1+
Container Linux
Kubernetes Architecture
Kubernetes uses a client-server architecture, with a master on one system and nodes on other Linux machines.
In a master-slave system, the master manages Docker containers across several nodes.
A Kubernetes cluster consists of master and worker nodes.
The Kubernetes master helps developers as they deploy apps in Docker containers.