<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kevin Morris</title><link>https://kevin-morris.net/</link><description>Recent content on Kevin Morris</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 31 Mar 2026 22:08:02 -0400</lastBuildDate><atom:link href="https://kevin-morris.net/index.xml" rel="self" type="application/rss+xml"/><item><title>NetworkPolicy From Memory. No Mistakes.</title><link>https://kevin-morris.net/blog/2026/networkpolicy-from-memory.-no-mistakes./</link><pubDate>Tue, 31 Mar 2026 22:08:02 -0400</pubDate><guid>https://kevin-morris.net/blog/2026/networkpolicy-from-memory.-no-mistakes./</guid><description>&lt;img src="https://kevin-morris.net/blog/2026/networkpolicy-from-memory.-no-mistakes./k9s.png" alt="K9S"&gt;&lt;p&gt;Cert exam incoming. Been drilling hard — writing YAML from scratch, no peeking at docs.&lt;/p&gt;
&lt;p&gt;Today I wrote all the NetworkPolicy patterns from memory. No mistakes. 🥹&lt;/p&gt;
&lt;p&gt;NetworkPolicy is the one topic everyone says trips them up — the ingress/egress selector logic, podSelector scoping, default deny patterns. It clicked. Apparently all this hardcore study is sinking in way more than I thought.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s the difference between &amp;ldquo;I think I&amp;rsquo;m ready&amp;rdquo; and &amp;ldquo;I know I&amp;rsquo;m ready.&amp;rdquo; Sure, you can look things up on the exam — but why burn time when you already know exactly what resource you need and where every field goes?&lt;/p&gt;</description></item><item><title>Devops Journey</title><link>https://kevin-morris.net/blog/2026/devops-journey/</link><pubDate>Mon, 30 Mar 2026 21:47:14 -0400</pubDate><guid>https://kevin-morris.net/blog/2026/devops-journey/</guid><description>&lt;p&gt;&lt;img src="https://kevin-morris.net/blog/2026/devops-journey/devops.png" alt="DevOps"&gt;
I spent 20 years in semiconductor engineering.&lt;/p&gt;
&lt;p&gt;Good salary. Somewhat stable career, lol. Respected field. Learned a lot. For a long time, that was enough. At some point it stopped being enough — probably further back than I care to admit, but here I am.&lt;/p&gt;
&lt;p&gt;It wasn&amp;rsquo;t a dramatic moment or a single bad day. Just a slow realization that I had spent a long time being good at something I really didn&amp;rsquo;t want to keep doing.&lt;/p&gt;</description></item><item><title>Replicasets</title><link>https://kevin-morris.net/blog/2026/replicasets/</link><pubDate>Fri, 06 Feb 2026 15:54:06 -0500</pubDate><guid>https://kevin-morris.net/blog/2026/replicasets/</guid><description>&lt;h1 id="replicaset"&gt;
 Replicaset
 &lt;a class="heading-link" href="#replicaset"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Replicasets are a fun topic&amp;hellip;this new object replaces the old &amp;ldquo;Replication Controller&amp;rdquo;. Replicaset (shortname &amp;ldquo;rs&amp;rdquo;) can control pods that are not created within the replicaset or other deployment by simply matching labels.&lt;/p&gt;
&lt;h2 id="details"&gt;
 Details
 &lt;a class="heading-link" href="#details"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;a single pod crashes then loses access to app - idea to have more than one instance of a pod&lt;/li&gt;
&lt;li&gt;another reason - to create multiple pods to share the load and balance&lt;/li&gt;
&lt;li&gt;spans across multiple nodes&lt;/li&gt;
&lt;li&gt;scales when demand increases&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="setup"&gt;
 Setup
 &lt;a class="heading-link" href="#setup"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;create YAML&lt;/li&gt;
&lt;li&gt;use 4 top level objects - api/kind/metadata/spec&lt;/li&gt;
&lt;li&gt;create POD template section under SPEC&lt;/li&gt;
&lt;li&gt;to create POD template MOVE the normal fields: metadata, name, labels and spec&amp;hellip;usually defined in POD&lt;/li&gt;
&lt;li&gt;move thos fields under spec.template&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="replicaset-1"&gt;
 ReplicaSet
 &lt;a class="heading-link" href="#replicaset-1"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;apiVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;apps/v1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;kind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ReplicaSet&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;my-replicaset&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;labels&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;app&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;myapp&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;frontend&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;template&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;myapp-pod&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;labels&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;app&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;myapp&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;frontend&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;containers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;nginx-container&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;nginx&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;replicas&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;selector&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;matchLabels&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;frontend&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;ReplicaSet can handle other pods that haven&amp;rsquo;t been created under the yaml file&lt;/li&gt;
