<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>K8s on Dev &amp; Platform Engineering Hub</title><link>https://rhidayat.work/topics/k8s/</link><description>Recent content in K8s on Dev &amp; Platform Engineering Hub</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026 Rachmat Hidayat</copyright><lastBuildDate>Mon, 10 Aug 2026 01:15:00 +0000</lastBuildDate><atom:link href="https://rhidayat.work/topics/k8s/index.xml" rel="self" type="application/rss+xml"/><item><title>Kubernetes Ep 15: Production Helm Charts &amp; Package Deployment</title><link>https://rhidayat.work/series/kubernetes/15-production-helm-chart-deployment/</link><pubDate>Mon, 10 Aug 2026 01:15:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/15-production-helm-chart-deployment/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Managing dozens of static YAML manifests across multiple environments (dev, staging, prod) leads to repetitive code and configuration drift. &lt;strong&gt;Helm&lt;/strong&gt; is the official package manager for Kubernetes, enabling templating, parameterization, versioned releases, and one-click upgrades.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 14: Health Checks &amp; Zero-Downtime Rolling Updates</title><link>https://rhidayat.work/series/kubernetes/14-probes-healthchecks-and-rolling-updates/</link><pubDate>Mon, 10 Aug 2026 01:10:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/14-probes-healthchecks-and-rolling-updates/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 In production, a container might be in a &lt;code&gt;Running&lt;/code&gt; state according to Docker, yet completely unable to serve HTTP traffic due to a deadlock, database connection timeout, or slow boot sequence. &lt;strong&gt;Probes&lt;/strong&gt; and &lt;strong&gt;Rolling Updates&lt;/strong&gt; guarantee zero-downtime application deployments.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 13: RBAC, ServiceAccounts &amp; Security</title><link>https://rhidayat.work/series/kubernetes/13-rbac-service-accounts-and-security/</link><pubDate>Mon, 10 Aug 2026 01:05:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/13-rbac-service-accounts-and-security/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Security in Kubernetes follows the Principle of Least Privilege. &lt;strong&gt;Role-Based Access Control (RBAC)&lt;/strong&gt; regulates who (Users, Groups, or ServiceAccounts) can perform which actions (verbs: &lt;code&gt;get&lt;/code&gt;, &lt;code&gt;list&lt;/code&gt;, &lt;code&gt;create&lt;/code&gt;, &lt;code&gt;delete&lt;/code&gt;) on which resources (nouns: &lt;code&gt;pods&lt;/code&gt;, &lt;code&gt;services&lt;/code&gt;, &lt;code&gt;secrets&lt;/code&gt;).
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 12: Namespaces, Resource Quotas &amp; LimitRanges</title><link>https://rhidayat.work/series/kubernetes/12-namespaces-resource-quotas-and-limits/</link><pubDate>Mon, 10 Aug 2026 01:00:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/12-namespaces-resource-quotas-and-limits/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 In enterprise environments, a single Kubernetes cluster is shared across multiple development teams, environments (dev, staging, prod), and microservices. Without resource governance, a single misbehaving application can consume all cluster CPU and memory, crashing critical workloads.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 11: Jobs, CronJobs &amp; Batch Processing</title><link>https://rhidayat.work/series/kubernetes/11-jobs-cronjobs-and-batch-processing/</link><pubDate>Mon, 10 Aug 2026 00:55:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/11-jobs-cronjobs-and-batch-processing/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Unlike Deployments and StatefulSets—which are designed to keep long-running processes alive indefinitely—&lt;strong&gt;Jobs&lt;/strong&gt; and &lt;strong&gt;CronJobs&lt;/strong&gt; are designed for &lt;strong&gt;run-to-completion batch tasks&lt;/strong&gt;. When the workload process terminates with exit code 0, Kubernetes marks the Pod as &lt;code&gt;Completed&lt;/code&gt;.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 10: DaemonSets &amp; Cluster Node Agents</title><link>https://rhidayat.work/series/kubernetes/10-daemonsets-and-cluster-monitoring/</link><pubDate>Mon, 10 Aug 2026 00:50:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/10-daemonsets-and-cluster-monitoring/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 While Deployments distribute Pods across nodes based on available capacity, &lt;strong&gt;DaemonSets&lt;/strong&gt; ensure that a copy of a specific Pod runs on &lt;strong&gt;all (or selected) worker nodes&lt;/strong&gt; in the cluster. As nodes are added to or removed from the cluster, DaemonSet Pods are added or garbage-collected automatically.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 9: StatefulSets &amp; Stateful Database Deployments</title><link>https://rhidayat.work/series/kubernetes/09-statefulsets-and-database-deployments/</link><pubDate>Mon, 10 Aug 2026 00:45:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/09-statefulsets-and-database-deployments/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 While Deployments are designed for interchangeable, stateless application replicas, stateful workloads like PostgreSQL clusters, Redis Sentinels, Kafka brokers, and Elasticsearch nodes require &lt;strong&gt;stable network identities&lt;/strong&gt;, &lt;strong&gt;dedicated persistent volumes per replica&lt;/strong&gt;, and &lt;strong&gt;strict ordered deployment &amp;amp; scaling&lt;/strong&gt;. This is where &lt;strong&gt;StatefulSets&lt;/strong&gt; shine.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 8: Persistent Volumes, PVCs &amp; StorageClasses</title><link>https://rhidayat.work/series/kubernetes/08-volumes-pv-pvc-and-storageclass/</link><pubDate>Mon, 10 Aug 2026 00:40:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/08-volumes-pv-pvc-and-storageclass/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Containers are designed to be stateless and ephemeral. To run stateful applications like PostgreSQL, MySQL, Redis, or Elasticsearch, Kubernetes provides storage abstractions that decouple persistent storage infrastructure from application workload definitions.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 7: ConfigMaps, Secrets &amp; Environment Variables</title><link>https://rhidayat.work/series/kubernetes/07-configmaps-secrets-and-env-vars/</link><pubDate>Mon, 10 Aug 2026 00:35:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/07-configmaps-secrets-and-env-vars/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 The Twelve-Factor App methodology mandates strict separation of application code from configuration settings. &lt;strong&gt;ConfigMaps&lt;/strong&gt; store non-sensitive configuration data (URLs, log levels), while &lt;strong&gt;Secrets&lt;/strong&gt; store sensitive values (passwords, API tokens, TLS keys).
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 6: Ingress Controllers &amp; HTTP Path Routing</title><link>https://rhidayat.work/series/kubernetes/06-ingress-controllers-and-routing/</link><pubDate>Mon, 10 Aug 2026 00:30:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/06-ingress-controllers-and-routing/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 While L4 Kubernetes Services handle IP and port-level load balancing, modern web applications require Layer 7 HTTP/HTTPS routing features: URL path matching (&lt;code&gt;/api&lt;/code&gt; vs &lt;code&gt;/app&lt;/code&gt;), hostname routing (&lt;code&gt;api.example.com&lt;/code&gt;), SSL/TLS termination, and header rewriting. This is handled by &lt;strong&gt;Ingress&lt;/strong&gt;.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 5: Networking Services (ClusterIP, NodePort, LoadBalancer)</title><link>https://rhidayat.work/series/kubernetes/05-services-clusterip-nodeport-loadbalancer/</link><pubDate>Mon, 10 Aug 2026 00:25:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/05-services-clusterip-nodeport-loadbalancer/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 Pods are ephemeral—they are created, destroyed, and rescheduled dynamically, causing their IP addresses to change constantly. A &lt;strong&gt;Kubernetes Service&lt;/strong&gt; provides a stable, persistent virtual IP (VIP), DNS name, and load balancing frontend across a dynamic set of backend Pods.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 4: Deployments, ReplicaSets &amp; Self-Healing Scaling</title><link>https://rhidayat.work/series/kubernetes/04-deployments-replicasets-and-scaling/</link><pubDate>Mon, 10 Aug 2026 00:20:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/04-deployments-replicasets-and-scaling/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 While Pods are the basic building blocks of Kubernetes, you should rarely deploy bare Pods directly. Instead, production applications use &lt;strong&gt;Deployments&lt;/strong&gt;, a higher-level abstraction that manages &lt;strong&gt;ReplicaSets&lt;/strong&gt; to guarantee high availability, self-healing, and seamless scaling.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 3: kubectl CLI &amp; Launching Your First Pod</title><link>https://rhidayat.work/series/kubernetes/03-kubectl-cli-and-first-pod/</link><pubDate>Mon, 10 Aug 2026 00:15:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/03-kubectl-cli-and-first-pod/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 The &lt;strong&gt;&lt;code&gt;kubectl&lt;/code&gt;&lt;/strong&gt; command-line interface is the primary tool platform engineers and developers use to interact with Kubernetes clusters. In this episode, we&amp;rsquo;ll configure &lt;code&gt;kubectl&lt;/code&gt; and deploy our first atomic Kubernetes primitive: the &lt;strong&gt;Pod&lt;/strong&gt;.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 2: Architecture - Control Plane &amp; Worker Nodes</title><link>https://rhidayat.work/series/kubernetes/02-architecture-control-plane-and-worker-nodes/</link><pubDate>Mon, 10 Aug 2026 00:10:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/02-architecture-control-plane-and-worker-nodes/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 A Kubernetes cluster consists of two primary logical layers: the &lt;strong&gt;Control Plane&lt;/strong&gt; (the cluster&amp;rsquo;s brain) and &lt;strong&gt;Worker Nodes&lt;/strong&gt; (the muscle that runs application containers). Understanding how these components communicate is crucial for cluster administration and troubleshooting.
&lt;/div&gt;</description></item><item><title>Kubernetes Ep 1: Introduction to Kubernetes &amp; Containers</title><link>https://rhidayat.work/series/kubernetes/01-introduction-to-kubernetes-and-containers/</link><pubDate>Mon, 10 Aug 2026 00:05:00 +0000</pubDate><guid>https://rhidayat.work/series/kubernetes/01-introduction-to-kubernetes-and-containers/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;
 The evolution of modern infrastructure has transitioned from physical bare-metal servers to Virtual Machines (VMs), lightweight OCI Containers, and ultimately automated Container Orchestration platforms like &lt;strong&gt;Kubernetes&lt;/strong&gt;.
