{"id":9056,"date":"2021-11-18T17:59:05","date_gmt":"2021-11-18T12:29:05","guid":{"rendered":"https:\/\/opstree.com\/blog\/\/?p=9056"},"modified":"2025-11-21T17:15:08","modified_gmt":"2025-11-21T11:45:08","slug":"an-introduction-to-kubernetes-architecture%ef%bf%bc","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2021\/11\/18\/an-introduction-to-kubernetes-architecture%ef%bf%bc\/","title":{"rendered":"An Introduction to Kubernetes Architecture! \ufffc"},"content":{"rendered":"\r\n<p><strong><em>Kubernetes<\/em><\/strong> is an open-source container orchestration platform used for running distributed applications and services at scale. Merely knowing the basics of Kubernetes won\u2019t be sufficient enough in order to leverage the many advantages that it offers. It\u2019s important to first understand the complete Kubernetes architecture, its components and how they interact with each other to know how Kubernetes actually works. Let\u2019s take a brief look and explore how the different components of Kubernetes work together.<br \/><br \/>Kubernetes is the ideal solution for complete orchestration, scaling and deployment of containerized applications. You can also read about application containerization, Kubernetes API, Kubernetes API Gateway and much more here!<\/p>\r\n\r\n\r\n\r\n<p><!--more--><\/p>\r\n\r\n\r\n\r\n<p>This blog outlines the various components within a Kubernetes architecture that are required for a complete and working Kubernetes cluster. Here, we talk about,<br \/><em>&#8211; What is a Kubernetes Cluster?<br \/>&#8211; The Compute Machines or Nodes( Worker Nodes)<br \/>&#8211; The Control Plane(Master Node)<br \/>&#8211; Components of the Control Plane<br \/>&#8211; Node Components<br \/><br \/>Let\u2019s dive in!<br \/><br \/><\/em><br \/><strong>What is a Kubernetes Cluster?<br \/><br \/><\/strong>A Kubernetes cluster is a set of nodes that runs containerized applications and workloads. A Kubernetes cluster has two parts:<br \/><em>&#8211; The Control Plane( Master Node)<br \/>&#8211; The Compute Machines or Nodes( Worker Nodes)<\/em><\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/jRwQeHFeRir69RDs7ihOOqN4Eyej3ikuySgDEmWfpysx1aXM4k_8HSMii_zlXhnFb6__XeT9Te-7SpD-e3oV-K56H-bp89Wc3Vk6xvk7a49_ijMIYXE32yHCWyrwHZPWP7Ak_DdP\" alt=\"\" width=\"800\" \/><\/figure>\r\n\r\n\r\n\r\n<p><strong>T<\/strong><strong>he Compute Machines or Worker Nodes<\/strong><strong><br \/><\/strong><strong><br \/><\/strong>A node, inside a Kubernetes cluster,\u00a0 is a worker machine that can either be a virtual or a physical machine depending on the cluster. Each node within the cluster is managed by the control plane and contains the services necessary to run Pods, which are made up of containers.<br \/><br \/>Wondering what are pods in Kubernetes? A pod is a smallest and simplest unit in the Kubernetes architecture model. It represents a set of running containers within the cluster.<br \/><br \/>Every cluster has at least one worker node. The worker node(s) are generally responsible to host the Pods. The Kubernetes control plane automatically controls and manages the scheduling of these pods across different nodes within the cluster keeping into account the available resources on each Node.<br \/><br \/><br \/><strong>The Control Plane or Master Node<\/strong><strong><br \/><\/strong><strong><br \/><\/strong>The control plane (master node), in the Kubernetes architecture, is an important part of the Kubernetes cluster. It exposes the API and interfaces for deploying and managing the complete lifecycle of containers. It manages the worker nodes and the pods within the Kubernetes cluster. The components of the control plane help in taking decisions about the cluster (like scheduling the pods), as well as identifying and responding to cluster events ( such as starting a new pod when the deployment&#8217;s replicas field is unsatisfied).<br \/><br \/>Here&#8217;s the Kubernetes architecture diagram with all the components tied together.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/PVgge_QQIqlyDzY5JN5jnqbuNUHXELjhn7bMQxJxt3VafYDOZQ-JCfxxXsq4NAlPUNO6E1e0db9xuLkpyqktCHXRr4-YTW9qY6CzSv5kJKaltBBTBaz3L7THAUDZcO8MFoE3yiBP\" alt=\"\" width=\"800\" height=\"472\" \/><\/figure>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p><strong>Components of the Control Plane<br \/><\/strong><\/p>\r\n\r\n\r\n\r\n<p>Let\u2019s talk about the most crucial part of the Kubernetes cluster: the control plane. The control plane contains the core Kubernetes components that are responsible for controlling the complete Kubernetes cluster along with data that specifies the cluster\u2019s state and configuration. Here, we\u2019ll talk about the components of the control plane.<br \/><br \/>With the help of these K8s components, the Control Plane controls and responds to cluster events and makes sure that the containers within the K8s cluster are running in sufficient numbers and with the necessary resources.<\/p>\r\n\r\n\r\n\r\n<p><strong><em>kube-apiserver<br \/><\/em><\/strong>The API server is a crucial component of the Kubernetes control plane that exposes the Kubernetes API. The Kubernetes API server, which is the front end of the Kubernetes control plane, is responsible for managing internal and external requests. It is the API server that determines whether a request is valid and in case if it is, then it processes the request.<br \/><br \/><strong><em>etcd<\/em><\/strong><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/overview\/components\/#etcd\" target=\"_blank\" rel=\"noopener\"><br \/><\/a>etcd is the key-value store database that contains the configuration data and information about the state of the Kubernetes cluster. It is etcd, where users can find complete in-depth information and the true state of the cluster.<\/p>\r\n\r\n\r\n\r\n<p><strong><em>kube-scheduler<\/em><\/strong><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/overview\/components\/#kube-scheduler\" target=\"_blank\" rel=\"noopener\"><strong><em> <br \/><\/em><\/strong><\/a>It is a component of the control plane that looks for newly created Pods with no assigned node. It selects a node for the pods to run on. Also, kube-scheduler ensures that the Kubernetes cluster is healthy. It identifies where new containers are to be added.<br \/><br \/>The Kubernetes scheduler looks after the resources that a pod needs, such as CPU or memory, along with the complete health of the K8s cluster. Accordingly, it schedules the pod to an appropriate compute node required by the pod depending upon certain factors including resource requirements, hardware\/software\/ restrictions, affinity and anti-affinity specifications, inter-workload interference, and much more.<\/p>\r\n\r\n\r\n\r\n<p><strong><em>kube-controller-manager<\/em><\/strong><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/overview\/components\/#kube-controller-manager\" target=\"_blank\" rel=\"noopener\"><strong><em> <br \/><\/em><\/strong><\/a>Within the Kubernetes architecture, Kube-controller-manager is the control plane component that runs controller processes. Each controller takes care of running the Kubernetes cluster and the Kube-controller-manager consists of several controller functions like these.\u00a0<\/p>\r\n\r\n\r\n\r\n<p>Some types of these controllers are,<\/p>\r\n\r\n\r\n\r\n<ul>\r\n<li><strong><em>Node controller<\/em><\/strong>: It is responsible for identifying and responding when nodes go down.<\/li>\r\n<li><strong><em>Job controller: <\/em><\/strong>The task of this component is to watch for Job objects that represent one-off\/independent tasks. It then creates Pods for running those tasks to completion.<\/li>\r\n<li><strong><em>Endpoints controller: <\/em><\/strong>It saves the endpoints object which means it joins the services and pods.<\/li>\r\n<li><strong><em>Service Account &amp; Token controllers:<\/em><\/strong> It creates default accounts and API access tokens for new namespaces.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/eKX0erGvnpDbOMfzTksdAhEBE2CdzqauE8UfhgU0zWqWnZN7Yhy33XZ6USh9Tobf8aZvoImOc8w4xJQXbqAuu-1Bwdc2m4n8M2XGUUVwXd_itb5FRi0JoBsMrqxEKWrnzOWyxxIX\" alt=\"\" width=\"800\" \/><\/figure>\r\n\r\n\r\n\r\n<p><strong><em>cloud-controller-manager<\/em><\/strong><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/overview\/components\/#cloud-controller-manager\" target=\"_blank\" rel=\"noopener\"><strong><em>\u00a0<\/em><\/strong><\/a><br \/>It is a Kubernetes control plane component that embeds cloud-specific control logic. It allows the Kubernetes cluster to get linked into the cloud provider\u2019s API and separates those components that interact with the cloud platform from components that only interact with the Kubernetes cluster. In simpler words, cloud-controller-manager only runs controllers that are specific to the cloud provider which is being used.<\/p>\r\n\r\n\r\n\r\n<p>This Kubernetes architecture diagram shows how different parts of a Kubernetes cluster are related to each other.<\/p>\r\n\r\n\r\n\r\n<p><strong>Node Components<br \/><\/strong>By looking at the Kubernetes architecture explanation, we can clearly see that Kubernetes runs the workload by placing containers into Pods to run on Nodes. After knowing in detail about what are Pods in Kubernetes, let\u2019s now look at the components of a node or compute machine.<br \/><br \/>Here\u2019s a brief description of the node components. So, let\u2019s take a look,<\/p>\r\n\r\n\r\n\r\n<p><strong><em>kubelet<br \/><\/em><\/strong>It is a node component that runs on each node in the cluster. It makes sure that containers within a pod are running. But, how is this done? kubelet chooses a set of PodSpecs and ensures that the containers defined in these PodSpecs are running and healthy.\u00a0<\/p>\r\n\r\n\r\n\r\n<p><strong><em>kube-proxy<br \/><\/em><\/strong>kube-proxy is a network proxy that runs on each node within a Kubernetes cluster. Each node contains kube-proxy for facilitating Kubernetes networking services. The kube-proxy handles communications inside or outside of the K8s cluster by using the operating system packet filtering layer if it is available or else it forwards the traffic itself.<\/p>\r\n\r\n\r\n\r\n<p><strong><em><br \/>Container runtime<\/em><\/strong><br \/>Each node has a container runtime engine that is responsible for running the containers. Kubernetes supports many container runtimes such as Docker, containerd, CRI-O, and any implementation of the Kubernetes CRI (Container Runtime Interface).<br \/><br \/>kubelet, kube-proxy and container runtime are important node components but they can also be present within the master node or the control plane.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image is-resized\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/cgF_lRYK1ddYOhQ8CZeR8HvgOoqx3HbPxzc3YzgWlKRALaCwsQjExCs9DTiukad3hRxbLHo5MM4_2giYLkbVlxPb-ggxwLmP_KhccjdoFo9gzxTMpv_J-dvPEFRxcHTnkzgDKXfe\" alt=\"\" width=\"800\" \/><\/figure>\r\n\r\n\r\n\r\n<p><strong>Wrapping it all!<\/strong><strong><br \/><\/strong><strong><br \/><\/strong>This was a complete Kubernetes architecture explanation. I hope it gives a clear picture of how Kubernetes works. Along with all the incredible advantages that come up with deploying Kubernetes, there are challenges too. A powerful and reliable Kubernetes &amp; Microservices management platform such as <a href=\"https:\/\/www.opstree.com\/buildpiper\/documentation\/docs\/managed-kubernetes\/cluster-management\"><strong><em>BuildPiper<\/em><\/strong><\/a> can help overcome these complex Kubernetes challenges and allow enterprises to extract the most out of their investments.<\/p>\r\n\r\n\r\n\r\n<p>Opstree is an End to End DevOps solution provider<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\r\n<div class=\"wp-block-button is-style-fill\"><a class=\"wp-block-button__link\" href=\"https:\/\/www.opstree.com\/contact-us\" target=\"_blank\" rel=\"noreferrer noopener\">CONTACT US<\/a><\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<p class=\"has-text-align-center\"><strong>Connect Us <\/strong><\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-social-links aligncenter is-content-justification-right is-layout-flex wp-container-core-social-links-is-layout-1 wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a href=\"https:\/\/www.linkedin.com\/company\/opstree-solutions\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">LinkedIn<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a href=\"https:\/\/www.youtube.com\/channel\/UCeLma6SpNYH7jjYKSBNSexw\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">YouTube<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-github  wp-block-social-link\"><a href=\"https:\/\/github.com\/OpsTree\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">GitHub<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-facebook  wp-block-social-link\"><a href=\"https:\/\/www.facebook.com\/opstree\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Facebook<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-medium  wp-block-social-link\"><a href=\"https:\/\/medium.com\/buildpiper\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20.962,7.257l-5.457,8.867l-3.923-6.375l3.126-5.08c0.112-0.182,0.319-0.286,0.527-0.286c0.05,0,0.1,0.008,0.149,0.02 c0.039,0.01,0.078,0.023,0.114,0.041l5.43,2.715l0.006,0.003c0.004,0.002,0.007,0.006,0.011,0.008 C20.971,7.191,20.98,7.227,20.962,7.257z M9.86,8.592v5.783l5.14,2.57L9.86,8.592z M15.772,17.331l4.231,2.115 C20.554,19.721,21,19.529,21,19.016V8.835L15.772,17.331z M8.968,7.178L3.665,4.527C3.569,4.479,3.478,4.456,3.395,4.456 C3.163,4.456,3,4.636,3,4.938v11.45c0,0.306,0.224,0.669,0.498,0.806l4.671,2.335c0.12,0.06,0.234,0.088,0.337,0.088 c0.29,0,0.494-0.225,0.494-0.602V7.231C9,7.208,8.988,7.188,8.968,7.178z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Medium<\/span><\/a><\/li><\/ul>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>Kubernetes is an open-source container orchestration platform used for running distributed applications and services at scale. Merely knowing the basics of Kubernetes won\u2019t be sufficient enough in order to leverage the many advantages that it offers. It\u2019s important to first understand the complete Kubernetes architecture, its components and how they interact with each other to &hellip; <a href=\"https:\/\/opstree.com\/blog\/2021\/11\/18\/an-introduction-to-kubernetes-architecture%ef%bf%bc\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;An Introduction to Kubernetes Architecture! \ufffc&#8221;<\/span><\/a><\/p>\n","protected":false},"author":207103662,"featured_media":29900,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[28070474],"tags":[273,768739309,502915258,343865],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/11\/DevSecOps-1.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-2m4","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/9056"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/207103662"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=9056"}],"version-history":[{"count":9,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/9056\/revisions"}],"predecessor-version":[{"id":30011,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/9056\/revisions\/30011"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29900"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=9056"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=9056"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=9056"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}