Please enable JavaScript.
Coggle requires JavaScript to display documents.
3 Lecture 3 Building a Kubernetes Cluster - Coggle Diagram
3 Lecture 3 Building a Kubernetes Cluster
What is a Kubernetes Cluster
Definition
A Kubernetes Cluster is a group of Linux servers working together to run, manage, scale, monitor, and recover containerized applications automatically.
Purpose
High Availability
Scalability
Automation
Self Healing
Load Distribution
Centralized Management
Enterprise Examples
Banking Applications
E-Commerce Platforms
Healthcare Systems
Government Services
Telecom Infrastructure
Artificial Intelligence Platforms
DevOps Platforms
CI CD Pipelines
Cluster Architecture
Control Plane
Definition
The Control Plane is the brain of Kubernetes.
Responsibilities
Scheduling
API Management
Authentication
Authorization
Cluster State Management
Monitoring
Resource Allocation
Certificate Management
Components
kube-apiserver
Definition
Main communication gateway of Kubernetes.
Responsibilities
Accepts requests from users.
Validates requests.
Stores cluster information.
Communicates with every component.
Default Port
6443
Linux Binary
kube-apiserver
Configuration
Static Pod
Manifest Path
/etc/kubernetes/manifests/kube-apiserver.yaml
etcd
Definition
Distributed key value database storing all cluster information.
Stores
Pods
Deployments
Secrets
ConfigMaps
Certificates
Nodes
Persistent Volume Information
Default Port
2379
Data Directory
/var/lib/etcd
Backup Command
etcdctl snapshot save backup.db
Restore Command
etcdctl snapshot restore backup.db
kube-scheduler
Definition
Assigns newly created Pods to appropriate worker nodes.
Scheduling Decisions
CPU
Memory
Labels
Taints
Affinity
Node Health
Manifest
/etc/kubernetes/manifests/kube-scheduler.yaml
kube-controller-manager
Definition
Runs controllers maintaining desired cluster state.
Controllers
Node Controller
Deployment Controller
ReplicaSet Controller
Job Controller
Endpoint Controller
Manifest
/etc/kubernetes/manifests/kube-controller-manager.yaml
cloud-controller-manager
Definition
Integrates Kubernetes with cloud providers.
Cloud Platforms
AWS
Azure
Google Cloud
OpenStack
Worker Node
Definition
Linux server where application containers run.
Components
kubelet
Definition
Kubernetes agent running on every node.
Responsibilities
Starts Pods
Stops Pods
Reports Node Health
Executes Instructions
Service
systemctl status kubelet
Configuration
/var/lib/kubelet
/etc/default/kubelet
kube-proxy
Definition
Provides networking between Pods and Services.
Responsibilities
Load Balancing
Network Routing
Port Forwarding
Modes
iptables
IPVS
Container Runtime
Definition
Software responsible for running containers.
Examples
containerd
CRI-O
Socket
/run/containerd/containerd.sock
Kubernetes Installation Requirements
Linux Operating System
Ubuntu
Red Hat Enterprise Linux
Rocky Linux
AlmaLinux
SUSE Linux Enterprise
CPU
Minimum
2 Cores
Enterprise
8 to 64 Cores
Memory
Minimum
2 Gigabytes
Enterprise
16 Gigabytes to 512 Gigabytes
Storage
SSD Preferred
Enterprise SAN Storage
Network Attached Storage
Network
Static IP Address
DNS
Gateway
Internet Access
NTP Time Synchronization
Linux Preparation
Update Packages
sudo apt update
sudo apt upgrade
Disable Swap
Definition
Kubernetes does not support swap for scheduling.
Command
sudo swapoff -a
File
/etc/fstab
Enable Kernel Modules
overlay
br_netfilter
Commands
sudo modprobe overlay
sudo modprobe br_netfilter
Configure Kernel Parameters
File
/etc/sysctl.d/kubernetes.conf
Parameters
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
Apply
sudo sysctl --system
Install Container Runtime
containerd
Install
sudo apt install containerd
Configuration
/etc/containerd/config.toml
Service
systemctl enable containerd
systemctl start containerd
Install Kubernetes Packages
kubeadm
Definition
Tool to build Kubernetes clusters.
kubelet
Definition
Node Agent.
kubectl
Definition
Command Line Interface for Kubernetes.
Install
sudo apt install kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
Initialize Cluster
Command
sudo kubeadm init
Output
Generates certificates
Creates Control Plane
Generates join command
Important Directory
/etc/kubernetes
Important Files
admin.conf
controller-manager.conf
scheduler.conf
kubelet.conf
Configure kubectl
Create Directory
mkdir -p $HOME/.kube
Copy Configuration
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
Ownership
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Join Worker Nodes
Command
kubeadm join ControlPlaneIPAddress:6443 --token TokenValue --discovery-token-ca-cert-hash sha256:HashValue
Verify
kubectl get nodes
Pod Network
Definition
Every Pod requires network communication with every other Pod.
Common Plugins
Calico
Flannel
Cilium
Weave Net
Example
kubectl apply -f calico.yaml
Verify Cluster
kubectl get nodes
kubectl get pods -A
kubectl cluster-info
kubectl get namespaces
kubectl get componentstatuses
kubectl version
kubectl describe node NodeName
Kubernetes Directory Structure
/etc/kubernetes
Cluster Configuration
Certificates
kubeconfig Files
/etc/kubernetes/manifests
Static Pod Manifests
/etc/kubernetes/pki
Certificates
Private Keys
/var/lib/kubelet
kubelet Data
Pod Information
Volume Mounts
/var/lib/etcd
Cluster Database
/var/log
System Logs
/var/log/pods
Pod Logs
/var/log/containers
Container Logs
Enterprise High Availability Cluster
Multiple Control Plane Nodes
Three or Five Control Plane Nodes
External Load Balancer
HAProxy
NGINX
F5
External etcd Cluster
Three Nodes
Five Nodes
Security
Certificates
X509 Certificates
Public Key Infrastructure
PKI
Authentication
Client Certificates
Tokens
Authorization
Role Based Access Control
Admission Controllers
Security Validation
Secrets
Store Passwords
API Keys
Tokens
Firewall Ports
6443
Kubernetes API Server
2379
etcd Client
2380
etcd Peer Communication
10250
kubelet API
10257
Controller Manager
10259
Scheduler
Enterprise Troubleshooting
Services
systemctl status kubelet
systemctl restart kubelet
Logs
journalctl -u kubelet
journalctl -xe
Cluster
kubectl get events
kubectl describe pod PodName
kubectl logs PodName
kubectl get all -A
Container Runtime
systemctl status containerd
Network
ip addr
ip route
ss -tulnp
DNS
nslookup
dig
ping
Enterprise Best Practices
Separate Control Plane and Worker Nodes
Always Use Static IP Addresses
Synchronize Time Using Network Time Protocol
Use Enterprise Linux Distributions
Enable Automatic Certificate Rotation
Backup etcd Regularly
Restrict Root Login
Use SSH Keys Instead of Passwords
Enable Role Based Access Control
Use Namespaces for Team Isolation
Monitor Cluster Using Prometheus and Grafana
Aggregate Logs Using Elasticsearch Logstash Kibana
Scan Images Before Deployment
Use GitOps with Git and Argo CD
Keep Kubernetes Updated
Document Every Configuration Change