&lt;/div&gt;</description></item><item><title>Kratix Ep 1: Introduction to Kratix &amp; The Platform-as-a-Product Paradigm</title><link>https://rhidayat.work/series/kratix/01-introduction-to-kratix/</link><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid>https://rhidayat.work/series/kratix/01-introduction-to-kratix/</guid><description>Explore Kratix architecture, the Platform-as-a-Product paradigm, and how Kratix transforms Kubernetes into a composable Internal Developer Platform.</description></item><item><title>Mastering Kratix: Building Composable Internal Developer Platforms on Kubernetes</title><link>https://rhidayat.work/series/kratix/</link><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid>https://rhidayat.work/series/kratix/</guid><description>Master Kratix to deliver self-service infrastructure and application capabilities to development teams with Promises, Workflows, Pipelines, and GitOps.</description></item><item><title>Cara Fix Error OOMKilled (Exit Code 137) di Kubernetes Pod</title><link>https://rhidayat.work/blog/cara-fix-k8s-oomkilled/</link><pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate><guid>https://rhidayat.work/blog/cara-fix-k8s-oomkilled/</guid><description>&lt;p&gt;Mengalami error &lt;strong&gt;&lt;code&gt;OOMKilled&lt;/code&gt; (Exit Code 137)&lt;/strong&gt; saat menjalankan aplikasi di Kubernetes? Masalah ini terjadi ketika penggunaan memori kontainer melebihi batas &lt;code&gt;resources.limits.memory&lt;/code&gt;.&lt;/p&gt;

&lt;h2 class="relative group"&gt;1. Penyebab Utama Error
 &lt;div id="1-penyebab-utama-error" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-penyebab-utama-error" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Secara teknis, OOM (Out Of Memory) Killer pada Linux Kernel akan menghentikan proses yang mengonsumsi RAM berlebih.&lt;/p&gt;

&lt;h2 class="relative group"&gt;2. Solusi Cepat
 &lt;div id="2-solusi-cepat" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2-solusi-cepat" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Naikkan batas RAM pada manifest YAML:&lt;/p&gt;</description></item></channel></rss>