Manage all Kubernetes workload types: StatefulSets, DaemonSets, Jobs, CronJobs, and ReplicaSets.
Manage stateful applications with ordered pod creation and stable network identities.
| Feature | Description |
|---|---|
| Ordered Deployment | Pods created sequentially (pod-0, pod-1, pod-2) |
| Stable Network IDs | Each pod gets predictable DNS name |
| Persistent Storage | PVCs follow pod across reschedules |
| Ordered Scaling | Scale up/down maintains order |
| Column | Description |
|---|---|
| Name | StatefulSet name |
| Namespace | Kubernetes namespace |
| Replicas | Desired / Current / Ready |
| Age | Time since creation |
Scaling Behavior:
Perform rolling restart:
Run exactly one pod on every node (or subset of nodes with selectors).
| Feature | Description |
|---|---|
| Node Coverage | One pod per node automatically |
| Automatic Scheduling | New nodes get pod automatically |
| Node Selectors | Target specific node labels |
| Tolerate Taints | Run on tainted nodes (e.g., master) |
| Column | Description |
|---|---|
| Name | DaemonSet name |
| Namespace | Kubernetes namespace |
| Desired | Pods that should exist |
| Current | Pods currently running |
| Ready | Pods passing readiness checks |
| Nodes | Nodes covered |
| Use Case | Example |
|---|---|
| Log Collection | Fluentd, Filebeat running on every node |
| Monitoring | Node exporter, metrics collectors |
| Networking | CNI plugins, kube-proxy |
| Security | Security agents, compliance scanners |
Rolling restart across all nodes:
Run pods to completion for batch processing tasks.
| Feature | Description |
|---|---|
| Completions | Number of successful pod completions required |
| Parallelism | Number of pods running concurrently |
| Retries | Automatic restart on failure (backoffLimit) |
| TTL After Finished | Auto-delete completed jobs |
| Column | Description |
|---|---|
| Name | Job name |
| Namespace | Kubernetes namespace |
| Completions | Successful / Desired |
| Duration | Time since start or completion time |
| Age | Time since creation |
| Status | Meaning |
|---|---|
| Running | Pods actively executing |
| Complete | Required completions reached |
| Failed | Exceeded backoff limit |
Note: Completed job pods remain until job is deleted (for log inspection).
Schedule recurring jobs using cron syntax.
| Feature | Description |
|---|---|
| Cron Schedule | Standard cron syntax (0 2 * * *) |
| Concurrency Policy | Allow, Forbid, or Replace concurrent jobs |
| Suspend | Pause scheduling without deleting |
| Job History | Keeps last N successful and failed jobs |
| Column | Description |
|---|---|
| Name | CronJob name |
| Namespace | Kubernetes namespace |
| Schedule | Cron expression |
| Suspend | Whether scheduling is paused |
| Last Schedule | Time of last job creation |
| Active Jobs | Currently running jobs |
Run job immediately without waiting for schedule:
Pause scheduling temporarily:
| Schedule | Description |
|---|---|
0 2 * * * | Daily at 2:00 AM |
0 */6 * * * | Every 6 hours |
0 0 * * 0 | Weekly on Sunday at midnight |
0 0 1 * * | Monthly on the 1st |
*/15 * * * * | Every 15 minutes |
Manage identical pod replicas (usually controlled by Deployments).
| Feature | Description |
|---|---|
| Pod Replicas | Maintains desired number of pod copies |
| Label Selector | Identifies pods to manage |
| Owner References | Usually owned by Deployment |
| Column | Description |
|---|---|
| Name | ReplicaSet name (usually deployment-hash) |
| Namespace | Kubernetes namespace |
| Replicas | Desired / Current / Ready |
| Deployment | Parent deployment (if any) |
| Age | Time since creation |
Deployments create ReplicaSets automatically - you rarely manage ReplicaSets directly.
Direct ReplicaSet use cases:
Warning: If owned by Deployment, Deployment will override this change.
HPAs automatically scale workloads up or down based on CPU, memory, or custom metrics.
Navigate to Kubernetes → [cluster] → Workloads → HPAs to see all HPAs in the cluster.
| Column | Description |
|---|---|
| Name | HPA name |
| Namespace | Kubernetes namespace |
| Target | The Deployment or StatefulSet being scaled |
| Min Replicas | Minimum pod count |
| Max Replicas | Maximum pod count |
| Current Replicas | Current live pod count |
| Current Metrics | Live CPU/memory utilization vs target |
Click an HPA to see the current scaling conditions and event history — useful for understanding why the HPA is not scaling when expected.
| Field | Description |
|---|---|
| Scale target | Workload being autoscaled |
| Min / Max | Pod count bounds |
| Target utilization | CPU or memory threshold that triggers scaling |
| Current utilization | Real-time metric value |
| Last scale time | When scaling last occurred |
| Conditions | HPA controller conditions (AbleToScale, ScalingActive, etc.) |
HPAs that scale on CPU or memory need the Kubernetes metrics-server installed in the cluster. Without it the HPA will show ScalingActive: False due to missing metrics.
PDBs protect workloads during voluntary disruptions — node drains, cluster upgrades, rolling restarts — by limiting how many pods of a workload can be unavailable at once.
Navigate to Kubernetes → [cluster] → Workloads → PDBs.
| Column | Description |
|---|---|
| Name | PDB name |
| Namespace | Kubernetes namespace |
| Selector | Which pods this PDB applies to |
| Min Available | Minimum pods that must stay running |
| Max Unavailable | Maximum pods that may be disrupted |
| Current Healthy | Currently healthy pods matching the selector |
| Desired Healthy | Minimum required healthy pods |
| Disruptions Allowed | How many more pods can be disrupted right now |
If a drain or upgrade would violate a PDB, Kubernetes will block the eviction until the constraint can be satisfied. This prevents accidental total outage during maintenance — but it also means drains can get stuck if a PDB is misconfigured (e.g. minAvailable: 100% on a single-replica workload).
StatefulSet: postgresql
Namespace: production
Replicas: 3/3
Strategy: RollingUpdate
| Pod | Status | PVC | Ready | Age |
|---|---|---|---|---|
| postgresql-0 | Running | data-postgresql-0 | True | 45d |
| postgresql-1 | Running | data-postgresql-1 | True | 45d |
| postgresql-2 | Running | data-postgresql-2 | True | 30d |
Scale-Up Process:
10:30:00 Scaling postgresql from 3 to 5 replicas
10:30:01 Creating pod postgresql-3
10:30:02 Creating PVC data-postgresql-3
10:30:15 Pod postgresql-3 Running and Ready
10:30:16 Creating pod postgresql-4
10:30:17 Creating PVC data-postgresql-4
10:30:30 Pod postgresql-4 Running and Ready
10:30:30 StatefulSet successfully scaled to 5 replicas
StatefulSet: postgresql
Namespace: production
Replicas: 5/5
Pods: postgresql-0 (Running)
postgresql-1 (Running)
postgresql-2 (Running)
postgresql-3 (Running)
postgresql-4 (Running)
DaemonSet: node-exporter
Namespace: monitoring
Nodes: 12
Desired: 12
Current: 12
Ready: 12
| Node | Pod | Status | Ready | CPU | Memory |
|---|---|---|---|---|---|
| node-1 | node-exporter-abc12 | Running | True | 50m | 100Mi |
| node-2 | node-exporter-def34 | Running | True | 48m | 98Mi |
| node-3 | node-exporter-ghi56 | Running | True | 52m | 102Mi |
| ... | ... | ... | ... | ... | ... |
Restart Process:
10:45:00 Restarting DaemonSet node-exporter
10:45:01 Terminating pod on node-1
10:45:15 New pod on node-1 Running and Ready
10:45:16 Terminating pod on node-2
10:45:30 New pod on node-2 Running and Ready
...
10:50:00 All 12 pods restarted successfully
CronJob: database-backup
Namespace: production
Schedule: 0 2 * * * (Daily at 2:00 AM)
Suspend: False
Concurrency: Forbid
| Job | Start Time | Completion | Duration | Status |
|---|---|---|---|---|
| database-backup-20240115 | 2024-01-15 02:00:00 | 2024-01-15 02:15:00 | 15m | Complete |
| database-backup-20240114 | 2024-01-14 02:00:00 | 2024-01-14 02:12:00 | 12m | Complete |
| database-backup-20240113 | 2024-01-13 02:00:00 | 2024-01-13 02:18:00 | 18m | Complete |
| database-backup-20240112 | 2024-01-12 02:00:00 | - | - | Failed |
Trigger backup immediately for testing:
Result:
Job: database-backup-manual-20240115-103000
Status: Running
Active Pods: 1
Duration: 5m 30s