{"id":4923,"date":"2026-11-03T04:33:57","date_gmt":"2026-11-02T23:03:57","guid":{"rendered":"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/"},"modified":"2026-11-03T04:33:57","modified_gmt":"2026-11-02T23:03:57","slug":"what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration","status":"publish","type":"post","link":"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/","title":{"rendered":"What is Kubernetes? The Ultimate Guide to K8s Orchestration"},"content":{"rendered":"<p>text<br \/>\nMar 14 03:14:02 node-prod-042 kubelet[1402]: E0314 03:14:02.124 node_container_manager_linux.go:612] &#8220;Failed to update control group&#8221; err=&#8221;failed to set config for cgroup v2: write \/sys\/fs\/cgroup\/kubepods.slice\/kubepods-burstable.slice\/kubepods-burstable-pod823.slice\/memory.max: invalid argument&#8221;<br \/>\nMar 14 03:14:05 node-prod-042 kubelet[1402]: I0314 03:14:05.441 status_manager.go:614] &#8220;Patch status for pod failed&#8221; pod=&#8221;default\/api-gateway-7f8d9b&#8221; err=&#8221;rpc error: code = Unavailable desc = keepalive ping failed&#8221;<br \/>\nMar 14 03:14:08 control-plane-01 kube-apiserver[821]: E0314 03:14:08.992 leaderelection.go:330] error retrieving resource lock default\/kube-scheduler: Get &#8220;https:\/\/10.0.0.1:6443\/api\/v1\/namespaces\/kube-system\/endpoints\/kube-scheduler&#8221;: context deadline exceeded<br \/>\nMar 14 03:14:10 control-plane-01 etcd[912]: warning: apply request took too long (1.42s)<br \/>\nMar 14 03:14:10 control-plane-01 etcd[912]: warning: high disk watermarks exceeded; database size 2.1GB<\/p>\n<pre class=\"codehilite\"><code>Sit down. Grab a coffee\u2014black, no sugar, the same way I like my logs. If you\u2019re here looking for a &quot;smooth transition to the cloud&quot; or some &quot;synergistic container orchestration,&quot; you\u2019re in the wrong place. I\u2019ve spent fifteen years watching servers die in ways that would make your skin crawl. I\u2019ve seen bare-metal racks melt because a fan controller failed, and I\u2019ve seen 500-node clusters commit suicide because a junior dev thought they could &quot;optimize&quot; the etcd heartbeat interval.\n\nLast Tuesday, at 3:14 AM, the pager went off. By 3:20 AM, the entire production environment was a smoking crater. This wasn't a hacker. It wasn't a hardware failure. It was the system doing exactly what it was told to do. It was Kubernetes.\n\nPeople ask me, &quot;What is Kubernetes?&quot; They want a simple answer. They want to hear it\u2019s a &quot;cloud operating system.&quot; It\u2019s not. Kubernetes is a massive, distributed, eventual-consistency engine that manages the lifecycle of Linux primitives. It\u2019s a platform for building platforms. And if you don't respect the underlying plumbing\u2014the cgroups, the namespaces, the iptables, and the Raft consensus\u2014it will eat your data and your weekend.\n\n## The Night the Scheduler Died: The Control Plane Bureaucracy\n\nTo understand what happened, you have to understand the Control Plane. Think of it as a failing government bureaucracy. You have the API Server (the front desk), etcd (the filing cabinet), the Scheduler (the HR department), and the Controller Manager (the middle managers).\n\nIn our case, the failure started with **Control Plane pressure**. We were running v1.29, and someone decided to deploy a new monitoring agent as a DaemonSet across the entire cluster without setting proper taints and tolerations. This agent had a bug: it started spamming the API server with CRD (Custom Resource Definition) updates every 100 milliseconds.\n\nThe API Server is the only component that talks to etcd. When the API Server gets overwhelmed, it starts to throttle. When etcd\u2014the source of truth\u2014can't commit a write because the disk I\/O is saturated by useless CRD sprawl, the whole cluster loses its mind.\n\n```bash\n# This is what the carnage looked like from the bastion host\n$ kubectl get nodes\nNAME             STATUS     ROLES           AGE   VERSION\nnode-prod-001    Ready      worker          142d  v1.29.2\nnode-prod-002    NotReady   worker          142d  v1.29.2\nnode-prod-003    NotReady   worker          142d  v1.29.2\nnode-prod-042    NotReady   worker          12d   v1.29.2\ncontrol-plane-01 Ready      control-plane   142d  v1.29.2\n\n$ kubectl get pods -A | grep -v Running | wc -l\n1422\n<\/code><\/pre>\n<p>When the nodes went <code>NotReady<\/code>, it wasn&#8217;t because the servers were down. It was because the <code>kubelet<\/code> on those nodes couldn&#8217;t post its heartbeat to the API Server. The &#8220;bureaucracy&#8221; was so busy filing useless paperwork that it didn&#8217;t notice the building was on fire. The Scheduler, seeing nodes as &#8220;NotReady,&#8221; decided it was time to &#8220;evict&#8221; the pods. This is where the cascading failure truly begins.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_89 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6ae951d1e3fb5\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6ae951d1e3fb5\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/#The_Reconciliation_Loop_A_Sisyphean_Nightmare\" >The Reconciliation Loop: A Sisyphean Nightmare<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/#Why_Your_YAML_is_a_Lie_The_Data_Plane_Reality\" >Why Your YAML is a Lie: The Data Plane Reality<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/#CRD_Sprawl_and_the_Death_of_the_API_Server\" >CRD Sprawl and the Death of the API Server<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/#Its_Not_a_Platform_Its_a_Construction_Site\" >It\u2019s Not a Platform, It\u2019s a Construction Site<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/#The_Cost_of_Complexity\" >The Cost of Complexity<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/#Post-Mortem_Summary_Lessons_from_the_Trenches\" >Post-Mortem Summary: Lessons from the Trenches<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/#Related_Articles\" >Related Articles<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"The_Reconciliation_Loop_A_Sisyphean_Nightmare\"><\/span>The Reconciliation Loop: A Sisyphean Nightmare<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The heart of Kubernetes is the <strong>Reconciliation Loop<\/strong>. It\u2019s a simple concept: <code>Current State<\/code> vs. <code>Desired State<\/code>. The system constantly asks, &#8220;What do I have?&#8221; and &#8220;What did the user ask for?&#8221; If they don&#8217;t match, it acts.<\/p>\n<p>In a healthy cluster, this is beautiful. In a dying cluster, it\u2019s a death spiral. Because the nodes were marked <code>NotReady<\/code>, the Controller Manager decided the <code>Current State<\/code> (zero pods running on those nodes) didn&#8217;t match the <code>Desired State<\/code> (the replicas defined in the Deployments). So, it started scheduling thousands of pods onto the remaining &#8220;Ready&#8221; nodes.<\/p>\n<p>Those nodes were already at 80% capacity. Suddenly, they were hit with a 400% increase in load. This is why &#8220;what is&#8221; a pod matters. A pod isn&#8217;t a VM. It\u2019s a group of Linux namespaces (UTS, IPC, PID, Network, Mount) and cgroup constraints. When you jam 50 pods onto a node that only has room for 10, you aren&#8217;t just &#8220;overloading&#8221; it; you are starving the kernel.<\/p>\n<pre class=\"codehilite\"><code class=\"language-bash\"># Checking the kernel logs on a dying node\n$ journalctl -k | grep -i &quot;out of memory&quot;\n[12042.12] oom-kill: constraint=CONSTRAINT_MEMCG,nodemask=(null),cpuset=kubepods-burstable-pod.slice,mems_allowed=0,oom_memcg=\/kubepods.slice\/kubepods-burstable.slice\/kubepods-burstable-pod823.slice,task_memcg=\/kubepods.slice\/kubepods-burstable.slice\/kubepods-burstable-pod823.slice\/container-main,task=java,pid=28441,uid=1000\n[12042.15] Memory cgroup out of memory: Killed process 28441 (java) total-vm:5421244kB, anon-rss:2104212kB, file-rss:0kB, shmem-rss:0kB, spid:28441, oom_score_adj:985\n<\/code><\/pre>\n<p>The <strong>OOMKiller<\/strong> (Out of Memory Killer) is the kernel&#8217;s last resort. It started reaping Java processes like a scythe through wheat. But because of the Reconciliation Loop, every time the kernel killed a process, Kubernetes saw the &#8220;Desired State&#8221; wasn&#8217;t met and tried to restart it. We were in a loop of death: Kill, Restart, Kill, Restart.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Why_Your_YAML_is_a_Lie_The_Data_Plane_Reality\"><\/span>Why Your YAML is a Lie: The Data Plane Reality<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Everyone loves YAML. It\u2019s clean, it\u2019s readable, and it\u2019s usually wrong. When you write a Deployment manifest, you are making a promise to the cluster. If you lie in that promise, the cluster will eventually punish you.<\/p>\n<p>The biggest lie is in the <code>resources<\/code> section. In v1.30, there have been improvements in how memory pressure is handled, but the fundamental physics haven&#8217;t changed. If you don&#8217;t set <code>limits<\/code>, a rogue pod can consume the entire node&#8217;s memory, starving the <code>kubelet<\/code> and <code>containerd<\/code>. If you set <code>limits<\/code> too low, you get <strong>OOMKilled<\/strong>. If you set <code>requests<\/code> too low, the scheduler over-provisions the node.<\/p>\n<p>Look at this manifest. This is a classic example of &#8220;how to kill a cluster.&#8221;<\/p>\n<pre class=\"codehilite\"><code class=\"language-yaml\">apiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: legacy-api\nspec:\n  replicas: 100\n  template:\n    spec:\n      containers:\n      - name: api-container\n        image: our-shitty-app:v1.4.2\n        resources:\n          requests:\n            memory: &quot;64Mi&quot;\n            cpu: &quot;250m&quot;\n          limits:\n            memory: &quot;4Gi&quot; # This is the trap\n            cpu: &quot;2&quot;\n<\/code><\/pre>\n<p>Why is this a trap? Because the <strong>Scheduler<\/strong> uses <code>requests<\/code> to place the pod, but the <strong>Kernel<\/strong> uses <code>limits<\/code> to enforce usage. By setting a request of 64Mi and a limit of 4Gi, you are telling the scheduler: &#8220;I only need a tiny bit of space.&#8221; The scheduler then packs 100 of these pods onto a node with 32GB of RAM. If those pods actually start using 1GB each, you have 100GB of demand on a 32GB node. <\/p>\n<p>The node doesn&#8217;t just get slow. The kernel&#8217;s memory management subsystem enters a state of &#8220;thrashing,&#8221; trying to swap pages that don&#8217;t exist, and eventually, the <code>kubelet<\/code> (the agent that talks to the API server) stops responding. The node goes <code>NotReady<\/code>. The cycle repeats.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"CRD_Sprawl_and_the_Death_of_the_API_Server\"><\/span>CRD Sprawl and the Death of the API Server<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>In the old days (five years ago), Kubernetes was simpler. You had Pods, Services, and Deployments. Now, we have <strong>CRD sprawl<\/strong>. Every tool you install\u2014Istio, Linkerd, ArgoCD, Crossplane\u2014adds dozens of Custom Resource Definitions. <\/p>\n<p>Each CRD adds load to the API Server. Each one requires the API Server to perform validation, conversion, and storage in etcd. During our collapse, we discovered that a &#8220;Service Mesh&#8221; we were trialing had injected a sidecar into every pod. This sidecar had its own set of CRDs that were being updated every time a pod restarted.<\/p>\n<p>When the OOMKill-Restart loop started, the API Server was hit with a tidal wave of &#8220;Sidecar Injection&#8221; requests. In Kubernetes v1.28+, sidecar containers became a native feature (using <code>initContainers<\/code> with <code>restartPolicy: Always<\/code>). This was supposed to make things better, but because we were still using an older version of the mesh that relied on mutating admission webhooks, the API Server was stuck waiting for a webhook that was running on a node&#8230; that was currently dying of memory exhaustion.<\/p>\n<p>This is a <strong>circular dependency<\/strong>. The API Server can&#8217;t start the pod because the webhook is down, and the webhook is down because the API Server can&#8217;t schedule the pod it lives in.<\/p>\n<pre class=\"codehilite\"><code class=\"language-bash\"># Trying to debug the admission webhook timeout\n$ kubectl get events -n kube-system\nLAST SEEN   TYPE      REASON                    OBJECT                                  MESSAGE\n12s         Warning   FailedCreate              replicaset\/api-gateway-7f8d9b           Error creating: Internal error occurred: failed calling webhook &quot;namespace.sidecar-injector.istio.io&quot;: failed to call webhook: Post &quot;https:\/\/istio-sidecar-injector.istio-system.svc:443\/inject?timeout=10s&quot;: context deadline exceeded\n<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Its_Not_a_Platform_Its_a_Construction_Site\"><\/span>It\u2019s Not a Platform, It\u2019s a Construction Site<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>If you take one thing away from this post-mortem, let it be this: <strong>Kubernetes is not a platform.<\/strong> If you treat it like a finished product where you just &#8220;deploy and forget,&#8221; you will fail. Kubernetes is a set of tools for building a platform. <\/p>\n<p>To survive a 3:00 AM failure, you need to have built:<br \/>\n1.  <strong>Proper Resource Quotas:<\/strong> To prevent one team from killing the whole cluster.<br \/>\n2.  <strong>PriorityClasses:<\/strong> To ensure that your critical DNS and CNI pods don&#8217;t get evicted before your &#8220;shitty-app-v1.4.2.&#8221;<br \/>\n3.  <strong>Pod Disruption Budgets:<\/strong> To tell the scheduler, &#8220;I don&#8217;t care how panicked you are, you cannot kill more than 10% of these pods at once.&#8221;<br \/>\n4.  <strong>Taints and Tolerations:<\/strong> To keep your heavy-duty workloads away from your sensitive control plane components.<\/p>\n<p>We spent four hours that night manually killing pods and scaling deployments to zero just to give the API Server enough breathing room to process the backlog. We had to manually edit the etcd database (a terrifying task involving <code>etcdctl<\/code> and a lot of prayer) to remove the thousands of &#8220;Event&#8221; objects that were clogging the pipes.<\/p>\n<pre class=\"codehilite\"><code class=\"language-bash\"># Cleaning up the event backlog to save etcd\n$ export ETCDCTL_API=3\n$ etcdctl del \/registry\/events\/ --prefix\n<\/code><\/pre>\n<p>Only after we cleared the events and stopped the &#8220;Reconciliation Loop&#8221; from trying to restart the dead pods could we actually begin to recover. We had to disable the mutating webhook just to get the core networking services back online.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"The_Cost_of_Complexity\"><\/span>The Cost of Complexity<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>What is the real cost of Kubernetes? It\u2019s not the cloud bill. It\u2019s the &#8220;cognitive load.&#8221; It\u2019s the fact that to run a &#8220;simple&#8221; web app, your SREs need to understand:<br \/>\n*   <strong>The CNI (Container Network Interface):<\/strong> How <code>iptables<\/code> or <code>IPVS<\/code> rules are being programmed across the cluster to route traffic to pods that might move at any second.<br \/>\n*   <strong>The CSI (Container Storage Interface):<\/strong> Why a stale NFS mount can lock up a <code>kubelet<\/code> thread and turn a node into a zombie.<br \/>\n*   <strong>The CRI (Container Runtime Interface):<\/strong> The difference between <code>containerd<\/code> and <code>CRI-O<\/code>, and why <code>runc<\/code> occasionally leaks file descriptors.<\/p>\n<p>In v1.30, we\u2019re seeing more &#8220;structured logging&#8221; and &#8220;node log query&#8221; features. These are nice. They\u2019re great. But they don&#8217;t fix the fact that most teams are running clusters they don&#8217;t understand. They are using &#8220;Helm Charts&#8221; they found on the internet that have no resource limits and no liveness probes.<\/p>\n<p>A liveness probe is another double-edged sword. If your app gets slow because the database is struggling, and your liveness probe fails, Kubernetes will restart the app. Now, instead of a slow app, you have an app that is constantly restarting, losing its cache, and putting <em>more<\/em> load on the database during its startup sequence. Congratulations, you\u2019ve just turned a minor slowdown into a total outage.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Post-Mortem_Summary_Lessons_from_the_Trenches\"><\/span>Post-Mortem Summary: Lessons from the Trenches<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>We recovered the cluster by 08:00 AM. The &#8220;marketing speak&#8221; version of the report said we &#8220;experienced a transient instability in the control plane due to unexpected load.&#8221; <\/p>\n<p>The truth? We were arrogant. We thought we could treat Kubernetes like a black box. We forgot that underneath the &#8220;seamless&#8221; API, there is a chaotic mess of Linux kernel calls and distributed consensus protocols.<\/p>\n<p>If you want to run Kubernetes, you need to stop reading the &#8220;Getting Started&#8221; guides and start reading the source code. You need to understand how the <code>kube-proxy<\/code> interacts with the <code>conntrack<\/code> table. You need to know why <code>etcd<\/code> needs a high-IOPS disk (hint: it\u2019s the <code>fsync<\/code> latency). <\/p>\n<p>Kubernetes is a powerful tool. It\u2019s the best tool we have for managing scale. But it\u2019s a tool that requires a master&#8217;s touch. If you treat it like a toy, it will break your heart, your budget, and your sleep schedule.<\/p>\n<p>Now, if you&#8217;ll excuse me, I have another alert. It looks like the <code>v1.30<\/code> upgrade on the staging cluster just broke the <code>Ingress<\/code> controller because of a deprecated annotation. Back to the trenches.<\/p>\n<p><strong>Final Checklist for the Sane SRE:<\/strong><br \/>\n1.  <strong>Set Requests and Limits:<\/strong> And for the love of God, make them realistic. Use <code>VerticalPodAutoscaler<\/code> in recommendation mode if you have to.<br \/>\n2.  <strong>Monitor etcd Latency:<\/strong> If your <code>wal_fsync_duration_seconds<\/code> is over 10ms, you are living on borrowed time.<br \/>\n3.  <strong>Use PodTopologySpreadConstraints:<\/strong> Don&#8217;t let the scheduler put all your eggs in one rack\/zone\/node.<br \/>\n4.  <strong>Understand the Reconciliation Loop:<\/strong> It is not your friend during an outage. It is a relentless machine that will continue to execute its programming until the heat death of the universe or until you kill the Controller Manager.<br \/>\n5.  <strong>Audit your CRDs:<\/strong> If you don&#8217;t know what a CRD does, don&#8217;t install it. Your API Server will thank you.<\/p>\n<p>Stay cynical. Stay technical. And keep your pager loud. You\u2019re going to need it.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Related_Articles\"><\/span>Related Articles<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Explore more insights and best practices:<\/p>\n<ul>\n<li><a href=\"https:\/\/itsupportwale.com\/blog\/artificial-intelligence-best-practices-a-complete-guide-6\/\">Artificial Intelligence Best Practices A Complete Guide 6<\/a><\/li>\n<li><a href=\"https:\/\/itsupportwale.com\/blog\/how-to-upgrade-to-python-3-12-on-ubuntu-20-04-and-22-04-lts\/\">How To Upgrade To Python 3 12 On Ubuntu 20 04 And 22 04 Lts<\/a><\/li>\n<li><a href=\"https:\/\/itsupportwale.com\/blog\/what-is-machine-learning-a-complete-beginners-guide-2\/\">What Is Machine Learning A Complete Beginners Guide 2<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>text Mar 14 03:14:02 node-prod-042 kubelet[1402]: E0314 03:14:02.124 node_container_manager_linux.go:612] &#8220;Failed to update control group&#8221; err=&#8221;failed to set config for cgroup v2: write \/sys\/fs\/cgroup\/kubepods.slice\/kubepods-burstable.slice\/kubepods-burstable-pod823.slice\/memory.max: invalid argument&#8221; Mar 14 03:14:05 node-prod-042 kubelet[1402]: I0314 03:14:05.441 status_manager.go:614] &#8220;Patch status for pod failed&#8221; pod=&#8221;default\/api-gateway-7f8d9b&#8221; err=&#8221;rpc error: code = Unavailable desc = keepalive ping failed&#8221; Mar 14 03:14:08 control-plane-01 kube-apiserver[821]: E0314 &#8230; <a title=\"What is Kubernetes? The Ultimate Guide to K8s Orchestration\" class=\"read-more\" href=\"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/\" aria-label=\"Read more  on What is Kubernetes? The Ultimate Guide to K8s Orchestration\">Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-4923","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>What is Kubernetes? The Ultimate Guide to K8s Orchestration<\/title>\n<meta name=\"description\" content=\"Discover what is Kubernetes and why it\u2019s the leading container orchestration tool. Learn how to automate deployment, scaling, and management of apps easily.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What is Kubernetes? The Ultimate Guide to K8s Orchestration\" \/>\n<meta property=\"og:description\" content=\"Discover what is Kubernetes and why it\u2019s the leading container orchestration tool. Learn how to automate deployment, scaling, and management of apps easily.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/\" \/>\n<meta property=\"og:site_name\" content=\"ITSupportWale\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Itsupportwale-298547177495978\" \/>\n<meta property=\"article:published_time\" content=\"2026-11-02T23:03:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/itsupportwale.com\/blog\/wp-content\/uploads\/2021\/05\/android-chrome-512x512-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"512\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Techie\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Techie\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\\\/\"},\"author\":{\"name\":\"Techie\",\"@id\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/#\\\/schema\\\/person\\\/8c5a2b3d36396e0a8fd91ec8242fd46d\"},\"headline\":\"What is Kubernetes? The Ultimate Guide to K8s Orchestration\",\"datePublished\":\"2026-11-02T23:03:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\\\/\"},\"wordCount\":1673,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/#organization\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\\\/\",\"url\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\\\/\",\"name\":\"What is Kubernetes? The Ultimate Guide to K8s Orchestration\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-11-02T23:03:57+00:00\",\"description\":\"Discover what is Kubernetes and why it\u2019s the leading container orchestration tool. Learn how to automate deployment, scaling, and management of apps easily.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What is Kubernetes? The Ultimate Guide to K8s Orchestration\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/\",\"name\":\"ITSupportWale\",\"description\":\"Tips, Tricks, Fixed-Errors, Tutorials &amp; Guides\",\"publisher\":{\"@id\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/#organization\",\"name\":\"itsupportwale\",\"url\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/09\\\/cropped-Logo-trans-without-slogan.png\",\"contentUrl\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/09\\\/cropped-Logo-trans-without-slogan.png\",\"width\":1119,\"height\":144,\"caption\":\"itsupportwale\"},\"image\":{\"@id\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Itsupportwale-298547177495978\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/#\\\/schema\\\/person\\\/8c5a2b3d36396e0a8fd91ec8242fd46d\",\"name\":\"Techie\",\"sameAs\":[\"https:\\\/\\\/itsupportwale.com\",\"iswblogadmin\"],\"url\":\"https:\\\/\\\/itsupportwale.com\\\/blog\\\/author\\\/iswblogadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What is Kubernetes? The Ultimate Guide to K8s Orchestration","description":"Discover what is Kubernetes and why it\u2019s the leading container orchestration tool. Learn how to automate deployment, scaling, and management of apps easily.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/","og_locale":"en_US","og_type":"article","og_title":"What is Kubernetes? The Ultimate Guide to K8s Orchestration","og_description":"Discover what is Kubernetes and why it\u2019s the leading container orchestration tool. Learn how to automate deployment, scaling, and management of apps easily.","og_url":"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/","og_site_name":"ITSupportWale","article_publisher":"https:\/\/www.facebook.com\/Itsupportwale-298547177495978","article_published_time":"2026-11-02T23:03:57+00:00","og_image":[{"width":512,"height":512,"url":"https:\/\/itsupportwale.com\/blog\/wp-content\/uploads\/2021\/05\/android-chrome-512x512-1.png","type":"image\/png"}],"author":"Techie","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Techie","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/#article","isPartOf":{"@id":"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/"},"author":{"name":"Techie","@id":"https:\/\/itsupportwale.com\/blog\/#\/schema\/person\/8c5a2b3d36396e0a8fd91ec8242fd46d"},"headline":"What is Kubernetes? The Ultimate Guide to K8s Orchestration","datePublished":"2026-11-02T23:03:57+00:00","mainEntityOfPage":{"@id":"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/"},"wordCount":1673,"commentCount":0,"publisher":{"@id":"https:\/\/itsupportwale.com\/blog\/#organization"},"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/","url":"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/","name":"What is Kubernetes? The Ultimate Guide to K8s Orchestration","isPartOf":{"@id":"https:\/\/itsupportwale.com\/blog\/#website"},"datePublished":"2026-11-02T23:03:57+00:00","description":"Discover what is Kubernetes and why it\u2019s the leading container orchestration tool. Learn how to automate deployment, scaling, and management of apps easily.","breadcrumb":{"@id":"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/itsupportwale.com\/blog\/what-is-kubernetes-the-ultimate-guide-to-k8s-orchestration\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/itsupportwale.com\/blog\/"},{"@type":"ListItem","position":2,"name":"What is Kubernetes? The Ultimate Guide to K8s Orchestration"}]},{"@type":"WebSite","@id":"https:\/\/itsupportwale.com\/blog\/#website","url":"https:\/\/itsupportwale.com\/blog\/","name":"ITSupportWale","description":"Tips, Tricks, Fixed-Errors, Tutorials &amp; Guides","publisher":{"@id":"https:\/\/itsupportwale.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/itsupportwale.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/itsupportwale.com\/blog\/#organization","name":"itsupportwale","url":"https:\/\/itsupportwale.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/itsupportwale.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/itsupportwale.com\/blog\/wp-content\/uploads\/2023\/09\/cropped-Logo-trans-without-slogan.png","contentUrl":"https:\/\/itsupportwale.com\/blog\/wp-content\/uploads\/2023\/09\/cropped-Logo-trans-without-slogan.png","width":1119,"height":144,"caption":"itsupportwale"},"image":{"@id":"https:\/\/itsupportwale.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Itsupportwale-298547177495978"]},{"@type":"Person","@id":"https:\/\/itsupportwale.com\/blog\/#\/schema\/person\/8c5a2b3d36396e0a8fd91ec8242fd46d","name":"Techie","sameAs":["https:\/\/itsupportwale.com","iswblogadmin"],"url":"https:\/\/itsupportwale.com\/blog\/author\/iswblogadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/itsupportwale.com\/blog\/wp-json\/wp\/v2\/posts\/4923","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itsupportwale.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itsupportwale.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itsupportwale.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/itsupportwale.com\/blog\/wp-json\/wp\/v2\/comments?post=4923"}],"version-history":[{"count":0,"href":"https:\/\/itsupportwale.com\/blog\/wp-json\/wp\/v2\/posts\/4923\/revisions"}],"wp:attachment":[{"href":"https:\/\/itsupportwale.com\/blog\/wp-json\/wp\/v2\/media?parent=4923"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itsupportwale.com\/blog\/wp-json\/wp\/v2\/categories?post=4923"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itsupportwale.com\/blog\/wp-json\/wp\/v2\/tags?post=4923"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}