- Understanding Container Deployment Challenges
- What is Kubernetes? And Why?
- Kubernetes Concepts & Components
Deploying containers manually is challenging, error-prone, and often frustrating, even when not considering security and configuration issues. Here are some common problems:
- Containers can crash or go offline and require replacement.
- Traffic spikes may necessitate additional container instances.
- Incoming traffic needs to be evenly distributed across containers.
Services like AWS ECS provide features such as container health checks, automatic re-deployments, autoscaling, and load balancing. However, relying on a specific cloud service can lead to vendor lock-in. Switching providers would require learning the unique services, configurations, and options offered by the new platform.
Kubernetes is an open-source system (and de-facto standard) for orchestrating container deployments. It offers features like automatic deployment, scaling & load balancing, management,...
What Kubernetes IS and IS NOT
- It’s not a cloud service provider - It’s an open source project
- It’s not a service by, or restricted to, a cloud service provider - It can be used with any provider
- It’s not just a software you run on some machine - It’s a collection of concepts and tools
- It’s not an alternative to Docker - It works with (Docker) containers
- It’s not a paid service - It’s a free open-source project
Kubernetes is like Docker-Compose for multiple machine.
What Kubernetes Will Do:
- Create objects (e.g. Pods) and manage them
- Monitor Pods and re-create them, scale Pods etc.
- Kubernetes utilizes the provided (cloud) resources to apply your configuration / goal
What Needs To Be Done / Setup:
- Create the Cluster and the Node Instances (Worker + Master Nodes)
- Setup API Server, kubelet and other Kubernetes services / software on Nodes
- Create other (cloud) provider resources that might be needed (e.g. Load Balancer, Filesystems)
Cluster:
A set of Node machines which are running the Containerized Application (Worker Nodes) or control other Nodes (Master Node).
Nodes::
Physical or virtual machine with a certain hardware capacity which hosts one or multiple Pods and communicates with the Cluster.
Master Node:
Cluster Control Plane, managing the Pods across Worker Nodes.
Worker Node:
Hosts Pods, running App Containers (+ resources).
Pods:
Pods hold the actual running App Containers + their required resources (e.g. volumes).
Containers:
Normal (Docker) Containers.
Services:
A logical set (group) of Pods with a unique, Pod- and Container-independent IP address.