{"id":48670,"date":"2025-03-03T10:33:06","date_gmt":"2025-03-03T10:33:06","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=48670"},"modified":"2026-02-21T07:26:32","modified_gmt":"2026-02-21T07:26:32","slug":"most-commonly-used-kubernetes-controllers","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/most-commonly-used-kubernetes-controllers\/","title":{"rendered":"Most commonly used Kubernetes controllers"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"1013\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2025\/03\/1695099245764-1.jpeg\" alt=\"\" class=\"wp-image-48671\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2025\/03\/1695099245764-1.jpeg 800w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2025\/03\/1695099245764-1-237x300.jpeg 237w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2025\/03\/1695099245764-1-768x972.jpeg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<p>Kubernetes controllers are essential components that continuously regulate the desired state of cluster resources. Here\u2019s a list of the <strong>most commonly used Kubernetes controllers<\/strong>:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>Deployment Controller<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Manages <strong>ReplicaSets<\/strong> to ensure the desired number of pods are running.<\/li>\n\n\n\n<li>Supports rolling updates, rollbacks, and scaling.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. <strong>ReplicaSet Controller<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ensures a specified number of pod replicas are running at any given time.<\/li>\n\n\n\n<li>Used primarily by <strong>Deployments<\/strong> but can be used independently.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. <strong>DaemonSet Controller<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ensures a specific pod runs on <strong>every node<\/strong> in the cluster.<\/li>\n\n\n\n<li>Used for logging, monitoring, and networking components (e.g., <strong>Fluentd, Prometheus, Calico<\/strong>).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4. <strong>StatefulSet Controller<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Manages stateful applications where each pod has a unique identity and persistent storage (e.g., <strong>Databases, Zookeeper, Kafka<\/strong>).<\/li>\n\n\n\n<li>Provides <strong>stable network identities<\/strong> and persistent storage.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5. <strong>Job Controller<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ensures batch jobs execute successfully and terminate upon completion.<\/li>\n\n\n\n<li>Used for one-time tasks like <strong>data processing or backups<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6. <strong>CronJob Controller<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Schedules jobs to run at specific times (like <strong>cron<\/strong> in Linux).<\/li>\n\n\n\n<li>Used for <strong>periodic tasks<\/strong>, e.g., database backups, reporting, etc.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7. <strong>HPA (Horizontal Pod Autoscaler) Controller<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Automatically <strong>scales the number of pods<\/strong> based on CPU, memory, or custom metrics.<\/li>\n\n\n\n<li>Useful for dynamically adjusting workloads.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8. <strong>VPA (Vertical Pod Autoscaler) Controller<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dynamically <strong>adjusts CPU and memory<\/strong> limits for pods.<\/li>\n\n\n\n<li>Helps optimize resource utilization without restarting pods manually.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9. <strong>Ingress Controller<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Manages external access to services using <strong>Ingress resources<\/strong>.<\/li>\n\n\n\n<li>Implements <strong>load balancing, SSL termination, and routing<\/strong> (e.g., <strong>NGINX Ingress, Traefik, HAProxy<\/strong>).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">10. <strong>Network Policy Controller<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enforces networking rules and controls how pods communicate.<\/li>\n\n\n\n<li>Works with <strong>Calico, Cilium, or Weave<\/strong> for advanced networking.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">11. <strong>Certificate Controller<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Automates SSL\/TLS certificate management.<\/li>\n\n\n\n<li>Works with <strong>Cert-Manager<\/strong> for Let&#8217;s Encrypt integration.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">12. <strong>Custom Controllers (Operator Pattern)<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Extends Kubernetes functionality using <strong>Custom Resource Definitions (CRDs)<\/strong>.<\/li>\n\n\n\n<li>Examples: <strong>Prometheus Operator, ArgoCD Operator, Istio Operator<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kubernetes controllers are essential components that continuously regulate the desired state of cluster resources. Here\u2019s a list of the most commonly used Kubernetes controllers: 1. Deployment Controller 2. ReplicaSet Controller&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-48670","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/48670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=48670"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/48670\/revisions"}],"predecessor-version":[{"id":58914,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/48670\/revisions\/58914"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=48670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=48670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=48670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}