Introduction
-
Kubernetes is an open source container management tool which automates container deployment, container scaling and load balancing
-
Kubernetes is "an open-source system for automating deployment, scaling and managing of containerized applications" https://kubernetes.io (opens in a new tab). The word Kubernetes comes from the Greek language, and means "pilot of the ship"
-
It schedules and manages isolated containers which are running on virtual/physical/cloud machines
-
All top cloud providers support kubernetes
-
Kubernetes is currently owned by Cloud Native Computing Foundation (CNCF), an open-source foundation within the Linux Foundation
-
Kubernetes is an ecosystem, providing a core solution, with many third- party add-ons provided by approved projects, focusing on different areas -
- Networking
- Ingress
- Monitoring
- Packaging
- and much more
Understanding Kubernetes
- Kubernetes implements a platform to run container-based applications in a Cloud Native Computing environment
- In Cloud Native Computing, applications are hosted by the cloud, and have no direct relation to a server
- As a result, all that is needed by the application needs to be stored in the cloud
- To successfully run applications in a Cloud Native environment, specific properties must be provided
- These properties are defined in Kubernetes Resources
- Resources are defined in the Kubernetes APIs
History
-
Google developed an internal system called 'Borg' (later named as Omega) to deploy and manage thousand Google applications and services on their cluster (group of same type).
-
In 2014 Google introduced Kubernetes an open source platform written in GoLang, later donated to Cloud Native Computing Foundation (CNCF).
Online Platform for K8s
-
Kubernetes Platform
-
Play with K8s
-
Play with Kubernetes classroom
Cloud based K8s Service
There are three most popular kubernetes cloud service those are -
- GKS - Google Kubernetes Service
- AKS - Azure Kubernetes Service
- EKS - Elastic Kubernetes Service
Kubernetes installation tools
- kubeadm
- minikube
Problems with scaling up the contnainers
- Containers can't communicate with each Other
- Auto scaling and load balancing was not possible
- Containers need to be managed carefully
Features of Kubernetes
- Orchestration (clustering of any number of containers running on different network)
- Auto scaling (vertical and horizontal)
- Load balancing
- Perform independent
- Fault tolerance (Pod failures / node)
- Rollback (Going back to previous version)
- Health monitoring
- Batch execution (One time, sequential or parallel)
Understanding Kubernetes Competition
- Kubernetes is open source, and as such available to everyone and any company
- The open source nature of Kubernetes allows companies to use a very strong common code base and focus on features the specific company wants to add to that
- For that reason, currently there is no significant competition to Kubernetes
- There are Kubernetes distributions though
- Docker Swarm can be considered a competing solution, but Kubernetes has made it less relevant
Kubernetes Distributions
- Vanilla Kubernetes is Kubernetes directly created from the source code hosted by CNCF
- Kubernetes distributions are adding specific functionality and selection of solutions from the ecosystem
- Google Anthos
- Red Hat OpenShift
- SUSE Rancher
- Canonical Kubernetes
Understanding Kubernetes release
- A new release of Kubernetes is published every 3 months!
- When a new release is published, new versions of the APIs may become available, and old features may get deprecated
- If a feature is deprecated, adopt the new method, as the feature will go away within the next 2 releases!