<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Yuvraj - Bright Side of Dark]]></title><description><![CDATA[Yuvraj - Dark side of Bright]]></description><link>https://evalsocket.dev</link><generator>GatsbyJS</generator><lastBuildDate>Sun, 06 Sep 2026 16:22:07 GMT</lastBuildDate><item><title><![CDATA[Kueue Deep Dive: Job Queueing and Quotas for Kubernetes]]></title><link>https://evalsocket.dev/blog/kueue-deep-dive</link><guid isPermaLink="false">https://evalsocket.dev/blog/kueue-deep-dive</guid><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Kubernetes has a scheduler, but it has no queue. Submit more jobs than the cluster can run and it does not line them up; it admits them all,…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/kueue-deep-dive&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Kubernetes 1.37: DRA Device Management Lands, and the containerd Deadline Slips Again]]></title><link>https://evalsocket.dev/blog/k8s137</link><guid isPermaLink="false">https://evalsocket.dev/blog/k8s137</guid><pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Kubernetes 1.37, named after the Garhwal Himalaya, is a housekeeping release with one clear specialty: device management. Dynamic Resource…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/k8s137&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Go 1.27: Generic Methods, JSON v2 by Default, and Post-Quantum Signatures]]></title><link>https://evalsocket.dev/blog/go-1-27-deep-dive</link><guid isPermaLink="false">https://evalsocket.dev/blog/go-1-27-deep-dive</guid><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Go 1.27 is a bigger language release than most. After years of the restriction standing, methods can now declare their own type parameters…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/go-1-27-deep-dive&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Gang Scheduling in Kubernetes 1.35 and 1.36: The Road to All-or-Nothing]]></title><link>https://evalsocket.dev/blog/gang-scheduling-1-35-1-36</link><guid isPermaLink="false">https://evalsocket.dev/blog/gang-scheduling-1-35-1-36</guid><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A distributed training job needs all its pods or none. If the scheduler places half a gang and the rest cannot fit, those pods sit idle…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/gang-scheduling-1-35-1-36&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[API Priority and Fairness: Keeping the Control Plane Fair Under Load]]></title><link>https://evalsocket.dev/blog/api-priority-and-fairness</link><guid isPermaLink="false">https://evalsocket.dev/blog/api-priority-and-fairness</guid><pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When the API server is overloaded, the question is not just how many requests it drops but which ones. If a runaway controller&apos;s list…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/api-priority-and-fairness&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[JobSet for Distributed Training: Groups, Restarts, and Kueue Quota]]></title><link>https://evalsocket.dev/blog/jobset-distributed-training</link><guid isPermaLink="false">https://evalsocket.dev/blog/jobset-distributed-training</guid><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Distributed training runs many pods that must find each other, start together, and be treated as one job. A plain Kubernetes Job does not…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/jobset-distributed-training&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[API Server Survival Guide at Scale]]></title><link>https://evalsocket.dev/blog/apiserver-at-scale</link><guid isPermaLink="false">https://evalsocket.dev/blog/apiserver-at-scale</guid><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The kube-apiserver is the one component everything else talks to, and on a large cluster it is usually the first thing to fall over. It goes…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/apiserver-at-scale&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[DRA vs Device Plugins: When to Migrate and What You Gain]]></title><link>https://evalsocket.dev/blog/dra-vs-device-plugins</link><guid isPermaLink="false">https://evalsocket.dev/blog/dra-vs-device-plugins</guid><pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you run GPUs on Kubernetes, you have two ways to expose them: the device plugin API, which has been around for years, and Dynamic…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/dra-vs-device-plugins&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Kubernetes 1.36: PSI Metrics GA, User Namespaces GA, and a Quieter Cleanup Release]]></title><link>https://evalsocket.dev/blog/k8s136</link><guid isPermaLink="false">https://evalsocket.dev/blog/k8s136</guid><pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Kubernetes 1.36 is a cleanup and maturation release with two genuinely useful graduations: Pressure Stall Information (PSI) metrics and user…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/k8s136&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[LeaderWorkerSet: Serving Models Too Big for One Node]]></title><link>https://evalsocket.dev/blog/lws-multi-node-inference</link><guid isPermaLink="false">https://evalsocket.dev/blog/lws-multi-node-inference</guid><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Some models no longer fit on one machine. Llama 3.1 405B needs on the order of 800 GB of GPU memory, which is more than a single 8-GPU node…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/lws-multi-node-inference&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[How the kubelet Actually Starts a Pod]]></title><link>https://evalsocket.dev/blog/kubelet-pod-startup</link><guid isPermaLink="false">https://evalsocket.dev/blog/kubelet-pod-startup</guid><pubDate>Wed, 11 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A pod is Scheduled, then it sits in ContainerCreating for a while, then it runs. What happens in that gap is the kubelet&apos;s job, and when a…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/kubelet-pod-startup&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Kube-scheduler Internals: Writing a Filter and Score Plugin]]></title><link>https://evalsocket.dev/blog/kube-scheduler-plugin</link><guid isPermaLink="false">https://evalsocket.dev/blog/kube-scheduler-plugin</guid><pubDate>Wed, 18 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The default scheduler is good, but sometimes you need placement logic it does not have: prefer nodes with a warm cache, avoid nodes running…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/kube-scheduler-plugin&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Go 1.26: Green Tea GC by Default, new(expr), and a Revamped go fix]]></title><link>https://evalsocket.dev/blog/go-1-26-deep-dive</link><guid isPermaLink="false">https://evalsocket.dev/blog/go-1-26-deep-dive</guid><pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Picture the version bump landing on a production Go service you own: an allocation-heavy API that burns real CPU inside the garbage…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/go-1-26-deep-dive&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Writing a DRA Driver: From ResourceSlice to kubelet Plugin]]></title><link>https://evalsocket.dev/blog/writing-a-dra-driver</link><guid isPermaLink="false">https://evalsocket.dev/blog/writing-a-dra-driver</guid><pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Dynamic Resource Allocation (DRA) is how Kubernetes now handles GPUs and other specialized devices. Instead of a fixed integer count like nv…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/writing-a-dra-driver&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Kubernetes 1.35: In-Place Pod Resize Is GA, and cgroup v1 Nodes Stop Booting]]></title><link>https://evalsocket.dev/blog/k8s135</link><guid isPermaLink="false">https://evalsocket.dev/blog/k8s135</guid><pubDate>Wed, 17 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The question that matters for Kubernetes 1.35 is simple: should you take the upgrade now? The case for yes is one clearly useful feature. In…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/k8s135&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Kubernetes 1.34: DRA Goes GA and the cgroup-driver Clock Starts]]></title><link>https://evalsocket.dev/blog/k8s134</link><guid isPermaLink="false">https://evalsocket.dev/blog/k8s134</guid><pubDate>Wed, 27 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Kubernetes 1.34 is a consolidation release. The headline is that Dynamic Resource Allocation (DRA), the new way to request GPUs and other…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/k8s134&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Go 1.25: A Practitioner's Deep Dive]]></title><link>https://evalsocket.dev/blog/go125</link><guid isPermaLink="false">https://evalsocket.dev/blog/go125</guid><pubDate>Wed, 13 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Go 1.25 shipped on August 12, 2025. There is almost nothing new in the language, and that is the point. The interesting work is in the…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/go125&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Kubernetes 1.33: What's New and What It Means]]></title><link>https://evalsocket.dev/blog/k8s133</link><guid isPermaLink="false">https://evalsocket.dev/blog/k8s133</guid><pubDate>Tue, 12 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Kubernetes v1.33, named &quot;Octarine&quot; after Terry Pratchett&apos;s Discworld, shipped on April 23, 2025 with 64 enhancements: 18 to stable, 20 to…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/k8s133&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Scaling Python Workloads with Ray on Kubernetes]]></title><link>https://evalsocket.dev/rayio</link><guid isPermaLink="false">https://evalsocket.dev/rayio</guid><pubDate>Fri, 01 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Python is the language of machine learning, but the Global Interpreter Lock (GIL) and a single-node design cap how far a plain Python…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/rayio&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Go 1.24 Deep Dive: Generic Type Aliases, os.Root, and Post-Quantum Crypto]]></title><link>https://evalsocket.dev/blog/go-124-deep-dive</link><guid isPermaLink="false">https://evalsocket.dev/blog/go-124-deep-dive</guid><pubDate>Tue, 11 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Go 1.24 shipped on February 11, 2025. It is a small language release and a large standard-library and tooling release, which is the shape of…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/go-124-deep-dive&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[EKS + Okta OIDC: SSO for kubectl That You Can Actually Reason About]]></title><link>https://evalsocket.dev/blog/eks-okta-oidc</link><guid isPermaLink="false">https://evalsocket.dev/blog/eks-okta-oidc</guid><pubDate>Tue, 14 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Your team runs several EKS clusters. Engineers share IAM credentials or assume the same role, audit logs show generic principals, and when…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/eks-okta-oidc&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Go Generics Deep Dive: Type Parameters, Constraints, and When to Use Them]]></title><link>https://evalsocket.dev/blog/golang-generics-deep-dive</link><guid isPermaLink="false">https://evalsocket.dev/blog/golang-generics-deep-dive</guid><pubDate>Tue, 14 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Go added generics in 1.18, after years of debate about whether it should at all. If you are newer to Go, generics can look intimidating, so…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/golang-generics-deep-dive&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Kubernetes Architecture: How the Pieces Actually Fit Together]]></title><link>https://evalsocket.dev/blog/kubernetes-architecture-deep-dive</link><guid isPermaLink="false">https://evalsocket.dev/blog/kubernetes-architecture-deep-dive</guid><pubDate>Tue, 14 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Most people learn Kubernetes as a set of YAML recipes. This post is about the machine underneath: what each control-plane component does…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/kubernetes-architecture-deep-dive&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[vLLM on Kubernetes: Serving LLMs Without the Bloat]]></title><link>https://evalsocket.dev/blog/vllm-kubernetes-deep-dive</link><guid isPermaLink="false">https://evalsocket.dev/blog/vllm-kubernetes-deep-dive</guid><pubDate>Tue, 14 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;vLLM is the most widely used engine for serving open large language models (LLMs), because it makes GPU memory go much further and keeps the…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/blog/vllm-kubernetes-deep-dive&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Proto at Scale: Buf, Remote Plugins, and ConnectRPC]]></title><link>https://evalsocket.dev/buf</link><guid isPermaLink="false">https://evalsocket.dev/buf</guid><pubDate>Wed, 21 Feb 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I have maintained Protocol Buffers at Flyte and consumed them across services at Union. The schema was never the hard part. The hard part…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/buf&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Kyverno Generate, Part 2: Label-Driven Self-Service Resources]]></title><link>https://evalsocket.dev/kyverno-generate-policy-part-2</link><guid isPermaLink="false">https://evalsocket.dev/kyverno-generate-policy-part-2</guid><pubDate>Mon, 28 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Part 1 covered the basics of Kyverno generate rules: creating and synchronizing resources across namespaces. This part covers a more…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/kyverno-generate-policy-part-2&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item><item><title><![CDATA[Kyverno Generate Policies: Automate Namespace Resources the Right Way]]></title><link>https://evalsocket.dev/kyverno-generate-policy</link><guid isPermaLink="false">https://evalsocket.dev/kyverno-generate-policy</guid><pubDate>Fri, 24 Jul 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Kyverno is a policy engine built for Kubernetes. It runs as an admission controller that validates and mutates incoming resources, and it…&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://evalsocket.dev/kyverno-generate-policy&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt;</content:encoded></item></channel></rss>