DEV Community

Yasir Rehman
Yasir Rehman

Posted on

Comprehensive Guide to 50+ Kubernetes Resources

Kubernetes is a powerful container orchestration platform that enables easy deployment, management, and scaling of applications. At the heart of Kubernetes are its resources—the fundamental building blocks that define and manage the behavior of your applications, networking, and storage.

Why are they important?

- Foundation of Kubernetes operations: Every Kubernetes action involves resources, making them essential for mastering the platform.
- Customizable and extensible: These resources can be tailored to meet your application's unique requirements, ensuring flexibility and scalability.
- Interconnected system: Understanding how these resources interact helps you design robust and reliable systems in Kubernetes.

This article provides a clear overview of each resource, including:
✅ Resource Name
✅ Short Names
✅ API Version
✅ Namespaced
✅ A brief explanation of what each resource does!
Find an easy-to-read document on my LinkedIn post about "Comprehensive Guide to 50+ Kubernetes Resources".

1. APIServices

Name: APIService
API Version: apiregistration.k8s.io/v1
Name-spaced: No (Cluster-scoped)
Explanation: Enables custom resource definitions to be served over HTTPS by registering them with the API server.

2. CertificateSigningRequests

Name: CertificateSigningRequest (csr)
API Version: certificates.k8s.io/v1
Name-spaced: Yes
Explanation: Requests a signed certificate from a Certificate Authority within the Kubernetes cluster.

3. ClusterRoleBindings

Name: ClusterRoleBinding
API Version: rbac.authorization.k8s.io/v1
Name-spaced: No (Cluster-scoped)
Explanation: Grants permissions to users, service accounts, or other groups at the cluster level by binding them to a ClusterRole.

4. ClusterRoles

Name: ClusterRole
API Version: rbac.authorization.k8s.io/v1
Name-spaced: No (Cluster-scoped)
Explanation: Defines a set of permissions that can be granted to users or groups at the cluster level.

5. ComponentStatuses

Name: ComponentStatus (cs)
API Version: core/v1
Name-spaced: No (Cluster-scoped)
Explanation: Provides information about the health and status of core Kubernetes components.

6. ConfigMaps

Name: ConfigMap (cm)
API Version: v1
Name-spaced: Yes
Explanation: Stores non-sensitive key-value data that can be mounted as environment variables or volumes in containers.

7. ControllerRevisions

Name: ControllerRevision
API Version: apps/v1
Name-spaced: Yes
Explanation: Stores past configurations of Deployments and ReplicaSets, allowing for easy rollback to previous versions.

8. CronJobs

Name: CronJob (cj)
API Version: batch/v1
Name-spaced: Yes
Explanation: Schedules jobs to run periodically on a specified schedule (e.g., daily, weekly).

9. CSIDrivers

Name: CSIDriver
API Version: storage.k8s.io/v1
Name-spaced: No (Cluster-scoped)
Explanation: Represents a Container Storage Interface (CSI) driver, which allows for the integration of third-party storage systems with Kubernetes.

10. CSINodes

Name: CSINode
API Version: storage.k8s.io/v1
Name-spaced: No (Cluster-scoped)
Explanation: Represents the registration of a CSI driver on a specific node within the cluster.

11. CSIStoreageCapacities

Name: CSIStoreageCapacity
API Version: storage.k8s.io/v1
Name-spaced: No (Cluster-scoped)
Explanation: Reports the available capacity of a CSI volume.

12. CustomResourceDefinitions

Name: CustomResourceDefinition (crd, crds)
API Version: apiextensions.k8s.io/v1
Name-spaced: No (Cluster-scoped)
Explanation: Defines custom resources that extend the Kubernetes API, allowing users to create and manage their own application-specific objects.

13. DaemonSets

Name: DaemonSet (ds)
API Version: apps/v1
Name-spaced: Yes
Explanation: Ensures that a single instance of a pod is running on every node in the cluster.

14. Deployments

Name: Deployment (deploy)
API Version: apps/v1
Name-spaced: Yes
Explanation: Manages the deployment and updates of pods and ReplicaSets. Provides features like rolling updates, rollback, and health checks.

15. Endpoints

Name: Endpoints (ep)
API Version: v1
Name-spaced: Yes
Explanation: Represents the current endpoints (IP addresses and ports) for a Service.

16. Endpointslices

Name: Endpointslice
API Version: discovery.k8s.io/v1
Name-spaced: Yes
Explanation: Divides large sets of endpoints into smaller subsets for efficient service discovery in Kubernetes. Improves scalability and performance for services with many pods.

