<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: aniket ghosh</title>
    <description>The latest articles on DEV Community by aniket ghosh (@aniketh3014).</description>
    <link>https://dev.to/aniketh3014</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1099744%2F4bd7503b-7aa2-4dcb-948e-4fd01c131116.jpg</url>
      <title>DEV Community: aniket ghosh</title>
      <link>https://dev.to/aniketh3014</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aniketh3014"/>
    <language>en</language>
    <item>
      <title>Kubernetes: Part 2- Worker Node Components overview</title>
      <dc:creator>aniket ghosh</dc:creator>
      <pubDate>Wed, 06 Sep 2023 05:59:58 +0000</pubDate>
      <link>https://dev.to/aniketh3014/kubernetes-part-2-worker-node-components-overview-3lj6</link>
      <guid>https://dev.to/aniketh3014/kubernetes-part-2-worker-node-components-overview-3lj6</guid>
      <description>&lt;p&gt;A worker node provides a running environment for client applications. These applications are microservices running as application containers. In Kubernetes the application containers are encapsulated in Pods, controlled by the cluster control plane agents running on the control plane node. Pods are scheduled on worker nodes, where they find required compute, memory and storage resources to run, and networking to talk to each other and the outside world. A Pod is the smallest scheduling work unit in Kubernetes. It is a logical collection of one or more containers scheduled together, and the collection can be started, stopped, or rescheduled as a single unit of work. &lt;/p&gt;

&lt;p&gt;Also, in a multi-worker Kubernetes cluster, the network traffic between client users and the containerized applications deployed in Pods is handled directly by the worker nodes, and is not routed through the control plane node.&lt;/p&gt;

&lt;p&gt;A worker node has following components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Container Runtime&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Node Agent-Kubelet&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proxy - kube-proxy&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add-ons for DNS, Dashboard user interface, cluster-level monitoring and logging.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Container Runtime
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lMS1fRTt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vn4zoelh30798cbdtu9d.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lMS1fRTt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vn4zoelh30798cbdtu9d.jpeg" alt="Image description" width="306" height="164"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Although Kubernetes is described as a "container orchestration engine", it lacks the capability to directly handle and run containers. In order to manage a container's lifecycle, Kubernetes requires a container runtime on the node where a Pod and its containers are to be scheduled. Runtimes are required on all nodes of a Kubernetes cluster, both control plane and worker. Kubernetes supports several &lt;strong&gt;container runtimes&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://cri-o.io/"&gt;CRI-O&lt;/a&gt;
A lightweight container runtime for Kubernetes, supporting quay.io and Docker Hub image registries.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://containerd.io/"&gt;containerd&lt;/a&gt;
A simple, robust, and portable container runtime.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.docker.com/"&gt;Docker Engine&lt;/a&gt;
A popular and complex container platform which uses containerd as a container runtime.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.mirantis.com/software/mirantis-container-runtime/"&gt;Mirantis Container Runtime&lt;/a&gt;
Formerly known as the Docker Enterprise Edition.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Node Agent-kubelet
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;kubelet&lt;/strong&gt; is an agent running on each node, control plane and workers, and communicates with the control plane. It receives Pod definitions, primarily from the API Server, and interacts with the container runtime on the node to run containers associated with the Pod. It also monitors the health and resources of Pods running containers.&lt;/p&gt;

&lt;p&gt;The kubelet connects to container runtimes through a plugin based interface - the &lt;strong&gt;Container Runtime Interface (CRI)&lt;/strong&gt;. The CRI consists of protocol buffers, &lt;strong&gt;&lt;a href="https://grpc.io/"&gt;gRPC API&lt;/a&gt;&lt;/strong&gt;, libraries, and additional specifications and tools. In order to connect to interchangeable container runtimes, kubelet uses a &lt;strong&gt;&lt;a href="https://kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-kubernetes/"&gt;CRI shim&lt;/a&gt;&lt;/strong&gt;, an application which provides a clear abstraction layer between kubelet and the container runtime.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a-FPihJV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/71jq57nqym8a90q6te44.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a-FPihJV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/71jq57nqym8a90q6te44.png" alt="Image description" width="800" height="238"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As shown above, the kubelet acting as grpc client connects to the CRI shim acting as grpc server to perform container and image operations. The CRI implements two services: &lt;strong&gt;ImageService&lt;/strong&gt; and &lt;strong&gt;RuntimeService&lt;/strong&gt;. The &lt;strong&gt;ImageService&lt;/strong&gt; is responsible for all the image-related operations, while the &lt;strong&gt;RuntimeService&lt;/strong&gt; is responsible for all the Pod and container-related operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  kubelet - CRI shims
&lt;/h2&gt;

