āļŠāļąāļĄāļ āļēāļĐāļāđ Kubernetes: āļāļāļīāļāļēāļĒ Pods, Services āđāļĨāļ° Deployments āļāļĒāđāļēāļāļĨāļ°āđāļāļĩāļĒāļ
āļāļģāļāļēāļĄāļŠāļąāļĄāļ āļēāļĐāļāđ Kubernetes āđāļāļĩāđāļĒāļ§āļāļąāļ Pods, Services āđāļĨāļ° Deployments āļāļĢāđāļāļĄāļāļąāļ§āļāļĒāđāļēāļ YAML āļāļĨāđāļ networking āļ āļēāļĒāđāļ āđāļĨāļ°āļāļĨāļĒāļļāļāļāđ scaling āļŠāļģāļŦāļĢāļąāļāļāļĩ 2026

āđāļāļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļāđāļāļēāļāļāļĩāđāđāļāļĩāđāļĒāļ§āļāđāļāļāļāļąāļ Kubernetes āļāļģāļāļēāļĄāļĄāļąāļāļāļ°āđāļāđāļāđāļāļāļĩāđāļāļāļāđāļāđāļāļāđāļāļ·āđāļāļāļēāļāļŠāļēāļĄāļāļĢāļ°āđāļ āļ āđāļāđāđāļāđ Pods, Services āđāļĨāļ° Deployments āļāļēāļĢāđāļāđāļēāđāļāļ§āđāļēāļŠāļīāđāļāđāļŦāļĨāđāļēāļāļĩāđāļāļģāļāļēāļāļĢāđāļ§āļĄāļāļąāļāļāļĒāđāļēāļāđāļĢ āļāļąāđāļāđāļāđāļāļēāļĢāļāļąāļāļŠāļĢāļĢāļāļāļāđāļāļāđāļāļāļĢāđ āļāļēāļĢāļāļģāļŦāļāļāđāļŠāđāļāļāļēāļāđāļāļĢāļ·āļāļāđāļēāļĒ āđāļāļāļāļāļķāļāļāļēāļĢāļāļąāļāđāļāļāđāļāļāļāđāļāļĒāđāļāđāļāļāđāļāļĒāđāļ āļāļ°āļāđāļ§āļĒāđāļĒāļāļāļđāđāļŠāļĄāļąāļāļĢāļāļĩāđāļāļģāļāļģāļāļģāļāļąāļāļāļ§āļēāļĄāđāļāđāļāļāļāļāļēāļāļāļđāđāļāļĩāđāļŠāļēāļĄāļēāļĢāļāļāļāļāđāļāļāļĢāļ°āļāļāļŠāļģāļŦāļĢāļąāļ production āđāļāđāļāļĢāļīāļ
āļāļđāđāļĄāļ·āļāļāļĩāđāļāļ°āļāļāļīāļāļēāļĒāđāļāđāļĨāļ°āļāļāļāđāļāļĢāļ°āļāļāļāļāđāļ§āļĒ YAML āļĢāļ°āļāļąāļ production āļāļāļīāļāļēāļĒāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļ āļēāļĒāđāļāļāļĩāđāļāļđāđāļŠāļąāļĄāļ āļēāļĐāļāđāđāļŦāđāļāļ§āļēāļĄāļŠāļģāļāļąāļ āđāļĨāļ°āļāļĢāļāļāļāļĨāļļāļĄāļāļģāļāļēāļĄāļāļĩāđāļāļāļāđāļāļĒāđāļāļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļāđāļāļģāđāļŦāļāđāļ DevOps āđāļĨāļ° Platform Engineering
Pod āđāļāđāļŠāļģāļŦāļĢāļąāļāļĢāļąāļāļāļāļāđāļāļāđāļāļāļĢāđāļŦāļāļķāđāļāļāļąāļ§āļŦāļĢāļ·āļāļĄāļēāļāļāļ§āđāļēāļāļāđāļŦāļāļāđāļāļĩāļĒāļ§ Deployment āđāļāđāļāļąāļāļāļēāļĢ Pod āļŦāļĨāļēāļĒāđ replica āđāļĨāļ°āļāļēāļĢ rollout āļŠāđāļ§āļ Service āļāļąāļāļŦāļē endpoint āđāļāļĢāļ·āļāļāđāļēāļĒāļāļĩāđāļĄāļĩāļāļ§āļēāļĄāđāļŠāļāļĩāļĒāļĢāđāļāļ·āđāļāđāļāđāļēāļāļķāļ Pod āđāļŦāļĨāđāļēāļāļąāđāļ āļāļāļāđāļāđāļāļāđāļāļąāđāļāļŠāļēāļĄāļāļĩāđāļāļĢāļāļāļāļĨāļļāļĄāļāļēāļĢāļāļąāļāļāļēāļĢ workload āļāļĢāļ°āļĄāļēāļ 80% āđāļ Kubernetes cluster āļāļĩāđāļĢāļąāļāđāļ§āļāļĢāđāļāļąāļ v1.35 āļŦāļĢāļ·āļāđāļŦāļĄāđāļāļ§āđāļē
āļāļģāļāļ§āļēāļĄāđāļāđāļēāđāļ Kubernetes Pods: āļŦāļāđāļ§āļĒāļāļĩāđāđāļĨāđāļāļāļĩāđāļŠāļļāļāļāļĩāđāļŠāļēāļĄāļēāļĢāļ Deploy āđāļāđ
Pod āļāļ·āļāļŦāļāđāļ§āļĒāļāļ·āđāļāļāļēāļāļāļāļāļāļēāļĢāļāļąāļāļŠāļĢāļĢāđāļ Kubernetes āļāļķāđāļāļŦāđāļāļŦāļļāđāļĄāļāļāļāđāļāļāđāļāļāļĢāđāļŦāļāļķāđāļāļāļąāļ§āļŦāļĢāļ·āļāļĄāļēāļāļāļ§āđāļēāļāļĩāđāđāļāļĢāđ network namespace, IPC namespace āđāļĨāļ° storage volumes āđāļāļĩāļĒāļ§āļāļąāļ āļāļāļāđāļāļāđāļāļāļĢāđāļāļļāļāļāļąāļ§āđāļ Pod āļāļ°āđāļāđāļĢāļąāļ IP address āđāļāļĩāļĒāļ§āļāļąāļāđāļĨāļ°āļŠāļēāļĄāļēāļĢāļāļŠāļ·āđāļāļŠāļēāļĢāļāļąāļāļāļāļāđāļāļāđāļāļāļĢāđāļāļĩāđāļāđāļāļāļāđāļēāļ localhost āđāļāđ
āļĢāļđāļāđāļāļ single-container Pod āđāļāđāļāļāļĩāđāļāļīāļĒāļĄāļĄāļēāļāļāļĩāđāļŠāļļāļ Multi-container Pods āļĄāļĩāđāļ§āđāļŠāļģāļŦāļĢāļąāļāļŠāļāļēāļāļāļēāļĢāļāđ sidecar āđāļāđāļ log collectors, service meshes āļŦāļĢāļ·āļ init containers āļāļĩāđāđāļāļĢāļĩāļĒāļĄ filesystem āļāđāļāļāļāļĩāđ process āļŦāļĨāļąāļāļāļ°āđāļĢāļīāđāļĄāļāļģāļāļēāļ
# api-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: api-server
labels:
app: api
version: v2
spec:
containers:
- name: api
image: registry.example.com/api:3.1.0
ports:
- containerPort: 8080
resources:
requests:
cpu: "250m" # 0.25 CPU core reserved
memory: "256Mi" # 256 MB reserved
limits:
cpu: "500m" # hard cap at 0.5 core
memory: "512Mi" # OOMKilled beyond this
readinessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 15
periodSeconds: 20āļāļĨāđāļāļ resources āļĄāļĩāļāļ§āļēāļĄāļŠāļģāļāļąāļāļĄāļēāļāđāļāļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļāđ requests āļāļģāļŦāļāļāļāļēāļĢāļāļąāļāļŠāļĢāļĢ āđāļāļĒ scheduler āļāļ°āļ§āļēāļ Pod āļāļāđāļŦāļāļāļāļĩāđāļĄāļĩāļāļĢāļąāļāļĒāļēāļāļĢāđāļāļĩāļĒāļāļāļ āļŠāđāļ§āļ limits āļāļąāļāļāļąāļāđāļāđāļāļĩāļāļāļģāļāļąāļāļŠāļđāļāļŠāļļāļāļāļāļ°āļĢāļąāļ āļāļēāļĢāđāļāđāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģāđāļāļīāļ limit āļāļ°āļāļģāđāļŦāđāđāļāļīāļ OOMKill āđāļāļāļāļ°āļāļĩāđāļāļēāļĢāđāļāđ CPU āđāļāļīāļāļāļ°āļāļģāđāļŦāđāđāļāļīāļ throttling
āļāļēāļĢāļāļąāđāļāļāđāļē memory limits āđāļāļĒāđāļĄāđāļĄāļĩ requests āļāļ°āļāļģāđāļŦāđāļāļēāļĢāļāļąāļāļŠāļĢāļĢāđāļĄāđāļŠāļēāļĄāļēāļĢāļāļāļēāļāđāļāļēāđāļāđ kubelet āļāļēāļāļ§āļēāļ Pod āļāļāđāļŦāļāļāļāļĩāđāđāļĄāđāļŠāļēāļĄāļēāļĢāļāļĢāļāļāļĢāļąāļ workload āđāļāđāļāļĢāļīāļ āļāļ§āļĢāļāļąāđāļāļāđāļēāļāļąāđāļ requests āđāļĨāļ° limits āđāļŠāļĄāļāļŠāļģāļŦāļĢāļąāļ production Pods
Pod Lifecycle Phases āđāļĨāļ° Restart Policies
Kubernetes āļāļīāļāļāļēāļĄ Pod āđāļāđāļĨāļ°āļāļąāļ§āļāđāļēāļāļŦāđāļēāđāļāļŠ āđāļāđāđāļāđ Pending, Running, Succeeded, Failed āđāļĨāļ° Unknown āļāļđāđāļŠāļąāļĄāļ āļēāļĐāļāđāļĄāļąāļāļāļ°āļāļēāļĄāļ§āđāļēāļāļ°āđāļĢāļāļģāđāļŦāđāđāļāļīāļāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāđāļāđāļĨāļ°āļāļĢāļąāđāļ
| Phase | āļāļ§āļēāļĄāļŦāļĄāļēāļĒ | āļŠāļēāđāļŦāļāļļāļāļąāđāļ§āđāļ | |-------|---------|-------------| | Pending | āļāļđāļāļāļąāļāļŠāļĢāļĢāđāļĨāđāļ§āđāļāđāļĒāļąāļāđāļĄāđāļĢāļąāļ | Image pull, āļāļĢāļąāļāļĒāļēāļāļĢāđāļĄāđāđāļāļĩāļĒāļāļāļ | | Running | āļĄāļĩāļāļāļāđāļāļāđāļāļāļĢāđāļāļĒāđāļēāļāļāđāļāļĒāļŦāļāļķāđāļāļāļąāļ§āļāļģāļāļēāļāļāļĒāļđāđ | āļāļēāļĢāļāļģāļāļēāļāļāļāļāļī | | Succeeded | āļāļāļāđāļāļāđāļāļāļĢāđāļāļąāđāļāļŦāļĄāļāļāļāļāļāđāļ§āļĒāđāļāđāļ 0 | Batch jobs, init containers | | Failed | āļĄāļĩāļāļāļāđāļāļāđāļāļāļĢāđāļāļĒāđāļēāļāļāđāļāļĒāļŦāļāļķāđāļāļāļąāļ§āļāļāļāļāđāļ§āļĒāđāļāđāļāļāļĩāđāđāļĄāđāđāļāđāļĻāļđāļāļĒāđ | āđāļāļāļāļĨāļīāđāļāļāļąāļāļĨāđāļĄ, OOMKill | | Unknown | āļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļāļąāļāđāļŦāļāļāļŦāļēāļĒāđāļ | Network partition, āđāļŦāļāļāļĨāđāļĄāđāļŦāļĨāļ§ |
āļāļīāļĨāļāđ restartPolicy āļāļ§āļāļāļļāļĄāļ§āđāļēāļāļ°āđāļāļīāļāļāļ°āđāļĢāļāļķāđāļāļŦāļĨāļąāļāļāļēāļāļāļāļāđāļāļāđāļāļāļĢāđāļŦāļĒāļļāļāļāļģāļāļēāļ Always (āļāđāļēāđāļĢāļīāđāļĄāļāđāļāļŠāļģāļŦāļĢāļąāļ Deployments) āļāļ°āļĢāļĩāļŠāļāļēāļĢāđāļāđāļĄāđāļ§āđāļē exit code āļāļ°āđāļāđāļāļāļ°āđāļĢ OnFailure āļāļ°āļĢāļĩāļŠāļāļēāļĢāđāļāđāļāļāļēāļ°āđāļĄāļ·āđāļāļāļāļāļāđāļ§āļĒāđāļāđāļāļāļĩāđāđāļĄāđāđāļāđāļĻāļđāļāļĒāđ āļāļķāđāļāļĄāļĩāļāļĢāļ°āđāļĒāļāļāđāļŠāļģāļŦāļĢāļąāļ Jobs āļŠāđāļ§āļ Never āļāļĨāđāļāļĒāđāļŦāđāļāļāļāđāļāļāđāļāļāļĢāđāļŦāļĒāļļāļāļāļģāļāļēāļ āđāļāđāļŠāļģāļŦāļĢāļąāļ debug Pods āđāļāļāļĢāļąāļāļāļĢāļąāđāļāđāļāļĩāļĒāļ§
# batch-job-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: data-migration
spec:
restartPolicy: OnFailure # restart only on crash
containers:
- name: migrate
image: registry.example.com/migrate:1.0.0
command: ["python", "migrate.py"]
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: db-credentials
key: connection-stringāļĢāļđāļāđāļāļ valueFrom.secretKeyRef āļāđāļ§āļĒāđāļŦāđāļāđāļāļĄāļđāļĨāļāļĩāđāļĨāļ°āđāļāļĩāļĒāļāļāđāļāļāđāļĄāđāļāđāļāļāļāļĒāļđāđāđāļ manifest Kubernetes Secrets āļāļđāļ encode āļāđāļ§āļĒ base64 āđāļāļĒāļāđāļēāđāļĢāļīāđāļĄāļāđāļ āđāļĄāđāđāļāđāļāļđāļāđāļāđāļēāļĢāļŦāļąāļŠ āļŠāļģāļŦāļĢāļąāļ production āļāļ§āļĢāđāļāļīāļāđāļāđāļāļēāļ encryption at rest āļāđāļēāļ EncryptionConfiguration API āļŦāļĢāļ·āļāđāļāđ external secret manager āđāļāđāļ HashiCorp Vault
Kubernetes Deployments: āļāļēāļĢāļāļąāļāļāļēāļĢ Rollouts āđāļĨāļ° Scaling āđāļāļ Declarative
Deployment āļŠāļĢāđāļēāļāđāļĨāļ°āļāļąāļāļāļēāļĢ ReplicaSets āļāļķāđāļāļāļ°āļāļąāļāļāļēāļĢ Pods āļāđāļāđāļ Deployment controller āļāļ°āļāļāļĒāļŠāļąāļāđāļāļ desired state āđāļĨāļ°āļāļĢāļąāļāđāļŦāđāļāļĢāļāļāļąāļāļāļ§āļēāļĄāđāļāđāļāļāļĢāļīāļ āđāļāļĒāđāļāļīāđāļĄ Pods āđāļĄāļ·āđāļ scale up āđāļāļāļāļĩāđ Pods āļĢāļ°āļŦāļ§āđāļēāļ rollouts āđāļĨāļ° rollback āđāļĄāļ·āđāļ health checks āļĨāđāļĄāđāļŦāļĨāļ§
āļāļēāļĢāļŠāļĢāđāļēāļ Pod āđāļāļĒāļāļĢāļāđāļāļāļāļ°āđāļĄāđāđāļŦāļĄāļēāļ°āļŠāļĄāđāļ production āđāļĨāļĒ Deployments āļāļąāļāļŦāļēāļāļēāļĢāļāļąāļāļāļēāļĢ replica, rolling updates, rollback history āđāļĨāļ°āļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļāļēāļĢ pause/resume
# api-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-server
labels:
app: api
spec:
replicas: 3 # run 3 identical Pods
revisionHistoryLimit: 5 # keep 5 old ReplicaSets for rollback
selector:
matchLabels:
app: api # must match Pod template labels
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1 # at most 1 Pod down during update
maxSurge: 1 # at most 1 extra Pod during update
template:
metadata:
labels:
app: api
version: v2
spec:
containers:
- name: api
image: registry.example.com/api:3.1.0
ports:
- containerPort: 8080
resources:
requests:
cpu: "250m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
readinessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 10āļŠāđāļ§āļ strategy.rollingUpdate āļāļģāļŦāļāļāļāļĪāļāļīāļāļĢāļĢāļĄāļāļēāļĢ deploy āđāļāļāđāļĄāđāļĄāļĩ downtime āļāđāļ§āļĒ maxUnavailable: 1 āđāļĨāļ° maxSurge: 1 Kubernetes āļāļ°āļŠāļĢāđāļēāļ Pod āđāļŦāļĄāđāļŦāļāļķāđāļāļāļąāļ§ āļĢāļāđāļŦāđāļāđāļēāļ readiness checks āđāļĨāđāļ§āļāļķāļāļĒāļļāļāļī Pod āđāļāđāļēāļŦāļāļķāđāļāļāļąāļ§ āļ§āļāļāļĢāļāļĩāđāļāļ°āļāļģāļāđāļģāļāļāļāļ§āđāļē replicas āļāļąāđāļāļŦāļĄāļāļāļ°āļĢāļąāļāđāļ§āļāļĢāđāļāļąāļāđāļŦāļĄāđ
āļāļēāļĢ Rollback Kubernetes Deployment āļāļĩāđāļĨāđāļĄāđāļŦāļĨāļ§
Rollbacks āđāļāđāļāļŦāļąāļ§āļāđāļāļāļĩāđāļāļāļāđāļāļĒāđāļāļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļāđ Deployment controller āđāļāđāļ ReplicaSets āđāļāđāļēāđāļ§āđ (āļāļ§āļāļāļļāļĄāđāļāļĒ revisionHistoryLimit) āļāļąāļāļāļąāđāļāļāļēāļĢ rollback āļāļķāļāļāļģāđāļāđāļāļąāļāļāļĩ āđāļĄāđāļāđāļāļ rebuild image
# Check rollout status
kubectl rollout status deployment/api-server
# View revision history
kubectl rollout history deployment/api-server
# Roll back to previous version
kubectl rollout undo deployment/api-server
# Roll back to specific revision
kubectl rollout undo deployment/api-server --to-revision=3āļāļģāļŠāļąāđāļ undo āļāļ°āđāļāđāđāļ Deployment spec āđāļŦāđāļāļĢāļāļāļąāļ Pod template āļāļāļ revision āđāļāđāļēāļŦāļĄāļēāļĒ āļāļēāļāļāļąāđāļ rolling update strategy āļāļ°āļāļđāļāļāļģāļĄāļēāđāļāđāļāļēāļĄāļāļāļāļī āđāļāļĒāļāđāļāļĒāđ āđāļāļāļāļĩāđ Pods āļāļąāļāļāļļāļāļąāļāļāđāļ§āļĒāđāļ§āļāļĢāđāļāļąāļ rollback
āļāļĢāđāļāļĄāļāļĩāđāļāļ°āļāļīāļāļīāļāļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļāđ DevOps āđāļĨāđāļ§āļŦāļĢāļ·āļāļĒāļąāļāļāļĢāļąāļ?
āļāļķāļāļāļāļāđāļ§āļĒāļāļąāļ§āļāļģāļĨāļāļāđāļāļāđāļāđāļāļāļ, flashcards āđāļĨāļ°āđāļāļāļāļāļŠāļāļāđāļāļāļāļīāļāļāļĢāļąāļ
Kubernetes Services: Networking āļāļĩāđāļĄāļĩāļāļ§āļēāļĄāđāļŠāļāļĩāļĒāļĢāļŠāļģāļŦāļĢāļąāļ Pods āļāļĩāđāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāđāļāđ
Pods āļĄāļĩāļĨāļąāļāļĐāļāļ°āļāļąāđāļ§āļāļĢāļēāļ§ āļāļ§āļāļĄāļąāļāļāļ°āđāļāđāļĢāļąāļ IP addresses āđāļŦāļĄāđāļāļļāļāļāļĢāļąāđāļāļāļĩāđāļĢāļĩāļŠāļāļēāļĢāđāļ Service āđāļāđāļāļąāļāļŦāļēāļāļĩāđāđāļāļĒāļāļąāļāļŦāļē virtual IP (ClusterIP) āđāļĨāļ° DNS name āļāļĩāđāļĄāļĩāļāļ§āļēāļĄāđāļŠāļāļĩāļĒāļĢ āļāļķāđāļāļāļ°āđāļŠāđāļāļāļēāļ traffic āđāļāļĒāļąāļ Pods āļāļĩāđāļĄāļĩāļŠāļļāļāļ āļēāļāļāļĩāļāļĩāđāļāļĢāļāļāļąāļ label selector
āļāļāļĄāđāļāđāļāļāļāđ kube-proxy āļāļāđāļāđāļĨāļ°āđāļŦāļāļāļāļ°āļāļąāđāļāļāđāļē iptables āļŦāļĢāļ·āļ IPVS rules āđāļāļ·āđāļāļāļĢāļ°āļāļēāļĒ traffic āđāļāļĒāļąāļ backend Pods āđāļĄāļ·āđāļ Pod āļĨāđāļĄāđāļŦāļĨāļ§āđāļ readiness probe Endpoints controller āļāļ°āļĨāļāļĄāļąāļāļāļāļāļāļēāļ Service āļāļģāđāļŦāđāđāļĄāđāļĄāļĩ traffic āđāļāļāļķāļ instances āļāļĩāđāđāļĄāđāļĄāļĩāļŠāļļāļāļ āļēāļāļāļĩ
# api-service.yaml
apiVersion: v1
kind: Service
metadata:
name: api-service
spec:
type: ClusterIP # internal-only by default
selector:
app: api # routes to Pods with this label
ports:
- name: http
port: 80 # Service port (what clients use)
targetPort: 8080 # Pod port (where container listens)
protocol: TCPāđāļĄāļ·āđāļāļŠāļĢāđāļēāļāđāļĨāđāļ§ Pod āđāļāđ āđāļ cluster āļŠāļēāļĄāļēāļĢāļāđāļāđāļēāļāļķāļ Service āļāļĩāđāđāļāđāļāļĩāđ api-service.default.svc.cluster.local (āļŦāļĢāļ·āļāđāļāđ api-service āļ āļēāļĒāđāļ namespace āđāļāļĩāļĒāļ§āļāļąāļ) CoreDNS āļāļ°āļāļąāļāļāļēāļĢāļāļēāļĢāđāļāļĨāļāļāļ·āđāļ
āļāļĢāļ°āđāļ āļāļāļāļ Service: ClusterIP, NodePort āđāļĨāļ° LoadBalancer
āļāļđāđāļŠāļąāļĄāļ āļēāļĐāļāđāļāļēāļāļŦāļ§āļąāļāđāļŦāđāļāļđāđāļŠāļĄāļąāļāļĢāļāļāļīāļāļēāļĒ Service types āļŦāļĨāļąāļāļŠāļēāļĄāļāļĢāļ°āđāļ āļāđāļĨāļ°āđāļĄāļ·āđāļāđāļāļāļ§āļĢāđāļāđāđāļāđāļĨāļ°āļāļĢāļ°āđāļ āļ
| Type | Access Scope | āļāļĢāļāļĩāļāļēāļĢāđāļāđāļāļēāļ |
|------|-------------|----------|
| ClusterIP | āļ āļēāļĒāđāļ cluster āđāļāđāļēāļāļąāđāļ | Backend APIs, databases, caches |
| NodePort | External āļāđāļēāļ <NodeIP>:<Port> | Development, bare-metal clusters |
| LoadBalancer | External āļāđāļēāļ cloud LB | Production traffic āļāļ AWS/GCP/Azure |
# api-loadbalancer.yaml
apiVersion: v1
kind: Service
metadata:
name: api-public
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: "nlb" # AWS NLB
spec:
type: LoadBalancer
selector:
app: api
ports:
- name: https
port: 443
targetPort: 8080
protocol: TCPāļāļĢāļ°āđāļ āļ LoadBalancer āļāļ°āļāļĢāļ°āļāļļāđāļāđāļŦāđ load balancer controller āļāļāļ cloud provider āļāļąāļāļŦāļē external endpoint āļāļ AWS āļāļ°āļŠāļĢāđāļēāļ NLB āļŦāļĢāļ·āļ ALB āļāļķāđāļāļāļĒāļđāđāļāļąāļ annotations āļāļ bare-metal clusters āļāļĩāđāđāļĄāđāļĄāļĩ cloud integration MetalLB āļŦāļĢāļ·āļ kube-vip āļāļ°āļāļģāļŦāļāđāļēāļāļĩāđāļāļĩāđ
āļ Kubernetes v1.35 Ingress NGINX controller āđāļāđāļāļđāļāļĒāļāđāļĨāļīāļāļāļĒāđāļēāļāđāļāđāļāļāļēāļāļāļēāļĢāđāļĨāđāļ§ Gateway API āđāļāđāļāļ§āļīāļāļĩāļāļēāļĢāļāļĩāđāđāļāļ°āļāļģāļŠāļģāļŦāļĢāļąāļ HTTP routing, TLS termination āđāļĨāļ° traffic splitting Clusters āđāļŦāļĄāđāļāļ§āļĢāđāļāđ Gateway API āļāļąāđāļāđāļāđāđāļĢāļīāđāļĄāļāđāļ
āļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļ Deployments āļāļąāļ Services āļāđāļ§āļĒ Label Selectors
āļāļēāļĢāđāļāļ·āđāļāļĄāđāļĒāļāļĢāļ°āļŦāļ§āđāļēāļ Deployment āđāļĨāļ° Service āļāļ·āļ label selector āđāļāđāļēāļāļąāđāļ āđāļĄāđāļĄāļĩāļāļēāļĢāļāđāļēāļāļāļīāļāđāļāļĒāļāļĢāļāļĢāļ°āļŦāļ§āđāļēāļāļŠāļāļāļāļāļāđāļāđāļāļāđ Service āļāļ°āļāļāļĒāļāļđ Pods āļāļĩāđāļĄāļĩ labels āļāļĢāļāļāļąāļ spec.selector āđāļĨāļ°āļāļđāđāļĨāļĢāļąāļāļĐāļēāļĢāļēāļĒāļāļēāļĢ Endpoints āđāļāļĒāļāļąāļāđāļāļĄāļąāļāļī
āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāđāļāļāđāļĒāļāļŠāđāļ§āļāļāļĩāđāļŦāļĄāļēāļĒāļāļ§āļēāļĄāļ§āđāļē Service āđāļāļĩāļĒāļ§āļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāđāļŠāđāļāļāļēāļāđāļāļĒāļąāļ Pods āļāļēāļāļŦāļĨāļēāļĒ Deployments āđāļāđ (āļĄāļĩāļāļĢāļ°āđāļĒāļāļāđāļŠāļģāļŦāļĢāļąāļ canary releases) āđāļĨāļ° Deployment āļŠāļēāļĄāļēāļĢāļāļāļđāļāđāļāļīāļāđāļāļĒāđāļāļĒāļŦāļĨāļēāļĒ Services (āļāļāļĢāđāļāļāđāļēāļāļāļąāļ āļĢāļ°āļāļąāļāļāļēāļĢāđāļāđāļēāļāļķāļāļāđāļēāļāļāļąāļ)
# canary-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-server-canary
spec:
replicas: 1
selector:
matchLabels:
app: api # same label as main Deployment
template:
metadata:
labels:
app: api # Service picks this up automatically
version: v3-canary
spec:
containers:
- name: api
image: registry.example.com/api:3.2.0-rc1
ports:
- containerPort: 8080āļāđāļ§āļĒ Deployment āļŦāļĨāļąāļāļāļĩāđāļĢāļąāļ 3 replicas āđāļĨāļ° canary āļāļĩāđāļĢāļąāļ 1 Service āļāļ°āļāļĢāļ°āļāļēāļĒāļāļĢāļ°āļĄāļēāļ 25% āļāļāļ traffic āđāļāļĒāļąāļ canary āđāļĄāđāļāđāļāļāđāļāļĨāļĩāđāļĒāļāļāļēāļĢāļāļąāđāļāļāđāļē Service label matching āļāļąāļāļāļēāļĢāļāļļāļāļāļĒāđāļēāļ
Horizontal Pod Autoscaling āļŠāļģāļŦāļĢāļąāļ Kubernetes Deployments
āļāļģāļāļ§āļ replica āđāļāļāļāļāļāļĩāđāļāļ°āļŠāļīāđāļāđāļāļĨāļ·āļāļāļāļĢāļąāļāļĒāļēāļāļĢāđāļāļāđāļ§āļ traffic āļāđāļģāđāļĨāļ°āđāļĄāđāđāļāļĩāļĒāļāļāļāđāļāļāđāļ§āļ traffic āļāļļāđāļ HorizontalPodAutoscaler (HPA) āļāļ°āļāļĢāļąāļāļāļģāļāļ§āļ replica āļāļēāļĄ metrics āļāļĩāđāļŠāļąāļāđāļāļāđāļāđ
# api-hpa.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: api-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: api-server
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70 # scale up above 70% CPU
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
behavior:
scaleDown:
stabilizationWindowSeconds: 300 # wait 5 min before scaling downHPA āļāļ°āļŠāļģāļĢāļ§āļ metrics server āļāļļāļ 15 āļ§āļīāļāļēāļāļĩāđāļāļĒāļāđāļēāđāļĢāļīāđāļĄāļāđāļ behavior.scaleDown.stabilizationWindowSeconds āļāđāļāļāļāļąāļāļāļēāļĢāļāļĢāļ°āļāļ·āļ āļāļķāđāļāđāļāđāļāļ§āļāļāļĢ scale-up/scale-down āļāļĩāđāđāļāļīāļāļāļķāđāļāđāļĢāđāļ§āđāļāļīāļāđāļāđāļāļ·āđāļāļāļāļēāļ traffic patterns āđāļāļāļĄāļĩāļāļąāļ
āļāļģāļāļēāļĄāļŠāļąāļĄāļ āļēāļĐāļāđ Kubernetes āļāļĩāđāļāļāļāđāļāļĒāđāļĨāļ°āļāļģāļāļāļ
āļāļģāļāļēāļĄāđāļŦāļĨāđāļēāļāļĩāđāļāļĢāļēāļāļāļāđāļģāđ āđāļāļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļāđāļāļģāđāļŦāļāđāļ DevOps āđāļĨāļ° Platform Engineering āļāļģāļāļāļāđāļāđāļĨāļ°āļāđāļāļĄāļļāđāļāđāļāđāļēāđāļāļāļĩāđāļāļ§āļēāļĄāļĨāļķāļāļāļĩāđāļāļđāđāļŠāļąāļĄāļ āļēāļĐāļāđāļāļēāļāļŦāļ§āļąāļ
āđāļāļīāļāļāļ°āđāļĢāļāļķāđāļāđāļĄāļ·āđāļ Pod āđāļāđāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģāđāļāļīāļ memory limit kubelet āļāļ°āļŠāđāļ SIGKILL āļāđāļēāļ OOM killer āļāļāļāđāļāļāđāļāļāļĢāđāļāļ°āļāļāļāļāđāļ§āļĒāđāļāđāļ 137 Deployment controller āļāļ°āļāļĢāļ§āļāļāļąāļ Pod āļāļĩāđāļĨāđāļĄāđāļŦāļĨāļ§āđāļĨāļ°āļŠāļĢāđāļēāļāļāļąāļ§āļāļāđāļāļ āļāļķāđāļāļāļĒāļđāđāļāļąāļ restart policy āđāļĨāļ° backoff delays
Kubernetes āļāļģāļŦāļāļāđāļŠāđāļāļāļēāļ traffic āđāļāļĒāļąāļ Pod āđāļ§āļāļĢāđāļāļąāļāđāļāļāļēāļ°āļĢāļ°āļŦāļ§āđāļēāļ canary releases āļāļĒāđāļēāļāđāļĢ
Service selector āļāļ°āļāļąāļāļāļđāđāļāļąāļ labels āļāļĩāđāđāļāļĢāđāļāļąāļ (āđāļāđāļ app: api) āļāļąāđāļ stable āđāļĨāļ° canary Deployments āđāļāđ label āļāļĩāđ āļāļēāļĢāļāļĢāļ°āļāļēāļĒ traffic āļāļ°āļŠāļąāļĄāļāļąāļāļāđāļāļąāļāļāļģāļāļ§āļ ready endpoints āļāļķāđāļ 3 stable replicas + 1 canary replica āļŦāļĄāļēāļĒāļāļ§āļēāļĄāļ§āđāļēāļāļĢāļ°āļĄāļēāļ 25% canary traffic āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļāđāļ traffic āļāļĩāđāđāļĄāđāļāļĒāļģ (āđāļāđāļ 5%) āđāļŦāđāđāļāđ Gateway API HTTPRoute āļāļąāļ weighted backends
readinessProbe āđāļĨāļ° livenessProbe āļāđāļēāļāļāļąāļāļāļĒāđāļēāļāđāļĢ
readiness probe āļāļ§āļāļāļļāļĄāļ§āđāļē Pod āļāļ°āļĢāļąāļ traffic āļāļēāļ Service āļŦāļĢāļ·āļāđāļĄāđ āļāļēāļĢāļĨāđāļĄāđāļŦāļĨāļ§āļāļāļ readiness probe āļāļ°āļĨāļ Pod āļāļāļāļāļēāļāļĢāļēāļĒāļāļēāļĢ Endpoints āđāļāđāđāļĄāđāļĢāļĩāļŠāļāļēāļĢāđāļ liveness probe āļāļ§āļāļāļļāļĄāļ§āđāļēāļāļāļāđāļāļāđāļāļāļĢāđāļāļ°āļāļđāļāļĢāļĩāļŠāļāļēāļĢāđāļāļŦāļĢāļ·āļāđāļĄāđ āļāļēāļĢāļĨāđāļĄāđāļŦāļĨāļ§āļāļāļ liveness probe āļāļ°āļāļģāđāļŦāđāđāļāļīāļāļāļēāļĢāļĢāļĩāļŠāļāļēāļĢāđāļāļāļāļāđāļāļāđāļāļāļĢāđ āļāļąāđāļāļŠāļāļāļŠāļēāļĄāļēāļĢāļāđāļāđ HTTP, TCP āļŦāļĢāļ·āļ exec checks
rolling updates āļĢāļąāļāļāļĢāļ°āļāļąāļāļ§āđāļēāļāļ°āđāļĄāđāļĄāļĩ downtime āļāļĒāđāļēāļāđāļĢ
Deployment controller āļāļ°āļŠāļĢāđāļēāļ Pods āđāļŦāļĄāđāļāđāļāļāļĒāļļāļāļī Pods āđāļāđāļē āļāļ§āļāļāļļāļĄāđāļāļĒ maxSurge āđāļĨāļ° maxUnavailable Pods āđāļŦāļĄāđāļāđāļāļāļāđāļēāļ readiness probes āļāđāļāļāļāļĩāđ Pods āđāļāđāļēāļāļ°āļāļđāļ drained terminationGracePeriodSeconds (āļāđāļēāđāļĢāļīāđāļĄāļāđāļ: 30s) āđāļŦāđāđāļ§āļĨāļē in-flight requests āđāļŠāļĢāđāļāļŠāļīāđāļāļāđāļāļ SIGKILL
āļāļēāļĢāđāļāļĢāļĩāļĒāļĄāļāļąāļ§āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļāđ Kubernetes āļāđāļāļāļāļēāļĢāļāļēāļĢāļāļķāļāļāļāļīāļāļąāļāļī YAML āļāļĢāļīāļāđ āđāļĄāđāđāļāđāđāļāđāļāļĪāļĐāļāļĩ āļāļģāļāļēāļĄāļŠāļąāļĄāļ āļēāļĐāļāđ DevOps āļāļ SharpSkill āļāļĢāļāļāļāļĨāļļāļĄāļŦāļąāļ§āļāđāļāđāļŦāļĨāđāļēāļāļĩāđāļāđāļ§āļĒāđāļāļāļāļķāļāļŦāļąāļāđāļāļāđāļāđāļāļāļ
āđāļĢāļīāđāļĄāļāļķāļāļāđāļāļĄāđāļĨāļĒ!
āļāļāļŠāļāļāļāļ§āļēāļĄāļĢāļđāđāļāļāļāļāļļāļāļāđāļ§āļĒāļāļąāļ§āļāļģāļĨāļāļāļŠāļąāļĄāļ āļēāļĐāļāđāđāļĨāļ°āđāļāļāļāļāļŠāļāļāđāļāļāļāļīāļāļāļĢāļąāļ
āļŠāļĢāļļāļ
- Pods āļāļ·āļāļŦāļāđāļ§āļĒāļāļēāļĢāļāļąāļāļŠāļĢāļĢ āļāļ§āļĢāļāļąāđāļāļāđāļē
requestsāđāļĨāļ°limitsāļāļāļāļāļĢāļąāļāļĒāļēāļāļĢāđāļŠāļĄāļ āđāļĨāļ°āļāļģāļŦāļāļāļāđāļēāļāļąāđāļ readiness āđāļĨāļ° liveness probes - Deployments āļāļąāļāļāļēāļĢāļāļģāļāļ§āļ replica, rolling updates āđāļĨāļ° rollback history āļāđāļēāļ ReplicaSets āđāļĄāđāļāļ§āļĢāļŠāļĢāđāļēāļ bare Pods āđāļ production
- Services āļāļąāļāļŦāļē networking āļāļĩāđāļĄāļĩāļāļ§āļēāļĄāđāļŠāļāļĩāļĒāļĢāļāđāļēāļ label selectors āđāļĨāļ° virtual IPs āđāļāđ ClusterIP āļŠāļģāļŦāļĢāļąāļ internal traffic āđāļĨāļ° LoadBalancer āļŠāļģāļŦāļĢāļąāļ external
- āļāļēāļĢāđāļāļ·āđāļāļĄāđāļĒāļāļĢāļ°āļŦāļ§āđāļēāļ Deployments āđāļĨāļ° Services āļāļīāļāļāļēāļĄ label āđāļāđāļēāļāļąāđāļ āļāļģāđāļŦāđāļŠāļēāļĄāļēāļĢāļāļāļģ canary patterns āđāļāđāđāļāļĒāđāļĄāđāļāđāļāļāđāļāļĨāļĩāđāļĒāļāļāļēāļĢāļāļąāđāļāļāđāļē
- HPA āļāļ° scale Deployments āļāļēāļĄ CPU/memory metrics āļāļ§āļĢāđāļāđ
stabilizationWindowSecondsāđāļāļ·āđāļāļāđāļāļāļāļąāļāļāļēāļĢāļāļĢāļ°āļāļ·āļ - Gateway API āđāļāļāļāļĩāđ Ingress NGINX āļ Kubernetes v1.35 āđāļāļĢāđāļāļāļāđāđāļŦāļĄāđāļāļ§āļĢāđāļāđāļāļēāļāļāļąāđāļāđāļāđāđāļĢāļīāđāļĄāļāđāļ
- āļāļķāļāļāļāļīāļāļąāļāļīāļāļąāļ YAML manifests āļāļĢāļīāļāđāļĨāļ°āļāļģāļŠāļąāđāļ
kubectlāđāļāļāļāļēāļĢāļāđāļāļāļāļģāļāļģāļāļģāļāļąāļāļāļ§āļēāļĄ
āđāļāđāļ
āđāļāļĢāđ
āļāļāļāļ§āļēāļĄāļāļĩāđāđāļāļĩāđāļĒāļ§āļāđāļāļ