17. Events

Name: Event (ev)
API Version: v1
Name-spaced: Yes
Explanation: Records events that occur within the Kubernetes cluster, such as pod creation, deletion, and scheduling failures.

18. FlowSchemas

Name: FlowSchema
API Version: flowcontrol.apiserver.k8s.io/v1beta2
Name-spaced: No (Cluster-scoped)
Explanation: Defines a set of rules for limiting the rate of API requests to the Kubernetes API server.

19. HorizontalPodAutoscalers

Name: HorizontalPodAutoscaler (HPA)
API Version: autoscaling/v2beta2
Name-spaced: Yes
Explanation: Automatically scales the number of pods in a Deployment or ReplicaSet based on observed CPU utilization or other metrics.

20. IngressClasses

Name: IngressClass
API Version: networking.k8s.io/v1
Name-spaced: No (Cluster-scoped)
Explanation: Defines a set of configuration parameters that can be used by Ingress controllers to configure their behavior.

21. Ingresses

Name: Ingress (ing)
API Version: networking.k8s.io/v1
Name-spaced: Yes
Explanation: Exposes HTTP and HTTPS routes from outside the cluster to services within the cluster.

22. Jobs

Name: Job
API Version: batch/v1
Name-spaced: Yes
Explanation: Creates one or more pods and ensures that a specified number of them successfully completed. Often used for one-time tasks or batch
processing.

23. LimitRanges

Name: LimitRange (limits)
API Version: v1
Name-spaced: Yes
Explanation: Defines minimum and maximum resource limits for containers that are created in a namespace.

24. LocalSubjectAccessReview

Name: LocalSubjectAccessReview
API Version: authorization.k8s.io/v1
Name-spaced: Yes
Explanation: Allows you to determine if a user or group has specific permissions within the context of the pod where the request originates.

25. MutatingWebhookConfigurations

Name: MutatingWebhookConfiguration
API Version: admissionregistration.k8s.io/v1
Name-spaced: No (Cluster-scoped)
Explanation: Defines a set of webhooks that are called to modify objects before they are created or modified in the Kubernetes API server.

26. Namespaces

Name: Namespace (ns)
API Version: v1
Name-spaced: No (Cluster-scoped)
Explanation: Provides a way to divide a single cluster into multiple virtual clusters, isolating resources and permissions.

27. NetworkPolicies

Name: NetworkPolicy (netpol)
API Version: networking.k8s.io/v1
Name-spaced: Yes
Explanation: Controls network traffic between pods within a namespace and between pods and external entities.

28. Nodes

Name: Node (no)
API Version: v1
Name-spaced: No (Cluster-scoped)
Explanation: Represents a worker machine in the Kubernetes cluster, where pods are scheduled and executed.

29. PersistentVolumeClaims

Name: PersistentVolumeClaim (PVC)
Short Names: pvc
API Version: v1
Name-spaced: Yes
Explanation: Represents a request for persistent storage by a user. PVCs describe the desired characteristics of the storage (e.g., size, access
modes).

30. PersistentVolumes

Name: PersistentVolume (PV)
API Version: v1
Name-spaced: No (Cluster-scoped)
Explanation: Represents a piece of persistent storage in the cluster that has been provisioned by an administrator or dynamically provisioned using a storage class.

31. PodDisruptionBudgets

Name: PodDisruptionBudget (PDB)
API Version: policy/v1
Name-spaced: Yes
Explanation: Protects applications from disruption caused by voluntary and involuntary node evacuations (e.g., maintenance). Ensures that a minimum number of pods of a specific type are always available.

32. Pods

Name: Pod (po)
API Version: v1
Name-spaced: Yes
Explanation: The smallest and most atomic unit in Kubernetes. Represents a running container or a set of co-located containers that share resources and a common lifecycle.

33. PodTemplates

Name: PodTemplate
API Version: v1
Name-spaced: Yes
Explanation: A blueprint for creating pods. Used within higher-level objects like Deployments, ReplicaSets, and Jobs.

34. PriorityClasses

Name: PriorityClass (pc)
API Version: scheduling.k8s.io/v1
Name-spaced: No (Cluster-scoped)
Explanation: Defines a priority level for pods, influencing their scheduling decisions. Higher priority pods are more likely to be scheduled on available nodes.

35. PriorityLevelConfigurations

Name: PriorityLevelConfiguration
API Version: flowcontrol.apiserver.k8s.io/v1
Name-spaced: No (Cluster-scoped)
Explanation: Configures the global priority and preemption behavior of pods.

36. Profiles

