All About Kubernetes
Container: A collection of software processes unified by one namespace, with access to an operating system Kernel that it shares with other containers and little to no access between containers.
Orchestration Features: orchestration manages the containers
Initiate containers on a host
Restart failing containers
expose containers as services outside the cluster
scaling the cluster up and down
1) Multi-host container Scheduling: Kube-scheduler assigns pods to nodes at run time by checking resources, quality of service, policies, and user specifications before scheduling.
2) Scalability and availability: Kubernetes master can be deployed in a highly available configuration by using multi-region deployments.
Registration: seamless nodes register themselves with a master.
Persistent storage: pods can use persistent volumes to store data.
Rollouts & RollBacks: Application upgrades and downgrades respectively.
Maintenance: API’s are versioned and turn off/on during maintenance. we can go back to the previous version.
Logging and Monitoring: TCP, HTTP, and container execution health checks
Node health checks – failures monitor by the node controller
Kubernetes status: addons – Heapster, metric server, cAdvicer, and premethius
we can use a built-in logging feature or we can use our own
Secret Management: stores sensitive data such as database credentials and namespace configs
it has 3 components to communicate, schedule, and control
API server: Interact with all Kubernetes API (can use kubectl commands – works as a client)
Scheduler: watches the created pods and assigns nodes
Controller Manager: runs tasks in the cluster (node controller, replication controller, endpoint controller and serve account and token controller)
etcd: all cluster data stored in key-value pair(job scheduling info, pod details, etc)
Kubectl: write commands to interact with the master node. it has kubeconfig file (Server information and authentication information to access API server)
these are nodes that communicate to the master node through the kubelet process. docker works with kubelet to run containers on the worker node
kubelet agent: communicate with API server to look for pods for the worker node. it executes the pod container via the container engine and runs pod volumes with secrets and gives pod state and node states to the master node.
Kube-proxy: this is the network proxy and load balancer for the service on a single worker node.it handles network routing for TCP and UDP packets and performs connection forwarding.
Docker: allows to run the containers.
POD: pod is the smallest unit that can be scheduled as deployment in Kubernetes. it contains one or more containers tightly coupled together.
containers: containers are tightly coupled in a pod. this group of containers shares storage, Linux namespaces, and IP addresses amongst others. they are co-located and shared resources and scheduled together.
once POD is created kubelet will check the status and health. Kube-proxy will routes packets to the pods. worker nodes exposed to the internet via the load balancer. traffic comes to the node also handled by the Kube-proxy. this is how end-user talk to the application.