<?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[My DevOps Learning Journey]]></title><description><![CDATA[My DevOps Learning Journey]]></description><link>https://k8sjourney.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1593680282896/kNC7E8IR4.png</url><title>My DevOps Learning Journey</title><link>https://k8sjourney.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 10:52:32 GMT</lastBuildDate><atom:link href="https://k8sjourney.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Day 14 of #40DaysOfKubernetes — Scheduling, Static Pods and Label]]></title><description><![CDATA[I'm currently learning Kubernetes as part of the #40DaysOfKubernetes challenge.
Today I worked on three important Kubernetes concepts:
Manually scheduling a Pod Static Pods and control-plane component]]></description><link>https://k8sjourney.hashnode.dev/day-14-of-40daysofkubernetes-scheduling-static-pods-and-label</link><guid isPermaLink="true">https://k8sjourney.hashnode.dev/day-14-of-40daysofkubernetes-scheduling-static-pods-and-label</guid><dc:creator><![CDATA[Vibhav-k]]></dc:creator><pubDate>Sun, 13 Sep 2026 13:36:07 GMT</pubDate><content:encoded><![CDATA[<p>I'm currently learning Kubernetes as part of the #40DaysOfKubernetes challenge.</p>
<p>Today I worked on three important Kubernetes concepts:</p>
<p>Manually scheduling a Pod Static Pods and control-plane components Kubernetes Labels and Label Selectors</p>
<p>This was a hands-on session, so I wanted to document what I learned.</p>
<ol>
<li>Manually Scheduling a Pod</li>
</ol>
<p>Normally, when we create a Pod, the Kubernetes Scheduler decides which worker node should run it.</p>
<p>For this exercise, I learned how a Pod can be scheduled manually by specifying the nodeName in the Pod specification.</p>
<p>For example:</p>
<p>apiVersion: v1 kind: Pod metadata: name: pod1 labels: env: test spec: containers:</p>
<ul>
<li>image: nginx name: pod1 nodeName: cka-3-worker</li>
</ul>
<p>Here, instead of allowing the Scheduler to select a node, I specified:</p>
<p>nodeName: cka-3-worker</p>
<p>This helped me understand the difference between normal scheduling and manually assigning a Pod to a specific node.</p>
<ol>
<li>Understanding Static Pods</li>
</ol>
<p>I also explored Static Pods and the control-plane components.</p>
<p>On my control-plane node, I checked the default static Pod manifest directory:</p>
<p>ls -lh /etc/kubernetes/manifests/</p>
<p>I found the manifests for components such as:</p>
<p>etcd.yaml kube-apiserver.yaml kube-controller-manager.yaml kube-scheduler.yaml</p>
<p>I also experimented with moving the kube-scheduler.yaml file out of the manifests directory and then putting it back:</p>
<p>mv /etc/kubernetes/manifests/kube-scheduler.yaml /tmp/</p>
<p>and later:</p>
<p>mv /tmp/kube-scheduler.yaml /etc/kubernetes/manifests/</p>
<p>This helped me understand that the kubelet watches the static Pod manifest directory and that changes to these manifests can affect the corresponding control-plane components.</p>
<ol>
<li>Creating Pods with Labels</li>
</ol>
<p>Next, I created three Nginx Pods with different environment labels.</p>
<p>kubectl run pod1 --image=nginx --labels="env=test"</p>
<p>kubectl run pod2 --image=nginx --labels="env=dev"</p>
<p>kubectl run pod3 --image=nginx --labels="env=prod"</p>
<p>The Pods were:</p>
<p>pod1 → env=test pod2 → env=dev pod3 → env=prod</p>
<p>I verified the labels using:</p>
<p>kubectl get pods -o wide --show-labels</p>
<p>The output showed that all three Pods were running and had the expected labels.</p>
<ol>
<li>Filtering Pods Using Labels</li>
</ol>
<p>After creating the Pods, I learned how to use label selectors with kubectl.</p>
<p>To find the development Pod:</p>
<p>kubectl get pod -l env=dev</p>
<p>Output:</p>
<p>NAME pod2</p>
<p>To find the production Pod:</p>
<p>kubectl get pod -l env=prod</p>
<p>Output:</p>
<p>NAME pod3</p>
<p>I also tested:</p>
<p>kubectl get pod -l env=test</p>
<p>which returned:</p>
<p>NAME pod1</p>
<p>This showed me how useful labels are when we have many Kubernetes resources and need to find a specific group of them.</p>
<p>What I Learned Today</p>
<p>My main takeaways from Day 14 are:</p>
<p>The Kubernetes Scheduler normally decides which node should run a Pod. A Pod can be manually assigned to a node using nodeName. Static Pod manifests are stored on the node and watched by the kubelet. Kubernetes control-plane components such as the Scheduler can run as static Pods. Labels provide a way to organize and identify Kubernetes resources. Label selectors allow us to filter resources using kubectl.</p>
<p>The biggest takeaway for me today was understanding that Kubernetes labels are much more than simple metadata. They become very useful when we need to select and manage specific resources.</p>
<p>Conclusion</p>
<p>Day 14 gave me a better understanding of what happens behind the scenes when Kubernetes schedules Pods and manages control-plane components.</p>
<p>I'm still learning Kubernetes, but doing these exercises practically is helping me connect the concepts with what actually happens inside a cluster.</p>
<p>On to the next day of the #40DaysOfKubernetes journey! 🚀</p>
<p>Thanks to Piyush Sachdeva and CloudOps Community for creating this learning challenge.</p>
<p><a href="https://hashnode.com/tag/40daysofkubernetes#:~:text=Tag%20feed-,%2340daysofkubernetes,-78%20posts">#40daysofkubernetes</a> #Kubernetes #DevOps #CloudComputing #LearningInPublic</p>
<img src="https://cdn.hashnode.com/uploads/covers/6aa6a46f3009bd03610db2c4/c7422553-2f47-4b6a-b954-b01f0afceca5.png" alt="" style="display:block;margin:0 auto" />]]></content:encoded></item></channel></rss>