Kubernetes Common Resource Types
Reference: https://dev.to/mindwingx/kubernetes-common-resource-types-c9h
1- Pod
A Pod represents a single instance of a running process in the cluster.
It encapsulates one or more containers that are tightly coupled and share resources, such as networking and storage.
Pods are the smallest deployable units in Kubernetes and can contain one or more application containers.
2- Service
A Service defines a set of Pods and a policy to access them.
It provides a stable, virtual IP address and DNS name for accessing the pods.
Services enable communication between different parts of an application, both within and outside the Kubernetes cluster.
3- ReplicaSet
ReplicaSets ensure that a specified number of pod replicas are running at any given time.
They provide high availability by automatically scaling the number of pod replicas up or down in response to changes in demand or failures.
ReplicaSets are typically used to manage stateless applications that can scale horizontally.
4- Deployment
Deployments provide declarative updates to Pods and ReplicaSets.
They manage the lifecycle of Pods, including creating, updating, and deleting them as necessary.
Deployments enable rolling updates and rollbacks, ensuring zero downtime during application updates.
5- StatefulSet
StatefulSets manages the deployment and scaling of a set of Pods with unique identities.
They provide stable, unique network identifiers (hostnames) and persistent storage for each Pod.
StatefulSets are used for stateful applications that require stable network identities and persistent storage.
6- DaemonSet
DaemonSets ensure that all (or some) nodes in the cluster run a copy of a specified Pod.
They are typically used to deploy system daemons or background services, such as log collectors or monitoring agents, on every node in the cluster.
7- Job
Jobs create one or more Pods and ensure that a specified number of them successfully terminate.
They are used for short-lived, batch processing tasks, such as data import/export or periodic cleanup operations.
8- CronJob
CronJobs creates Jobs on a schedule, similar to cron in Unix-like operating systems.
They are used for recurring tasks, such as backups, data synchronization, or report generation, that need to run at specific intervals.
9- Namespace
Namespaces provide a way to divide cluster resources between multiple users, teams, or projects.
They provide scope for resources, allowing different groups to work independently within the same Kubernetes cluster.
Namespaces help organize and isolate resources, improving manageability and security.
10- ConfigMap
ConfigMaps stores configuration data in key-value pairs that can be mounted as files or environment variables in a Pod.
They are used to decouple configuration from application code and enable configuration management in a Kubernetes-native way.
11- Secret
Secrets store sensitive data, such as passwords, API keys, or TLS certificates, in an encrypted format.
They are similar to ConfigMaps but are intended for confidential or security-sensitive information.
Secrets are often used to store credentials or other sensitive data required by applications running in Pods.
12- PersistentVolume
Persistent volumes represent a piece of storage in the cluster that has been provisioned by an administrator.
They provide an abstraction layer for storage resources, allowing Pods to request and consume storage without needing to know the details of the underlying infrastructure.
13- PersistentVolumeClaim
PersistentVolumeClaims request storage resources from PersistentVolumes.
They provide an abstraction layer for storage provisioning, allowing developers to request storage resources of a specific type and size without needing to know the details of the underlying infrastructure.
14- ServiceAccount
ServiceAccounts provide an identity for processes running in a Pod.
They are used to authenticate Pods with the Kubernetes API server and control access to cluster resources.
15- Role
Roles define a set of permissions within a Namespace.
They specify what actions are allowed on which resources within the Namespace, such as creating, updating, or deleting Pods, Services, or ConfigMaps.
16- ClusterRole
ClusterRoles define a set of permissions across the entire cluster.
They are similar to Roles but apply globally to all Namespaces in the cluster.
17- RoleBinding
RoleBindings bind a Role to a set of users or groups within a Namespace.
They specify which users or groups have access to the permissions defined by the Role.
18- ClusterRoleBinding
ClusterRoleBindings bind a ClusterRole to a set of users or groups across the entire cluster.
They specify which users or groups have access to the permissions defined by the ClusterRole.
19- Ingress
Ingress manages external access to Services in the cluster, typically HTTP or HTTPS traffic.
It provides a centralized point of entry for incoming requests and allows for advanced routing and load balancing based on URL paths, hostnames, or other criteria.
20- ResourceQuota
ResourceQuotas specify constraints on resource consumption (CPU, memory, storage, etc.) within a Namespace.
They limit the amount of resources that can be used by Pods, Services, and other objects within the Namespace, helping to prevent resource exhaustion and ensure fair resource allocation.