This commit is contained in:
Toby
2026-01-27 17:35:45 -05:00
commit 2639af6531
176 changed files with 27104 additions and 0 deletions
@@ -0,0 +1,78 @@
#!/bin/bash
# Kubernetes Cluster Health Check Script
# Usage: ./cluster-health-check.sh [namespace]
set -euo pipefail
NAMESPACE="${1:-default}"
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
echo "========================================="
echo "Kubernetes Cluster Health Check"
echo "========================================="
echo ""
# Check cluster connectivity
echo -n "Checking cluster connectivity... "
if kubectl cluster-info &>/dev/null; then
echo -e "${GREEN}OK${NC}"
else
echo -e "${RED}FAILED${NC}"
exit 1
fi
# Node status
echo ""
echo "Node Status:"
echo "------------"
kubectl get nodes -o wide
# Check for NotReady nodes
NOT_READY=$(kubectl get nodes --no-headers | grep -v " Ready" | wc -l)
if [ "$NOT_READY" -gt 0 ]; then
echo -e "${RED}WARNING: $NOT_READY node(s) not ready${NC}"
fi
# Pod status in namespace
echo ""
echo "Pod Status in namespace '$NAMESPACE':"
echo "--------------------------------------"
kubectl get pods -n "$NAMESPACE" -o wide
# Check for failed pods
FAILED_PODS=$(kubectl get pods -n "$NAMESPACE" --no-headers | grep -E "Error|CrashLoopBackOff|ImagePullBackOff" | wc -l)
if [ "$FAILED_PODS" -gt 0 ]; then
echo -e "${RED}WARNING: $FAILED_PODS pod(s) in error state${NC}"
fi
# Resource usage
echo ""
echo "Resource Usage:"
echo "---------------"
kubectl top nodes 2>/dev/null || echo "Metrics server not available"
# Recent events
echo ""
echo "Recent Warning Events:"
echo "----------------------"
kubectl get events -n "$NAMESPACE" --field-selector type=Warning --sort-by='.lastTimestamp' | tail -10
# PVC status
echo ""
echo "PersistentVolumeClaim Status:"
echo "-----------------------------"
kubectl get pvc -n "$NAMESPACE" 2>/dev/null || echo "No PVCs found"
# Service status
echo ""
echo "Services:"
echo "---------"
kubectl get svc -n "$NAMESPACE"
echo ""
echo "========================================="
echo "Health check complete"
echo "========================================="
@@ -0,0 +1,75 @@
#!/bin/bash
# Kubernetes Namespace Cleanup Script
# Removes completed jobs, failed pods, and unused resources
# Usage: ./namespace-cleanup.sh <namespace> [--dry-run]
set -euo pipefail
NAMESPACE="${1:-}"
DRY_RUN="${2:-}"
if [ -z "$NAMESPACE" ]; then
echo "Usage: $0 <namespace> [--dry-run]"
exit 1
fi
if [ "$DRY_RUN" == "--dry-run" ]; then
echo "DRY RUN MODE - No changes will be made"
DELETE_CMD="echo [DRY RUN] Would delete:"
else
DELETE_CMD="kubectl delete"
fi
echo "========================================="
echo "Namespace Cleanup: $NAMESPACE"
echo "========================================="
echo ""
# Delete completed jobs
echo "Cleaning up completed Jobs..."
COMPLETED_JOBS=$(kubectl get jobs -n "$NAMESPACE" -o jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}' 2>/dev/null)
if [ -n "$COMPLETED_JOBS" ]; then
for job in $COMPLETED_JOBS; do
$DELETE_CMD job "$job" -n "$NAMESPACE" 2>/dev/null || true
done
else
echo "No completed jobs found"
fi
# Delete failed pods
echo ""
echo "Cleaning up failed Pods..."
FAILED_PODS=$(kubectl get pods -n "$NAMESPACE" --field-selector status.phase=Failed -o name 2>/dev/null)
if [ -n "$FAILED_PODS" ]; then
for pod in $FAILED_PODS; do
$DELETE_CMD "$pod" -n "$NAMESPACE" 2>/dev/null || true
done
else
echo "No failed pods found"
fi
# Delete evicted pods
echo ""
echo "Cleaning up evicted Pods..."
EVICTED_PODS=$(kubectl get pods -n "$NAMESPACE" -o json | jq -r '.items[] | select(.status.reason=="Evicted") | .metadata.name' 2>/dev/null)
if [ -n "$EVICTED_PODS" ]; then
for pod in $EVICTED_PODS; do
$DELETE_CMD pod "$pod" -n "$NAMESPACE" 2>/dev/null || true
done
else
echo "No evicted pods found"
fi
# Delete orphaned ReplicaSets (0 replicas, no owner)
echo ""
echo "Cleaning up orphaned ReplicaSets..."
kubectl get rs -n "$NAMESPACE" -o json | jq -r '.items[] | select(.spec.replicas==0) | .metadata.name' 2>/dev/null | while read rs; do
if [ -n "$rs" ]; then
$DELETE_CMD rs "$rs" -n "$NAMESPACE" 2>/dev/null || true
fi
done
echo ""
echo "========================================="
echo "Cleanup complete"
echo "========================================="
@@ -0,0 +1,71 @@
#!/bin/bash
# Kubernetes Pod Debugging Script
# Usage: ./pod-debug.sh <pod-name> [namespace]
set -euo pipefail
POD_NAME="${1:-}"
NAMESPACE="${2:-default}"
if [ -z "$POD_NAME" ]; then
echo "Usage: $0 <pod-name> [namespace]"
echo ""
echo "Available pods in namespace '$NAMESPACE':"
kubectl get pods -n "$NAMESPACE" --no-headers | awk '{print " " $1}'
exit 1
fi
echo "========================================="
echo "Debugging Pod: $POD_NAME"
echo "Namespace: $NAMESPACE"
echo "========================================="
echo ""
# Pod details
echo "Pod Details:"
echo "------------"
kubectl get pod "$POD_NAME" -n "$NAMESPACE" -o wide
# Pod describe
echo ""
echo "Pod Description:"
echo "----------------"
kubectl describe pod "$POD_NAME" -n "$NAMESPACE"
# Container logs
echo ""
echo "Container Logs (last 50 lines):"
echo "--------------------------------"
CONTAINERS=$(kubectl get pod "$POD_NAME" -n "$NAMESPACE" -o jsonpath='{.spec.containers[*].name}')
for CONTAINER in $CONTAINERS; do
echo ""
echo "=== Container: $CONTAINER ==="
kubectl logs "$POD_NAME" -n "$NAMESPACE" -c "$CONTAINER" --tail=50 2>/dev/null || echo "No logs available"
done
# Previous container logs (if crashed)
echo ""
echo "Previous Container Logs (if any):"
echo "----------------------------------"
for CONTAINER in $CONTAINERS; do
echo ""
echo "=== Container: $CONTAINER (previous) ==="
kubectl logs "$POD_NAME" -n "$NAMESPACE" -c "$CONTAINER" --previous --tail=20 2>/dev/null || echo "No previous logs"
done
# Resource usage
echo ""
echo "Resource Usage:"
echo "---------------"
kubectl top pod "$POD_NAME" -n "$NAMESPACE" 2>/dev/null || echo "Metrics not available"
# Events for this pod
echo ""
echo "Related Events:"
echo "---------------"
kubectl get events -n "$NAMESPACE" --field-selector involvedObject.name="$POD_NAME" --sort-by='.lastTimestamp'
echo ""
echo "========================================="
echo "Debug information complete"
echo "========================================="