A structured collection of Kubernetes manifests and Go application examples for learning distributed systems.
- Kubernetes Cluster: Minikube, Kind, K3s, or a cloud provider.
- kubectl: Kubernetes command-line tool.
- Go (Optional): For building the Go application locally.
- Docker (Optional): For building container images.
- Pods: Basic pod definitions (labeled, GPU, etc.).
- Cluster Setup: Namespace and initial cluster configuration.
- Concepts: Theoretical notes (e.g., Linux PSI, Standard Labels).
- ReplicaSets: Maintains a stable set of replica Pods.
- DaemonSets: Runs a copy of a Pod on all (or selected) Nodes.
- Jobs: Run-to-completion tasks.
- CronJobs: Scheduled time-based jobs.
- Replication Controllers: (Legacy) Predecessor to ReplicaSets.
- Services: Exposing applications (ClusterIP, NodePort, LoadBalancer).
- Ingresses: HTTP/HTTPS routing.
- Gateway API: Modern, flexible routing (Gateway, HTTPRoute).
- Storage: Persistent Volumes (PV), Claims (PVC), and StorageClasses.
- Configs: Configuration management using ConfigMaps and Secrets.
- Go App Demo: A production-ready Go application demonstrating Kubernetes best practices (Probes, Graceful Shutdown).
-
Deploy the Demo App:
make deploy-app
-
Explore a Concept: Navigate to a directory and apply the manifests:
cd jobs kubectl apply -f job.yaml