In Kubernetes, resources are objects that represent different entities within the cluster. These resources can be native (built-in) or custom (user-defined).
1️⃣ Native Resources
🔹 Definition: Native resources are built-in Kubernetes objects that come pre-defined in the Kubernetes API.
🔹 Examples:
- Pods (
Pod) - Services (
Service) - Deployments (
Deployment) - ConfigMaps (
ConfigMap) - Secrets (
Secret) - Ingress (
Ingress) - PersistentVolumes (Persistent Volume)
2️⃣ Custom Resources (CRs)
🔹 Definition: Custom resources extend Kubernetes by adding new API objects beyond the built-in ones.
🔹 Requires:
✔ CRD (Custom Resource Definition) – Defines the schema of the new resource.
✔ CR (Custom Resource) – An instance of the custom resource.
✔ Custom Controller (optional) – Manages custom resources.
✅ Why use Custom Resources?
- Allows Kubernetes to support new types of workloads.
- Useful for domain-specific applications (e.g., Operators, CRDs for databases, monitoring tools).
- Extends Kubernetes without modifying its core API.
When to Use Native vs. Custom Resources?
✔ Use Native Resources if your needs are covered by Kubernetes (e.g., managing workloads, networking, storage).
✔ Use Custom Resources when you need to extend Kubernetes for specialized workloads (e.g., CRDs for databases, machine learning models, or infrastructure management).