Name: Profile
API Version: autoscaling.k8s.io/v1
Name-spaced: Yes
Explanation: Defines a set of resource requests and limits that can be applied to pods within a namespace. Used by horizontal pod autoscalers to determine scaling boundaries.

37. ReplicaSets

Name: ReplicaSet (rs)
API Version: apps/v1
Name-spaced: Yes
Explanation: Ensures that a specified number of pod replicas are running at any given time. Often used as a building block for higher-level controllers like Deployments.

38. ReplicationControllers

Name: ReplicationController (rc)
API Version: v1
Name-spaced: Yes
Explanation: An older mechanism for ensuring a fixed number of pod replicas. Largely superseded by ReplicaSets.

39. ResourceQuotas

Name: ResourceQuota (quota)
API Version: v1
Name-spaced: Yes
Explanation: Limits the amount of resources (CPU, memory, storage) that can be consumed by users or teams within a namespace.

40. RoleBindings

Name: RoleBinding
API Version: rbac.authorization.k8s.io/v1
Name-spaced: Yes
Explanation: Grants permissions to users, service accounts, or other groups by binding them to a specific Role.

41. Roles

Name: Role
API Version: rbac.authorization.k8s.io/v1
Name-spaced: Yes
Explanation: Defines a set of permissions that can be granted to users or groups within a namespace.

42. RuntimeClasses

Name: RuntimeClass
API Version: node.k8s.io/v1
Name-spaced: No (Cluster-scoped)
Explanation: Specifies the runtime environment (e.g., container runtime, security settings) for containers within a pod.

43. Secrets

Name: Secret
API Version: v1
Name-spaced: Yes
Explanation: Stores sensitive information securely within the Kubernetes cluster, such as passwords, API keys, and certificates.

44. SelfSubjectAccessReview

Name: SelfSubjectAccessReview
API Version: authorization.k8s.io/v1
Name-spaced: Yes
Explanation: Allows a user or service account to check whether they have specific permissions within the current namespace.

45. SelfSubjectRulesReview

Name: SelfSubjectRulesReview
API Version: authorization.k8s.io/v1
Name-spaced: Yes
Explanation: Allows a user or service account to check the set of permissions they have within the current namespace.

46. ServiceAccounts

Name: ServiceAccount (sa)
API Version: v1
Name-spaced: Yes
Explanation: Represents a service account within a namespace, which can be used to authenticate and authorize access to Kubernetes resources.

47. Services

Name: Service (svc)
API Version: v1
Name-spaced: Yes
Explanation: Defines a logical set of Pods and a policy for accessing them. Enables services to be discovered and accessed by other services within or outside the cluster.

48. StatefulSets

Name: StatefulSet (sts)
API Version: apps/v1
Name-spaced: Yes
Explanation: Manages the deployment and scaling of stateful applications that require stable, persistent identifiers for each pod.

49. StorageClasses

Name: StorageClass (sc)
API Version: storage.k8s.io/v1
Name-spaced: No (Cluster-scoped)
Explanation: Provides a way for administrators to define and manage different types of storage (e.g., cloud storage, local storage) that can be used by PersistentVolumes.

50. SubjectAccessReview

Name: SubjectAccessReview
API Version: authorization.k8s.io/v1
Name-spaced: Yes
Explanation: Allows a user to check whether a particular user or group has specific permissions within the current namespace.

51. TokenReview

Name: TokenReview
API Version: authentication.k8s.io/v1
Name-spaced: No (Cluster-scoped)
Explanation: Validates an authentication token and returns information about the user associated with the token.

52. ValidationWebhookConfigurations

Name: ValidationWebhookConfiguration
API Version: admissionregistration.k8s.io/v1
Name-spaced: No (Cluster-scoped)
Explanation: Defines a set of webhooks that are called to validate objects before they are created or modified in the Kubernetes API server.

53. VolumeAttachments

Name: VolumeAttachment
API Version: storage.k8s.io/v1
Name-spaced: No (Cluster-scoped)
Explanation: Represents the binding of a
PersistentVolume to a node. This object is created automatically by the Kubernetes system.

To discover the full list of resources available in your Kubernetes cluster, use the kubectl api-resources command.

Remember that production clusters often include add-on components (e.g., Istio, Traefik, Prometheus, Grafana, Fluentd, Falco, etc.) that extend the core set of resources listed here.

Find an easy-to-read document on my LinkedIn post about "Comprehensive Guide to 50+ Kubernetes Resources".

I post about DevOps, cloud-native, and compassionate leadership. You can reach out to me on LinkedIn.

Top comments (0)