&lt;p&gt;Now let's explore kubelet and CRI shims little bit more,&lt;/p&gt;

&lt;p&gt;Originally the kubelet agent supported only a couple of container runtimes, first the Docker Engine followed by rkt, through a unique interface model integrated directly in the kubelet source code. However, this approach was not intended to last forever even though it was especially beneficial for Docker. In time, Kubernetes started migrating towards a standardized approach to container runtime integration by introducing the CRI. Kubernetes adopted a decoupled and flexible method to integrate with various container runtimes without the need to recompile its source code. Any container runtime that implements the CRI could be used by Kubernetes to manage containers.&lt;/p&gt;

&lt;p&gt;Shims are Container Runtime Interface (CRI) implementations, interfaces or adapters, specific to each container runtime supported by Kubernetes. Here are some examples of CRI shims:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;cri-containerd&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;cri-containerd allows containers to be directly created and managed with containerd at kubelet's request:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AhFsE_Od--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lmiy1tlgjq0inq3mp2ay.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AhFsE_Od--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lmiy1tlgjq0inq3mp2ay.png" alt="Image description" width="800" height="238"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CRI-O&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CRI-O enables the use of any Open Container Initiative (OCI) compatible runtime with Kubernetes, such as runC:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Hef0A_Fn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ouy1sdl6ueorru6uca14.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Hef0A_Fn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ouy1sdl6ueorru6uca14.png" alt="Image description" width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;dockershim&lt;/strong&gt; and &lt;strong&gt;cri-dockerd&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before Kubernetes release v1.24 the dockershim allowed containers to be created and managed by invoking the Docker Engine and its internal runtime &lt;strong&gt;containerd&lt;/strong&gt;. Due to Docker Engine's popularity, this shim has been the default interface used by kubelet. However, starting with Kubernetes release v1.24, the dockershim is no longer being maintained by the Kubernetes project, its specific code is removed from kubelet source code, thus will no longer be supported by the kubelet node agent of Kubernetes. As a result, Docker, Inc., and Mirantis have agreed to introduce and maintain a replacement adapter, cri-dockerd that would ensure that the Docker Engine will continue to be a container runtime option for Kubernetes, in addition to the &lt;strong&gt;Mirantis Container Runtime (MCR)&lt;/strong&gt;. The introduction of cri-dockerd also ensures that both Docker Engine and MCR follow the same standardized integration method as the &lt;strong&gt;CRI-compatible runtimes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yZ3i2jvP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/75kvblxkmpc4hsk9kinl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yZ3i2jvP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/75kvblxkmpc4hsk9kinl.png" alt="Image description" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Additional details about the deprecation process of the dockershim can be found on the Updated: &lt;a href="https://kubernetes.io/blog/2022/02/17/dockershim-faq/"&gt;Dockershim Removal FAQ&lt;/a&gt; page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Proxy - kube-proxy
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;kube-proxy&lt;/strong&gt; is the network agent which runs on each node, control plane and workers, responsible for dynamic updates and maintenance of all networking rules on the node. It abstracts the details of Pods networking and forwards connection requests to the containers in the Pods. &lt;/p&gt;

&lt;p&gt;The kube-proxy is responsible for &lt;strong&gt;TCP&lt;/strong&gt;, &lt;strong&gt;UDP&lt;/strong&gt;, and &lt;strong&gt;SCTP stream&lt;/strong&gt; forwarding or random forwarding across a set of Pod backends of an application, and it implements forwarding rules defined by users through Service API objects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Add-ons
&lt;/h2&gt;

