- Published on
Kubernetes on AWS EKS for Beginners (Part 1)
- Authors
- Name
- Joseph Goksu
- @josephgoksu
Overview
Introduction
Note: This article is a curation of external links. I aim to give an overview.
Prerequisites
- Basic knowledge of AWS
- Basic knowledge of Kubernetes (K8S)
- Basic knowledge of Docker
Introduction to Kubernetes
Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation.
The name Kubernetes originates from Greek, meaning helmsman or pilot.
Google open-sourced the Kubernetes project in 2014. Kubernetes combines over 15 years of Google's experience running production workloads at scale with best-of-breed ideas and practices from the community.
Traditional deployment era -> Virtualized deployment era -> Container deployment era
Containers are similar to VMs, but they have relaxed isolation properties to share the Operating System (OS) among the applications. Therefore, containers are considered lightweight.
The machines that make up a Kubernetes cluster are called nodes.
Nodes in a Kubernetes cluster may be physical, or virtual.
There are two types of nodes:
- A Control-plane-node type, which makes up the Control Plane, acts as the “brains” of the cluster.
- A Worker-node type, which makes up the Data Plane, runs the actual container images (via pods).
K8S OBJECTS
-
Pods are the smallest deployable units of computing that you can create and manage in Kubernetes. A Pod (as in a pod of whales or pea pod) is a group of one or more containers, with shared storage and network resources, and a specification for how to run the containers.
-
DaemonSet = DaemonSets are used to ensure that some or all of your K8S nodes run a copy of a pod, which allows you to run a daemon on every node.
-
Deployment = Details how to roll out (or roll back) across versions of your application
-
ReplicaSet = Ensures a defined number of pods are always running
-
Job = Ensures a pod properly runs to completion
-
Service = Maps a fixed IP address to a logical group of pods
-
Label = Key/Value pairs used for association and filtering
K8S Architecture
CONTROL PLANE
-
One or More API Servers: Entry point for REST / kubectl
-
etcd: Distributed key/value store
-
Controller-manager: Always evaluating current vs desired state
-
Scheduler: Schedules pods to worker nodes
DATA PLANE
-
Made up of worker nodes
-
kubelet: Acts as a conduit between the API server and the node
-
kube-proxy: Manages IP translation and routing
KUBERNETES CLUSTER SETUP
- Minikube – Development and Learning
- Kops – Learning, Development, Production
- Kubeadm – Learning, Development, Production
- Docker for Mac - Learning, Development
- Kubernetes IN Docker - Learning, Development
Amazon Elastic Kubernetes Service
Amazon Elastic Kubernetes Service (Amazon EKS) gives you the flexibility to start, run, and scale Kubernetes applications in the AWS cloud or on-premises.
EKS runs upstream Kubernetes and is certified Kubernetes conformant for a predictable experience. You can easily migrate any standard Kubernetes application to EKS without needing to refactor your code.
EKS makes it easy to standardize operations across every environment. You can run fully managed EKS clusters on AWS.
EKS CLUSTER CREATION STEPS
- Create EKS Cluster
- Create HA Control Plane
- IAM Integration
- Certificate Management
- Setup LB
- Provision worker nodes
- Launch add-ons
- Launch workloads
EKS ARCHITECTURE FOR CONTROL PLANE AND WORKER NODE COMMUNICATION
Overview of EKS Cluster
So, I know part 1 was boring, but we will have hands-on article in part 2.
See, you 👋
External Links
- https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/
- https://www.eksworkshop.com/
- https://aws.amazon.com/eks