<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Menra Romial</title><link>https://menraromial.com/posts/</link><description>Recent content in Posts on Menra Romial</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 23 Oct 2025 13:00:00 +0000</lastBuildDate><atom:link href="https://menraromial.com/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>A Comprehensive Guide to powercap-utils on Linux</title><link>https://menraromial.com/posts/comprehensive-guide-powercap-utils-linux/</link><pubDate>Thu, 23 Oct 2025 13:00:00 +0000</pubDate><guid>https://menraromial.com/posts/comprehensive-guide-powercap-utils-linux/</guid><description>&lt;h3 id="1-introduction-what-is-powercap-utils"&gt;1. Introduction: What is &lt;code&gt;powercap-utils&lt;/code&gt;?&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;powercap-utils&lt;/code&gt; is a suite of user-space command-line tools for Linux that allow you to interact with the kernel&amp;rsquo;s &lt;strong&gt;Power Capping Framework&lt;/strong&gt;. This framework provides a standardized way to monitor and limit the power consumption of hardware devices.&lt;/p&gt;
&lt;p&gt;Its most common use is to control &lt;strong&gt;Intel&amp;rsquo;s Running Average Power Limit (RAPL)&lt;/strong&gt; and &lt;strong&gt;AMD&amp;rsquo;s RAPL-like features&lt;/strong&gt; on modern CPUs. These features let you directly set power budgets for the CPU package, its cores, and DRAM.&lt;/p&gt;</description></item><item><title>Building a Kubernetes Controller with Kubebuilder from Scratch</title><link>https://menraromial.com/posts/building-a-kubernetes-controller-with-kubebuilder-from-scratch/</link><pubDate>Mon, 22 Sep 2025 10:30:00 +0000</pubDate><guid>https://menraromial.com/posts/building-a-kubernetes-controller-with-kubebuilder-from-scratch/</guid><description>&lt;p&gt;In this tutorial, you will learn how to build a custom Kubernetes controller (also known as an Operator) using Kubebuilder. We will create a Custom Resource Definition (CRD) for a simple &lt;code&gt;Website&lt;/code&gt; resource. The goal of our controller will be to watch for these &lt;code&gt;Website&lt;/code&gt; resources and, for each one, create a corresponding Kubernetes &lt;code&gt;Deployment&lt;/code&gt; and &lt;code&gt;Service&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This is a powerful pattern that allows you to extend the Kubernetes API to manage your own applications declaratively.&lt;/p&gt;</description></item><item><title>Guide to Building a Custom Kubernetes Scheduler</title><link>https://menraromial.com/posts/guide-building-custom-kubernetes-scheduler/</link><pubDate>Sun, 24 Aug 2025 17:30:00 +0000</pubDate><guid>https://menraromial.com/posts/guide-building-custom-kubernetes-scheduler/</guid><description>&lt;p&gt;This guide will walk you through creating a custom scheduler plugin that influences where pods are placed based on custom logic. We will build a simple &amp;ldquo;Network-Aware&amp;rdquo; plugin that prefers to schedule pods on nodes with a specific network label.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What We Will Build:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A &lt;code&gt;Filter&lt;/code&gt; plugin:&lt;/strong&gt; It will only allow pods that request &lt;code&gt;high-speed&lt;/code&gt; networking to be scheduled on nodes that are labeled as &lt;code&gt;network-topology=high-speed&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A &lt;code&gt;Score&lt;/code&gt; plugin:&lt;/strong&gt; It will give a higher score to nodes with the &lt;code&gt;high-speed&lt;/code&gt; label, making them more desirable.&lt;/li&gt;
&lt;li&gt;We will then package this plugin into a new scheduler binary, containerize it, and deploy it to a local Kubernetes cluster.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="part-1-understanding-the-foundations---the-scheduling-framework"&gt;&lt;strong&gt;Part 1: Understanding the Foundations - The Scheduling Framework&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Before writing any code, it&amp;rsquo;s crucial to understand the &amp;ldquo;why&amp;rdquo; and &amp;ldquo;how&amp;rdquo;.&lt;/p&gt;</description></item><item><title>Master the CI/CD Pipeline Locally</title><link>https://menraromial.com/posts/master-ci-ci-pipeline-locally/</link><pubDate>Wed, 20 Aug 2025 10:30:00 +0000</pubDate><guid>https://menraromial.com/posts/master-ci-ci-pipeline-locally/</guid><description>&lt;p&gt;Welcome to this comprehensive course on DevOps culture and tooling. The goal is to guide you, step-by-step, from theory to practice, empowering you to build, secure, and automate a full Continuous Integration and Continuous Deployment (CI/CD) pipeline.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Course Philosophy:&lt;/strong&gt;
Everything we learn will be put into practice in a &lt;strong&gt;100% local lab environment&lt;/strong&gt;, running on your own machine using Docker. You will not need any cloud accounts or paid services. Every concept is illustrated with hands-on workshops and concrete examples.&lt;/p&gt;</description></item><item><title>Setting Up a Kubernetes Cluster with Kubeadm and CRI-O</title><link>https://menraromial.com/posts/kubernetes-with-kubeadm-and-cri.io/</link><pubDate>Tue, 25 Mar 2025 16:40:16 +0000</pubDate><guid>https://menraromial.com/posts/kubernetes-with-kubeadm-and-cri.io/</guid><description>&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;Before setting up a Kubernetes cluster using Kubeadm and CRI-O, ensure that you meet the following requirements:&lt;/p&gt;
&lt;h3 id="hardware-requirements"&gt;Hardware Requirements&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;At least &lt;strong&gt;2 GB of RAM&lt;/strong&gt; per node (4 GB recommended for the master node)&lt;/li&gt;
&lt;li&gt;At least &lt;strong&gt;2 CPUs&lt;/strong&gt; per node&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;20 GB of free disk space&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;A stable &lt;strong&gt;internet connection&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;All nodes should be able to communicate with each other&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="software-requirements"&gt;Software Requirements&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;A supported &lt;strong&gt;Linux distribution&lt;/strong&gt; (Ubuntu 20.04+ or Debian 10+ recommended)&lt;/li&gt;
&lt;li&gt;User access with &lt;strong&gt;sudo privileges&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Basic understanding of &lt;strong&gt;Linux command-line interface (CLI)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Knowledge of &lt;strong&gt;networking concepts&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="step-1-configure-kernel-parameters"&gt;Step 1: Configure Kernel Parameters&lt;/h2&gt;
&lt;p&gt;Kubernetes requires some kernel parameters to be set to allow IPtables to see bridged traffic.&lt;/p&gt;</description></item><item><title>Setting Up a K3s Cluster with a Hello-World Deployment</title><link>https://menraromial.com/posts/setup-k3s-cluster/</link><pubDate>Sun, 07 Jul 2024 14:30:00 +0000</pubDate><guid>https://menraromial.com/posts/setup-k3s-cluster/</guid><description>&lt;p&gt;This tutorial will guide you through setting up a K3s cluster with one master node and two worker nodes, deploying a simple &amp;ldquo;Hello-World&amp;rdquo; application, and utilizing various &lt;code&gt;kubectl&lt;/code&gt; commands to manage and inspect Kubernetes resources.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Three Linux machines (or VMs) with access to each other.&lt;/li&gt;
&lt;li&gt;Basic understanding of Linux commands and Kubernetes concepts.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="step-1-installing-k3s"&gt;Step 1: Installing K3s&lt;/h2&gt;
&lt;h3 id="install-k3s-on-the-master-node"&gt;Install K3s on the Master Node&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SSH into the Master Node:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ssh user@master-node-ip
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Install K3s:&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>