&lt;li&gt;SELECTOR is the difference for the ReplicaSet&lt;/li&gt;
&lt;li&gt;MUST use selector.matchLabels&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="labels-and-selectors"&gt;
 Labels and Selectors
 &lt;a class="heading-link" href="#labels-and-selectors"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;use to monitor existing pods is one use case&lt;/li&gt;
&lt;li&gt;role of replicaSet is to monitor and deploy if any fail&lt;/li&gt;
&lt;li&gt;use same label set in &amp;ldquo;MatchLabels&amp;rdquo; and it knows which pods&lt;/li&gt;
&lt;li&gt;spec.replicas&lt;/li&gt;
&lt;li&gt;spec.selector.matchLabels.type&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="scale"&gt;
 Scale
 &lt;a class="heading-link" href="#scale"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;increase REPLICAS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;1st method&lt;/em&gt;
update number of replica field in definition file
then use REPLACE cmd
&lt;code&gt;kubectl replace -f replica-set.yaml&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Cluster Upgrade</title><link>https://kevin-morris.net/blog/2026/cluster-upgrade/</link><pubDate>Thu, 29 Jan 2026 16:36:05 -0500</pubDate><guid>https://kevin-morris.net/blog/2026/cluster-upgrade/</guid><description>&lt;h1 id="cluster-upgrade"&gt;
 Cluster Upgrade
 &lt;a class="heading-link" href="#cluster-upgrade"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Well, that was interesting! Had a few tab completions fail and made me inquisitive. Turns out - mismatch between control plane and worker nodes AND kubectl client!&lt;/p&gt;
&lt;p&gt;Gave the cluster the once over and found BREW overriding kubectl. What the heck is brew doing on the control plane? Must have been ssh into the node when I was working on devpod as I found mise had installed all my packages from config.toml there. The brew is on me though! &amp;#x1f92f; Smh&amp;hellip;&lt;/p&gt;</description></item><item><title>kubectl</title><link>https://kevin-morris.net/blog/2026/kubectl/</link><pubDate>Thu, 29 Jan 2026 09:18:32 -0500</pubDate><guid>https://kevin-morris.net/blog/2026/kubectl/</guid><description>&lt;h1 id="kubectl"&gt;
 Kubectl
 &lt;a class="heading-link" href="#kubectl"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h1&gt;
&lt;h2 id="kubernetes-command-line-interface"&gt;
 Kubernetes Command Line interface
 &lt;a class="heading-link" href="#kubernetes-command-line-interface"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;kubectl is essentially the command you will use most often to interface with Kubernetes. It is used to deploy and manage applications on k8s cluster. It is pronounced &amp;ldquo;cube-see-tee-ELL&amp;rdquo; and don&amp;rsquo;t let anyone tell you different! &amp;#x1f604;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;k8s&amp;rdquo; is short for Kubernetes, where the number eight means the letters between &amp;lsquo;K&amp;rsquo; and &amp;ldquo;s&amp;rdquo; in Kubernetes.&lt;/p&gt;</description></item><item><title>YAML in Kubernetes</title><link>https://kevin-morris.net/blog/2025/yaml-in-kubernetes/</link><pubDate>Tue, 25 Nov 2025 19:58:21 -0500</pubDate><guid>https://kevin-morris.net/blog/2025/yaml-in-kubernetes/</guid><description>&lt;p&gt;A pod definition file always contains the 4 top-level fields&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;apiVersion&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;kind&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;metadata&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;spec&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These are top-level or root-level fields. &lt;em&gt;REQUIRED&lt;/em&gt; fields.&lt;/p&gt;
&lt;p&gt;pod-definition.yml&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;apiVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;v1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;kind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Pod&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;myapp-pod&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;labels&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;app&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;myapp&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;front-end &lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;containers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;nginx-container&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;nginx&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="apiversion"&gt;
 apiVersion
 &lt;a class="heading-link" href="#apiversion"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;version of K8S api to create object&lt;/li&gt;
&lt;li&gt;must use correct version depending on what create&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Kind&lt;/th&gt;
 &lt;th&gt;Version&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;POD&lt;/td&gt;
 &lt;td&gt;v1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Service&lt;/td&gt;
 &lt;td&gt;v1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ReplicaSet&lt;/td&gt;
 &lt;td&gt;apps/v1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Deployment&lt;/td&gt;
 &lt;td&gt;apps/v1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="kind"&gt;
 Kind
 &lt;a class="heading-link" href="#kind"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;see in kind field in table above&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="metadata"&gt;
 Metadata
 &lt;a class="heading-link" href="#metadata"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;name, labels, app&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="spec"&gt;
 Spec
 &lt;a class="heading-link" href="#spec"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;containers&lt;/li&gt;
