Kubernetes Common Resource Types

·

4 min read

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.