Kubernetes Installation and Configuration
Fundamentals
INTRODUCTION AND EXPLORING KUBERNETES ARCHITECTURE
Anthony E. Nocentino
ENTERPRISE ARCHITECT @ CENTINO SYSTEMS
@nocentino [Link]
Course Overview
Introduction
Exploring Kubernetes Architecture
Installing and Configuring Kubernetes
Working with Your Kubernetes Cluster
Overview What is Kubernetes?
Exploring Kubernetes Architecture
• Cluster Components
• Networking Fundamentals
What Is Kubernetes?
Container Workload Infrastructure Desired State
Orchestrator Placement Abstraction
Benefits of Using Kubernetes
Speed of deployment
Ability to absorb change quickly
Ability to recover quickly
Hide complexity in the cluster
Kubernetes Principles
Desired State/ Controllers/ Kubernetes API/The
Declarative Control Loops API Server
Configuration
Kubernetes API
API Objects
Collection of primitives to represent your
system’s state
Enables configuration of state
Declaratively
Imperatively
Kubernetes API Server
RESTful API over HTTP using JSON
The sole way to interact with your cluster
The sole way Kubernetes interacts with your
cluster
Serialized and persisted
Kubernetes API Objects
Pods Controllers Services Storage
Not an exhaustive list, but these are the key players
Pods
One or more containers
It’s your application or service
The most basic unit of work
Unit of scheduling
Ephemeral - no Pod is ever “redeployed”
Atomicity - they’re there or NOT
Pods - Continued
Kubernetes’ job is keeping your Pods running
More specifically keeping the desired state
State - is the Pod up and running
Health - is the application in the Pod running
Probes
So how does Kubernetes
manage my Pods’ state?
Controllers
Defines your desired state
Create and manage Pods for you
Respond to Pod state and health
ReplicaSet
Number of replicas
Deployment
Manage rollout of ReplicaSets
Many more…and not just Pods
So how does Kubernetes add
persistency to all this ephemerality?
Services
Adds persistency to our ephemeral world
Networking abstraction for Pod access
IP and DNS name for the Service
Dynamically updated based on Pod lifecycle
Scaled by adding/removing Pods
Load balancing
What about my data?
Where’s that stored in Kubernetes?
Storage in Kubernetes
Volumes Persistent Volume Persistent Volume Claim
Exploring Kubernetes Architecture
Cluster Components
Control Plane Node Node
Control Plane Node
Master Node Control Plane Node
Control Plane Node
etcd
API Server
Control
Scheduler
Plane kubectl
Node
Controller Manager
Control Plane Components
API Server etcd Scheduler Controller Manager
Central Persists State Watches API Server Controller Loops
Lifecycle functions and
Simple API Objects Schedules Pods
desired state
Watch and update the
RESTful Key-value Resources
API Server
Updates etcd Respects contraints ReplicaSet
Nodes
etcd
API Server
Control
Scheduler
Plane
Node
Controller Manager
Kubelet
Kube-proxy
Node
Container Runtime
Nodes
Kubelet kube-proxy Container Runtime
Monitors API Server Downloads images &
iptables
for changes runs containers
Responsible for Pod Container Runtime
Implements Services
Lifecycle Interface (CRI)
Reports Routing traffic to
containerd
Node & Pod state Pods
Pod probes Load Balancing Many others…
Cluster Add-on Pods
DNS Ingress Dashboard
Pod Operations
etcd
API Server
Control
Scheduler kubectl
Plane
Node
Controller Manager
Kubelet
Kube-proxy
Node Pod Pod Pod
Container Runtime
Kubelet
Kube-proxy
Node Pod
Container Runtime
Services
Pod Pod Pod
HTTP
Pod Pod
Cluster Service
Kubernetes Networking Fundamentals
Kubernetes Networking Requirements
Pods on a Node can
Agents on a Node can
communicate with all Pods on all
communicate with all Pods on
Nodes without Network Address
that Node
Translation (NAT)
Networking Fundamentals
Pod Pod
IP IP
Kube-proxy
Bridge
HTTP
Layer 2 or 3
Pod
Service
1. Inside a Pod
localhost
2. Pod to Pod within a Node
3. Pod to Pod on another Node
Kube-proxy
Pod 4. External Services
IP
Summary What is Kubernetes?
Exploring Kubernetes Architecture
• Cluster Components
• Networking Fundamentals
What’s Next!
Installing and Configuring Kubernetes