&lt;p&gt;Add-ons are cluster features and functionality not yet available in Kubernetes, therefore implemented through 3rd-party pods and services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DNS&lt;/strong&gt;: Cluster DNS is a DNS server required to assign DNS records to Kubernetes objects and resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dashboard&lt;/strong&gt;: A general purpose web-based user interface for cluster management.            &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monitoring&lt;/strong&gt;:  Collects cluster-level container metrics and saves them to a central data store.            &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Logging&lt;/strong&gt;: Collects cluster-level container logs and saves them to a central log store for analysis.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The worker node components, including the kubelet, kube-proxy, and container runtime, work together like a well-oiled machine to keep our applications running smoothly. Whether you’re new to Kubernetes or an experienced user, understanding these components is key to unlocking its full potential. And don’t worry if it all seems a bit overwhelming at first - we’re all learning together!&lt;br&gt;
Stay tuned for my next part of the blog where I’ll dive into the exciting world of Kubernetes networking. See you there! 😊&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Kubernetes: Part 1- Control Plane Node Components overview</title>
      <dc:creator>aniket ghosh</dc:creator>
      <pubDate>Thu, 31 Aug 2023 10:00:33 +0000</pubDate>
      <link>https://dev.to/aniketh3014/kubernetes-part-1-control-plane-node-components-overview-27hg</link>
      <guid>https://dev.to/aniketh3014/kubernetes-part-1-control-plane-node-components-overview-27hg</guid>
      <description>&lt;p&gt;The control plane node provides a running environment for the control plane agents responsible for managing the state of a Kubernetes cluster, and it is the brain behind all operations inside the cluster. The control plane components are agents with very distinct roles in the cluster's management. In order to communicate with the Kubernetes cluster, users send requests to the control plane via a Command Line Interface (CLI) tool, a Web User-Interface (Web UI) Dashboard, or an Application Programming Interface (API).&lt;/p&gt;

&lt;p&gt;It is important to keep the control plane running at all costs. Losing the control plane may introduce downtime, causing service disruption to clients, with possible loss of business.&lt;/p&gt;

&lt;p&gt;A control plane node runs the following essential control plane components and agents:           &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;API Server&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scheduler&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Controller Managers&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Key-Value Data Store.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  API Server
&lt;/h3&gt;

&lt;p&gt;All the administrative tasks are coordinated by the &lt;strong&gt;kube-apiserver&lt;/strong&gt;, a central control plane component running on the control plane node. The API Server intercepts RESTful calls from users, administrators, developers, operators and external agents, then validates and processes them. During processing the API Server reads the Kubernetes cluster's current state from the &lt;strong&gt;key-value store&lt;/strong&gt;, and after a call's execution, the resulting state of the Kubernetes cluster is saved in the key-value store for persistence. The API Server is the only control plane component to talk to the key-value store, both to read from and to save Kubernetes cluster state information acting as a middle interface for any other control plane agent inquiring about the cluster's state.&lt;/p&gt;

&lt;p&gt;The API Server is highly configurable and customizable. It can scale horizontally, but it also supports the addition of custom secondary API Servers, a configuration that transforms the primary API Server into a proxy to all secondary, custom API Servers, routing all incoming RESTful calls to them based on custom defined rules.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scheduler
&lt;/h3&gt;

&lt;p&gt;A scheduler is extremely important and complex in a multi-node Kubernetes cluster, while in a single-node Kubernetes cluster possibly used for learning and development purposes, the scheduler's job is quite simple.&lt;/p&gt;

&lt;p&gt;The role of the &lt;strong&gt;kube-scheduler&lt;/strong&gt; is to assign new workload objects, such as pods encapsulating containers, to nodes - typically worker nodes. During the scheduling process,decisions are made based on current Kubernetes cluster state and new workload object's requirements. The scheduler obtains from the &lt;strong&gt;key-value store&lt;/strong&gt;, via the API Server, resource usage data for each worker node in the cluster.&lt;br&gt;
The scheduler also receives from the API Server the new workload object's requirements which are part of its configuration data. Requirements may include constraints that users and operators set, such as scheduling work on a node labeled with &lt;strong&gt;disk==ssd&lt;/strong&gt; key-value pair. The scheduler also takes into account Quality of Service (QoS) requirements, data locality, affinity, anti-affinity, taints, toleration, cluster topology, etc. Once all the cluster data is available, the scheduling algorithm filters the nodes with predicates to isolate the possible node candidates which then are scored with priorities in order to select the one node that satisfies all the requirements for hosting the new workload. The outcome of the decision process is communicated back to the API Server, which then delegates the workload deployment with other control plane agents.&lt;/p&gt;