āļāļģāļāļēāļĄāļŠāļąāļĄāļ āļēāļĐāļāđ DevOps āļāļĩāđāļāļģāđāļāđāļ: āļāļđāđāļĄāļ·āļāļāļāļąāļāļŠāļĄāļāļđāļĢāļāđ 2026
āđāļāļĢāļĩāļĒāļĄāļāļąāļ§āļŠāļąāļĄāļ āļēāļĐāļāđ DevOps āļāđāļ§āļĒāļāļģāļāļēāļĄāļāļĩāđāļāđāļāļāļĢāļđāđāđāļāļĩāđāļĒāļ§āļāļąāļ CI/CD, Kubernetes, Docker, Terraform āđāļĨāļ°āđāļāļ§āļāļāļīāļāļąāļāļī SRE āļāļĢāđāļāļĄāļāļģāļāļāļāļĨāļ°āđāļāļĩāļĒāļ

ArgoCD āđāļĨāļ° GitOps āļŠāļģāļŦāļĢāļąāļ Kubernetes: āļāļđāđāļĄāļ·āļāļāļāļąāļāļŠāļĄāļāļđāļĢāļāđāđāļĨāļ°āļāļģāļāļēāļĄāļŠāļąāļĄāļ āļēāļĐāļāđāļāļēāļ 2026
āđāļĢāļĩāļĒāļāļĢāļđāđāļāļēāļĢāđāļāđāļāļēāļ ArgoCD āļŠāļģāļŦāļĢāļąāļ GitOps āļāļ Kubernetes āļāļĢāļāļāļāļĨāļļāļĄāļāļąāđāļāđāļāđāļāļ·āđāļāļāļēāļāđāļāļāļāļāļķāļāđāļāļāļāļīāļāļāļąāđāļāļŠāļđāļ āļāļĢāđāļāļĄāļāļģāļāļēāļĄāļŠāļąāļĄāļ āļēāļĐāļāđāļāļēāļāļāļĩāđāļāļāļāđāļāļĒāđāļāļāļĩ 2026

Kubernetes: āļāļĩāļāļĨāļāļĒāđāļāļāļāļĨāļīāđāļāļāļąāļāđāļĢāļ
āļāļđāđāļĄāļ·āļāđāļāļīāļāļāļāļīāļāļąāļāļīāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĩāļāļĨāļāļĒāđāļāļāļāļĨāļīāđāļāļāļąāļāļāļ Kubernetes āļāļąāđāļāđāļāđāļāļēāļĢāļāļīāļāļāļąāđāļ minikube āđāļāļāļāļāļķāļ Deployments, Services āđāļĨāļ° ConfigMaps āļāļĢāđāļāļĄāļāļąāļ§āļāļĒāđāļēāļāļāļĩāđāđāļāđāļāļĢāļđāļāļāļĢāļĢāļĄ