Skip to content

What is Kubernetes?

Kubernetes, AkA k8s.Kubernetes, is an Production-Grade Container Orchestration System. It can automating deployment, scaling, and managing containerized applications.

What Kubernetes can do?

  • Service discovery and load balancing
  • Storage orchestration (automatically mount a storage system)
  • Automated rollouts and rollbacks
  • Automatic bin packing
  • Self-healing
  • Secret and configuration management
  • etc

Kubernetes Clusters

K8S Architecture

Master node:

API will access k8s master and k8s will route the request to node.

Kubernetes cluster with all the components tied together.)

API Server

kube-apiserver is a component of the Kubernetes control plane that exposes the Kubernetes API.

Scheduler

kube-scheduler control plane component that watches for newly created Pods with no assigned node, and selects a node for them to run on.

controller and kube-controller-manager

  • controller: Control loops that watch the state of your cluster, then make or request changes where needed. Each controller tries to move the current cluster state closer to the desired state.
  • Node controller: Monitor nodes. Noticing and responding when nodes go down.
  • Endpoints controller: Populates the Endpoints object
  • Replication controller: Responsible for maintaining the correct number of pods for every replication controller object in the system.
  • Service Account & Token controllers: Create default accounts and API access tokens for new namespaces.

POD And Nodes

Pod

Kubernetes created a Pod to host your application instance. A Pod is a Kubernetes abstraction that represents a group of one or more application containers (such as Docker or rkt), and some shared resources for those containers. Those resources include:

  • Shared storage, as Volumes
  • Networking, as a unique cluster IP address
  • Information about how to run each container, such as the container image version or specific ports to use Pod is a virtual machine to host docker containers/applications Pods overview Pods overview

Normally, we group containers that logically coupled together in a Pod. But in most case we run a single container in a Pod.

Node

A Node is a machine that host Pods. Node overview Node can be either virtual machine or physical machine. Node is consisted with : * kubelet * kube-proxy * Pods * docker(or other container)

kube-cluster

A cluster of Nodes

Labels and Selectors

Labels are key/value pairs that are attached to objects, such as pods. key=value selector: used to filter pods

Pod management

ReplicationController

Manage and maintain number of Replica of Pod. (Scale up and down )

Replica Set

Manage and maintain number of Replica of Pod. (Scale up and down )

Deployments

Provides declarative updates for Pods and ReplicaSets.

StatefulSets

Workload API object used to manage stateful applications.

DeamonSet

ensures that all (or some) Nodes run a copy of a Pod.

Job

A Job creates one or more Pods and ensures that a specified number of them successfully terminate.

Cronjob

Creates Jobs on a repeating schedule.

HPA (Horizontal Pod Autoscaler)

Horizontal Pod Autoscaler automatically scales the number of pods in a replication controller, deployment, replica set or stateful set based on observed CPU utilization or, metrics.

Service

An abstract way to expose an application running on a set of Pods as a network service.