Kubernetes is an open-source platform designed to automate deploy, scale, and operate application containers. Kubernetes was developed by google who uses Kubernetes to manage over 2 billion container deployment a week. You can use Docker containers to develop and build an application, and then use Kubernetes to run these applications on your infrastructure. The increase of microservices within a large organization would require multiple containers to manage. Due to this problem, Kubernetes was introduced to solve this problem. Kubernetes would facilitate Orchestration features such as:
- Provision hosts
- Instantiate containers on a host
- Restart failing containers
- Expose containers as a service outside the cluster
- Scale cluster up or down
“Kubernetes is an open-source project that enables software teams of all sizes, from a small startup to a Fortune 100 company, to automate deploying, scaling, and managing applications on a group or cluster of server machines” — Joe Beda
Kubernetes Features
Multi-Host Container Scheduling
These are handled by the Kube-scheduler. Kube-scheduler assigns containers also known as pods in Kubernetes to a node at runtime. It checks for resources. quality of service, policies, and user specifications before scheduling.
Scalability and Availability
Kubernetes master can be deployed in a highly available configuration. Kubernetes also supports Multi-region deployment us well.
Scalability
- Supports up to 5000 node clusters
- 150,000 pods(containers)
- Maximum of 100 pods per node.
- Pods can be horizontally be scaled via API
What allows Kubernetes to scale?
Registration
- Seamless nodes register themselves with master
Service Discovery
-Automatic detection of service and endpoints via DNS environment variables
Flexibility and Modularization
Kubernetes has a plug-and-play architecture that allows you to extend it when you need to. The specific add-ons from network drivers, services discovery, container runtime, visualization, and command.
Persistent Storage
This is a popular and important feature when working with containers. Pods can use persistent volume store data. The data is retained across pod restarts and crashes
Application Upgrades and Downgrades
Kubernetes has worked on upgrades that roll new supports and Downgrade that rollback support.
Maintenance
When it comes to maintenance Kubernetes supports backward compatibility. All APIs are versioned.
Logging and Monitoring
Application monitoring or health checks are built-in such as TCP, HTTP, or container execution health check supported out of the box.
Node health check gives the status of nodes by monitoring failures by node controller.
Kubernetes status can be monitored through addons such as HeapstercAdvisor and Prometheus.
Secrets Management
Sensitive data is the first-class citizen in Kubernetes. Secrets are mounted as data volumes or environment variables. There are specified to a single namespace and are not shared across all applications.
Community
Kubernetes has the strongest open source communities. It is governed by the Cloud Native Computing Foundation also know as the CNCF. Kuberenest has vast documentation that is comprehensive.