&lt;h3&gt;
  
  
  Controller Managers
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;controller managers&lt;/strong&gt; are components of the control plane node running controllers or operator processes to regulate the state of the Kubernetes cluster.Controllers are watch-loop processes continuously running and comparing the cluster's desired state (provided by objects' configuration data) with its current state (obtained from the key-value store via the API Server).In case of a mismatch,corrective action is taken in the cluster until its current state matches the desired state.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;kube-controller-manager&lt;/strong&gt; runs controllers or operators responsible to act when nodes become unavailable, to ensure container pod counts are as expected, to create endpoints, service accounts, and API access tokens.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;cloud-controller-manager&lt;/strong&gt; runs controllers or operators responsible to interact with the underlying infrastructure of a cloud provider when nodes become unavailable, to manage storage volumes when provided by a cloud service, and to manage load balancing and routing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key-Value Data Store
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;etcd&lt;/strong&gt; is an open source project under the &lt;strong&gt;Cloud Native Computing Foundation (CNCF)&lt;/strong&gt;. etcd is a strongly consistent, distributed key-value data store used to persist a Kubernetes cluster's state. New data is written to the data store only by appending to it, data is never replaced in the data store. Obsolete data is compacted (or shredded) periodically to minimize the size of the data store.&lt;/p&gt;

&lt;p&gt;Out of all the control plane components, only the API Server is able to communicate with the etcd data store.&lt;/p&gt;

&lt;p&gt;etcd's CLI management tool - &lt;strong&gt;etcdctl&lt;/strong&gt;, provides snapshot save and restore capabilities which come in handy especially for a single etcd instance Kubernetes cluster - common in Development and learning environments. However, in Stage and Production environments, it is extremely important to replicate the data stores in HA mode, for cluster configuration data resiliency.&lt;/p&gt;

&lt;p&gt;Some Kubernetes cluster bootstrapping tools, such as &lt;strong&gt;kubeadm&lt;/strong&gt;, by default, provision &lt;strong&gt;stacked etcd&lt;/strong&gt; control plane nodes, where the data store runs alongside and shares resources with the other control plane components on the same control plane node.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N-3tGAiV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8mde7nvh5xc3aryolrln.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N-3tGAiV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8mde7nvh5xc3aryolrln.png" alt="Image description" width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For data store isolation from the control plane components, the bootstrapping process can be configured for an &lt;strong&gt;external etcd&lt;/strong&gt; topology, where the data store is provisioned on a dedicated separate host, thus reducing the chances of an etcd failure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DnsxGvn6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uhenoripazss82m8zz8t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DnsxGvn6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uhenoripazss82m8zz8t.png" alt="Image description" width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Both stacked and external etcd topologies support HA configurations. etcd is based on the &lt;strong&gt;Raft Consensus Algorithm&lt;/strong&gt; which allows a collection of machines to work as a coherent group that can survive the failures of some of its members. At any given time, one of the nodes in the group will be the leader, and the rest of them will be the followers. etcd gracefully handles leader elections and can tolerate node failure, including leader node failures. Any node can be treated as a leader.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PhZnGRcs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/23f5nb2l1l80tnabhav1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PhZnGRcs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/23f5nb2l1l80tnabhav1.png" alt="Image description" width="800" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;etcd is written in the Go programming language. In Kubernetes, besides storing the cluster state, etcd is also used to store configuration details such as subnets, ConfigMaps, Secrets, etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;In this blog post, we've toured the essential components of Kubernetes' control plane. Our aim was to shed light on the key players driving your cluster's management.&lt;br&gt;
In the next part of the series we will dive into the Worker node components.&lt;/p&gt;

&lt;p&gt;If you want to learn more about it, I can recommend you to take a look at the &lt;a href="https://kubernetes.io/docs/concepts/overview/components/#control-plane-components"&gt;Kubernetes reference documentation.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>cloud</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
