Kubernetes, an introduction
“Kubernetes is Google’s open source system for managing Linux containers across private, public and hybrid cloud environments.”(1)Now why is this important? A development deployment system will be encompassed of many different functions, not just a webpage, but databases, apis, worker resources, and more. The most important thing is that as long as you are using kubernetes to deploy, you’re not tied into a particular vendor. If you are having problems with say, digital ocean, you can move to Amazon. Or lets say you are on Amazon, and Microsoft Azure is giving you some extreme discounts that make migrating a financial win, then migration can be easy.
“Kubernetes, at its basic level, is a system for running and coordinating containerized applications across a cluster of machines.”(2) It is an orchestration workflow that helps define how your applications should run and the ways they should be able to interact with other applications or the outside world. Create, dev, test, and production environments, scale up for the holiday season, scale down when not needed, etc. You can even use layers in layers, making it a kubernetes russian doll, brining together both physical and virtual machines to make a cluster.
In an overview, the Master server: “acts as a gateway and brain for the cluster by exposing an API for users and clients, health checking other servers, deciding how best to split up and assign work”. It is the server that is responsible for distributing the workload and handling scheduling and tasks for the cluster. The “servants” are called nodes, which are “servers responsible for accepting and running workloads using local and external resources. “ To start everything a user submits a JSON or YAML plan, and the master server then runs the orchestration from there
Components of the master server that give it it’s brains
- Etcd – uses to store configuration data that can be accessed by each of the nodes in the cluster.
- Kube-apiservethe main management point of the entire cluster
- Kube-controller-manager general service that has many responsibilities. Primarily, it manages different controllers that regulate the state of the cluster, manage workload life cycles, and perform routine tasks.
- Kube-scheduler – The process that actually assigns workloads to specific nodes
cloud-controller-manageract allows Kubernetes to interact providers with different capabilities, features, and APIs while maintaining relatively generic constructs internally.
While the master has all those components, we also cant forget about the kublet.
Its the main contact point for each node with the cluster group The kubelet service communicates with the master components to authenticate to the cluster and receive commands and work.