&lt;li&gt;name&lt;/li&gt;
&lt;li&gt;image&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="kubectl-create"&gt;
 kubectl create
 &lt;a class="heading-link" href="#kubectl-create"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="l"&gt;kubectl create -f pod-definition.yaml&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Above will deploy pod based on YAML file&lt;/p&gt;</description></item><item><title>Pods in Kubernetes</title><link>https://kevin-morris.net/blog/2025/pods-in-kubernetes/</link><pubDate>Tue, 28 Oct 2025 23:21:32 -0400</pubDate><guid>https://kevin-morris.net/blog/2025/pods-in-kubernetes/</guid><description>&lt;h1 id="pod"&gt;
 Pod
 &lt;a class="heading-link" href="#pod"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Kubernetes ultimate aim is to deploy apps in CONTAINERS on a set of machines configured as WORKER NODES in a CLUSTER&lt;/li&gt;
&lt;li&gt;Kubernetes aka &amp;ldquo;k8s&amp;rdquo; does not deploy containers DIRECTLY on worker nodes&lt;/li&gt;
&lt;li&gt;Containers are encapsulated into a Kubernetes object known as POD&lt;/li&gt;
&lt;li&gt;A pod is a single instance of an application&lt;/li&gt;
&lt;li&gt;A pod is the SMALLEST object you can create in Kubernetes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="pod-example"&gt;
 Pod Example
 &lt;a class="heading-link" href="#pod-example"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Below is a very simple example of a YAML file. The file deploys a pod named &amp;ldquo;my-pod&amp;rdquo; with the image &amp;ldquo;nginx&amp;rdquo;.&lt;/p&gt;</description></item><item><title>Projects</title><link>https://kevin-morris.net/projects/</link><pubDate>Tue, 21 Oct 2025 21:14:59 -0400</pubDate><guid>https://kevin-morris.net/projects/</guid><description>&lt;p&gt;Nothing to see at the moment!&lt;/p&gt;
&lt;p&gt;Site under construction.&lt;/p&gt;</description></item><item><title>About</title><link>https://kevin-morris.net/about/</link><pubDate>Tue, 21 Oct 2025 21:08:57 -0400</pubDate><guid>https://kevin-morris.net/about/</guid><description>&lt;h2 id="kevin-morris"&gt;
 Kevin Morris
 &lt;a class="heading-link" href="#kevin-morris"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;h2 id="command-line-traveller-wheel_of_dharma"&gt;
 &lt;em&gt;Command Line Traveller&lt;/em&gt; &amp;#x2638;&amp;#xfe0f;
 &lt;a class="heading-link" href="#command-line-traveller-wheel_of_dharma"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Hi there! My name is Kevin and I&amp;rsquo;m an engineer going full throttle DevOps — which makes me a Kubernetes disciple. Before you throw shade or break out the memes: k8s is a tool, a solution, and it is NOT for every case. Kubernetes is container orchestration and management — a self-healing system that constantly drives toward your desired state. That can be big or small, but it&amp;rsquo;s never one size fits all.&lt;/p&gt;</description></item><item><title>Deployments</title><link>https://kevin-morris.net/blog/2025/deployments/</link><pubDate>Wed, 08 Oct 2025 22:08:02 -0400</pubDate><guid>https://kevin-morris.net/blog/2025/deployments/</guid><description>&lt;h2 id="deployment"&gt;
 Deployment
 &lt;a class="heading-link" href="#deployment"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;higher level OBJECT encapsulate pods/containers
make changes
rolling updates
some pods, not all, etc&lt;/p&gt;
&lt;p&gt;CONTAINER inside POD
PODS inside REPLICASET
all of that contained in DEPLOYMENT&lt;/p&gt;
&lt;h5 id="myapp-deploymentyaml"&gt;
 myapp-deployment.yaml
 &lt;a class="heading-link" href="#myapp-deploymentyaml"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h5&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;apiVersion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;apps/v1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;kind&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Deployment&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;myapp-deployment&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;labels&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;app&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;myapp&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;front-end&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;replicas&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;selector&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;matchLabels&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;front-end&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;template&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;myapp-pod&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;labels&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;app&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;myapp&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;front-end&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;containers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;nginx-container&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;nginx&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="commands"&gt;
 Commands
 &lt;a class="heading-link" href="#commands"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;`kubectl create -f deployment.yaml&lt;/p&gt;</description></item><item><title>Homelab</title><link>https://kevin-morris.net/blog/2025/homelab/</link><pubDate>Mon, 22 Sep 2025 09:24:54 -0400</pubDate><guid>https://kevin-morris.net/blog/2025/homelab/</guid><description>&lt;h1 id="careus"&gt;
 Careus
 &lt;a class="heading-link" href="#careus"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Careus is born! &amp;#x1f600;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Caerus, was the Greek god of opportunity, luck, and favorable moments. He was depicted as a young, winged, and fleeting youth, with a lock of hair on his forehead that could be seized, but a bald head in the back, symbolizing that once an opportunity passes, it cannot be regained.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s the reason I named my homelab &amp;ldquo;Careus&amp;rdquo;. &amp;#x2638;&amp;#xfe0f;&lt;/p&gt;</description></item></channel></rss>