<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Aisalkyn Aidarova</title>
    <description>The latest articles on DEV Community by Aisalkyn Aidarova (@jumptotech).</description>
    <link>https://dev.to/jumptotech</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3549986%2F7a403ca9-0459-412a-b618-71699480d58d.png</url>
      <title>DEV Community: Aisalkyn Aidarova</title>
      <link>https://dev.to/jumptotech</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jumptotech"/>
    <language>en</language>
    <item>
      <title>interview questions</title>
      <dc:creator>Aisalkyn Aidarova</dc:creator>
      <pubDate>Fri, 19 Jun 2026 00:03:18 +0000</pubDate>
      <link>https://dev.to/jumptotech/interview-questions-171</link>
      <guid>https://dev.to/jumptotech/interview-questions-171</guid>
      <description>&lt;p&gt;This is a very large topic. For a DevOps/SRE interview, these are the most common questions with answers and explanations.&lt;/p&gt;

&lt;h1&gt;
  
  
  1. What is an Operating System (OS)?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;An Operating System is software that manages hardware resources and provides services for applications.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux&lt;/li&gt;
&lt;li&gt;Windows&lt;/li&gt;
&lt;li&gt;macOS&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Responsibilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Process management&lt;/li&gt;
&lt;li&gt;Memory management&lt;/li&gt;
&lt;li&gt;File management&lt;/li&gt;
&lt;li&gt;User management&lt;/li&gt;
&lt;li&gt;Network management&lt;/li&gt;
&lt;li&gt;Device management&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Real Example
&lt;/h3&gt;

&lt;p&gt;When you open Chrome:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;OS allocates RAM.&lt;/li&gt;
&lt;li&gt;OS schedules CPU.&lt;/li&gt;
&lt;li&gt;OS accesses files from disk.&lt;/li&gt;
&lt;li&gt;OS handles network traffic.&lt;/li&gt;
&lt;/ol&gt;




&lt;h1&gt;
  
  
  2. What are the main Linux Components?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Linux consists of:&lt;/p&gt;

&lt;h3&gt;
  
  
  Kernel
&lt;/h3&gt;

&lt;p&gt;Core of Linux.&lt;/p&gt;

&lt;p&gt;Responsible for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU scheduling&lt;/li&gt;
&lt;li&gt;Memory management&lt;/li&gt;
&lt;li&gt;Device drivers&lt;/li&gt;
&lt;li&gt;Networking&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Shell
&lt;/h3&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bash&lt;/li&gt;
&lt;li&gt;Zsh&lt;/li&gt;
&lt;li&gt;Sh&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Responsible for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Executing commands&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  File System
&lt;/h3&gt;

&lt;p&gt;Stores:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Files&lt;/li&gt;
&lt;li&gt;Directories&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  System Libraries
&lt;/h3&gt;

&lt;p&gt;Allow applications to communicate with the kernel.&lt;/p&gt;

&lt;h3&gt;
  
  
  User Space Applications
&lt;/h3&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;nginx&lt;/li&gt;
&lt;li&gt;docker&lt;/li&gt;
&lt;li&gt;kubectl&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  3. Explain Linux Boot Process
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;BIOS/UEFI starts&lt;/li&gt;
&lt;li&gt;GRUB bootloader loads&lt;/li&gt;
&lt;li&gt;Linux kernel loads&lt;/li&gt;
&lt;li&gt;systemd starts&lt;/li&gt;
&lt;li&gt;Services start&lt;/li&gt;
&lt;li&gt;Login prompt appears&lt;/li&gt;
&lt;/ol&gt;




&lt;h1&gt;
  
  
  4. What is CPU?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;CPU = Central Processing Unit&lt;/p&gt;

&lt;p&gt;It executes instructions.&lt;/p&gt;

&lt;p&gt;Think of CPU as the brain of the computer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Responsibilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Calculations&lt;/li&gt;
&lt;li&gt;Running applications&lt;/li&gt;
&lt;li&gt;Scheduling processes&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Check CPU
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lscpu
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;top
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;htop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  5. What is RAM?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;RAM = Random Access Memory&lt;/p&gt;

&lt;p&gt;Temporary storage used by running applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;Application running:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU processes data&lt;/li&gt;
&lt;li&gt;RAM stores active data&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Check RAM
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;free &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;top
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vmstat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  6. Difference Between RAM and Disk
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;Disk&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Temporary&lt;/td&gt;
&lt;td&gt;Permanent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Faster&lt;/td&gt;
&lt;td&gt;Slower&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lost after reboot&lt;/td&gt;
&lt;td&gt;Saved after reboot&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  7. What is a Process?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;A process is a running program.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ps &lt;span class="nt"&gt;-ef&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Show all processes.&lt;/p&gt;




&lt;h1&gt;
  
  
  8. What is a Thread?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;A thread is a lightweight execution unit inside a process.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Google Chrome:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One process&lt;/li&gt;
&lt;li&gt;Many threads&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  9. Linux Directory Structure
&lt;/h1&gt;

&lt;h3&gt;
  
  
  What is / ?
&lt;/h3&gt;

&lt;p&gt;Root directory.&lt;/p&gt;

&lt;h3&gt;
  
  
  Important Directories
&lt;/h3&gt;

&lt;h3&gt;
  
  
  /etc
&lt;/h3&gt;

&lt;p&gt;Configuration files&lt;/p&gt;

&lt;p&gt;Examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/etc/passwd
/etc/hosts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  /var
&lt;/h3&gt;

&lt;p&gt;Logs&lt;/p&gt;

&lt;p&gt;Examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/var/log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  /home
&lt;/h3&gt;

&lt;p&gt;User files&lt;/p&gt;




&lt;h3&gt;
  
  
  /tmp
&lt;/h3&gt;

&lt;p&gt;Temporary files&lt;/p&gt;




&lt;h3&gt;
  
  
  /bin
&lt;/h3&gt;

&lt;p&gt;Basic commands&lt;/p&gt;




&lt;h3&gt;
  
  
  /usr
&lt;/h3&gt;

&lt;p&gt;Installed applications&lt;/p&gt;




&lt;h3&gt;
  
  
  /opt
&lt;/h3&gt;

&lt;p&gt;Third-party applications&lt;/p&gt;




&lt;h3&gt;
  
  
  /dev
&lt;/h3&gt;

&lt;p&gt;Devices&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/dev/sda
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  /proc
&lt;/h3&gt;

&lt;p&gt;Kernel information&lt;/p&gt;




&lt;h1&gt;
  
  
  10. What is a File?
&lt;/h1&gt;

&lt;p&gt;Everything in Linux is treated as a file.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Regular file&lt;/li&gt;
&lt;li&gt;Directory&lt;/li&gt;
&lt;li&gt;Device&lt;/li&gt;
&lt;li&gt;Socket&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  11. File Permissions
&lt;/h1&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-rwxr-xr-x&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Meaning
&lt;/h3&gt;

&lt;p&gt;Owner:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rwx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Group:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;r-x
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Others:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;r-x
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Change permissions
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chmod &lt;/span&gt;755 file
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  12. Network Troubleshooting Questions
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Check IP
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ip a
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Check Routing
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ip route
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Check DNS
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nslookup google.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dig google.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Check Connectivity
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ping google.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Check Port
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nc &lt;span class="nt"&gt;-zv&lt;/span&gt; host 443
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Check Open Connections
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ss &lt;span class="nt"&gt;-tulpn&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Trace Network Path
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;traceroute google.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  13. What is DNS?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;DNS converts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;google.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;142.250.x.x
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without DNS you would need to remember IP addresses.&lt;/p&gt;




&lt;h1&gt;
  
  
  14. TCP vs UDP
&lt;/h1&gt;

&lt;h3&gt;
  
  
  TCP
&lt;/h3&gt;

&lt;p&gt;Reliable&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTPS&lt;/li&gt;
&lt;li&gt;SSH&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  UDP
&lt;/h3&gt;

&lt;p&gt;Faster&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DNS&lt;/li&gt;
&lt;li&gt;Video streaming&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  15. What is AWS?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Amazon Web Services is a cloud platform that provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compute&lt;/li&gt;
&lt;li&gt;Storage&lt;/li&gt;
&lt;li&gt;Networking&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pay only for what you use.&lt;/p&gt;




&lt;h1&gt;
  
  
  16. What is EC2?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Amazon EC2 is a virtual machine in AWS.&lt;/p&gt;

&lt;p&gt;Used for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Applications&lt;/li&gt;
&lt;li&gt;Databases&lt;/li&gt;
&lt;li&gt;Containers&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  17. What is Elastic IP?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Static public IP address.&lt;/p&gt;

&lt;p&gt;Used when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Public IP must not change.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bastion host&lt;/li&gt;
&lt;li&gt;Web server&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  18. What is EBS?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Amazon EBS = Block Storage&lt;/p&gt;

&lt;p&gt;Think:&lt;/p&gt;

&lt;p&gt;Virtual hard drive attached to EC2.&lt;/p&gt;

&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Persistent&lt;/li&gt;
&lt;li&gt;Fast&lt;/li&gt;
&lt;li&gt;Single AZ&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  19. What is EFS?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Amazon EFS = Shared File System&lt;/p&gt;

&lt;p&gt;Many EC2 instances can mount the same storage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Uses
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Shared application files&lt;/li&gt;
&lt;li&gt;Kubernetes persistent storage&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  20. EBS vs EFS
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;EBS&lt;/th&gt;
&lt;th&gt;EFS&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Block Storage&lt;/td&gt;
&lt;td&gt;File Storage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One EC2&lt;/td&gt;
&lt;td&gt;Many EC2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Single AZ&lt;/td&gt;
&lt;td&gt;Multi-AZ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Faster&lt;/td&gt;
&lt;td&gt;Shared&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  21. What is S3?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Amazon S3&lt;/p&gt;

&lt;p&gt;Stores:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Images&lt;/li&gt;
&lt;li&gt;Videos&lt;/li&gt;
&lt;li&gt;Backups&lt;/li&gt;
&lt;li&gt;Logs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unlimited scale.&lt;/p&gt;




&lt;h1&gt;
  
  
  22. What is CloudFront?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Amazon CloudFront&lt;/p&gt;

&lt;p&gt;CDN service.&lt;/p&gt;

&lt;p&gt;Caches content close to users.&lt;/p&gt;

&lt;h3&gt;
  
  
  Benefits
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Faster websites&lt;/li&gt;
&lt;li&gt;Lower latency&lt;/li&gt;
&lt;li&gt;DDoS protection&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  23. What is Load Balancer?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Distributes traffic among servers.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1000 users
      |
     ALB
   /     \
EC2     EC2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  24. What is ALB?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Application Load Balancer&lt;/p&gt;

&lt;p&gt;Works at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP&lt;/li&gt;
&lt;li&gt;HTTPS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Can route:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/app
/api
/images
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to different targets.&lt;/p&gt;




&lt;h1&gt;
  
  
  25. What is NLB?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Network Load Balancer&lt;/p&gt;

&lt;p&gt;Works at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TCP&lt;/li&gt;
&lt;li&gt;UDP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Used for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High performance&lt;/li&gt;
&lt;li&gt;Millions of requests&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  26. ALB vs NLB
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;ALB&lt;/th&gt;
&lt;th&gt;NLB&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Layer 7&lt;/td&gt;
&lt;td&gt;Layer 4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTTP/HTTPS&lt;/td&gt;
&lt;td&gt;TCP/UDP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Path Routing&lt;/td&gt;
&lt;td&gt;No Path Routing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Web Apps&lt;/td&gt;
&lt;td&gt;High-performance apps&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  27. What is Auto Scaling Group?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Automatically adds or removes EC2 instances.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;CPU &amp;gt; 70%&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2 EC2 → 4 EC2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Traffic decreases:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;4 EC2 → 2 EC2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  28. What is Reserved Instance?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Commit for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 year&lt;/li&gt;
&lt;li&gt;3 years&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Receive large discount.&lt;/p&gt;

&lt;p&gt;Used for predictable workloads.&lt;/p&gt;




&lt;h1&gt;
  
  
  29. What is Spot Instance?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Unused AWS capacity.&lt;/p&gt;

&lt;p&gt;Up to 90% cheaper.&lt;/p&gt;

&lt;p&gt;Can be terminated anytime.&lt;/p&gt;

&lt;p&gt;Best for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Batch jobs&lt;/li&gt;
&lt;li&gt;CI/CD&lt;/li&gt;
&lt;li&gt;Testing&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  30. What is Dedicated Host?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Physical server dedicated only to one customer.&lt;/p&gt;

&lt;p&gt;No other AWS customers share that hardware.&lt;/p&gt;

&lt;p&gt;Used for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compliance&lt;/li&gt;
&lt;li&gt;Licensing requirements&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  31. What is Security Group?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Virtual firewall for EC2.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Allow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;22 SSH
80 HTTP
443 HTTPS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deny everything else.&lt;/p&gt;




&lt;h1&gt;
  
  
  32. What is VPC?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Virtual network in AWS.&lt;/p&gt;

&lt;p&gt;Contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subnets&lt;/li&gt;
&lt;li&gt;Route tables&lt;/li&gt;
&lt;li&gt;Security groups&lt;/li&gt;
&lt;li&gt;EC2&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  33. What is NAT Gateway?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Allows private instances to access internet.&lt;/p&gt;

&lt;p&gt;Internet cannot initiate connections to them.&lt;/p&gt;




&lt;h1&gt;
  
  
  34. What is Route Table?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Network map telling traffic where to go.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0.0.0.0/0
→ Internet Gateway
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  35. What is Internet Gateway?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Allows public subnet resources to access internet.&lt;/p&gt;




&lt;h1&gt;
  
  
  36. Production Troubleshooting Question
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Interviewer:
&lt;/h3&gt;

&lt;p&gt;Application is down. What do you check?&lt;/p&gt;

&lt;h3&gt;
  
  
  Answer
&lt;/h3&gt;

&lt;p&gt;Step 1&lt;/p&gt;

&lt;p&gt;Check DNS&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nslookup app.company.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 2&lt;/p&gt;

&lt;p&gt;Check Load Balancer&lt;/p&gt;

&lt;p&gt;Target healthy?&lt;/p&gt;

&lt;p&gt;Step 3&lt;/p&gt;

&lt;p&gt;Check EC2&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;systemctl status nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 4&lt;/p&gt;

&lt;p&gt;Check Ports&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ss &lt;span class="nt"&gt;-tulpn&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 5&lt;/p&gt;

&lt;p&gt;Check Logs&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;journalctl &lt;span class="nt"&gt;-xe&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;tail&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; /var/log/nginx/error.log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 6&lt;/p&gt;

&lt;p&gt;Check Resources&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;top
free &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 7&lt;/p&gt;

&lt;p&gt;Check Network&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ping
curl
traceroute
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  37. Top Linux Commands Every DevOps Engineer Must Know
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;pwd
ls
cd
mkdir
rm
cp
mv
cat
&lt;/span&gt;less
&lt;span class="nb"&gt;head
tail
grep
&lt;/span&gt;find
&lt;span class="nb"&gt;chmod
chown
&lt;/span&gt;ps
top
htop
&lt;span class="nb"&gt;kill
df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;span class="nb"&gt;du&lt;/span&gt; &lt;span class="nt"&gt;-sh&lt;/span&gt;
free &lt;span class="nt"&gt;-h&lt;/span&gt;
ip a
ip route
ping
curl
wget
dig
nslookup
systemctl
journalctl
ssh
scp
&lt;span class="nb"&gt;tar
gzip
&lt;/span&gt;unzip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These cover roughly 80–90% of the Linux, AWS, networking, and troubleshooting questions commonly asked in DevOps, SRE, Platform Engineer, and Cloud Engineer interviews.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Foundation: AWS VPC CNI Deep Dive</title>
      <dc:creator>Aisalkyn Aidarova</dc:creator>
      <pubDate>Thu, 18 Jun 2026 12:20:19 +0000</pubDate>
      <link>https://dev.to/jumptotech/the-foundation-aws-vpc-cni-deep-dive-2i6g</link>
      <guid>https://dev.to/jumptotech/the-foundation-aws-vpc-cni-deep-dive-2i6g</guid>
      <description>&lt;p&gt;Let’s remove the training wheels. We are going to break down exactly how these concepts operate mechanically under the hood, how bytes physically travel through an AWS environment, and what a &lt;strong&gt;Senior DevOps Engineer (6+ Years Experience)&lt;/strong&gt; writes, debugs, and architects daily in production.&lt;/p&gt;

&lt;p&gt;You cannot understand EKS Services without understanding how Pods get their IPs. Vanilla Kubernetes uses an "overlay network" (like Flannel or Calico vxlan), encapsulating packets inside packets. &lt;strong&gt;EKS does not do this by default.&lt;/strong&gt; It uses the native &lt;strong&gt;AWS VPC CNI&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Under the Hood
&lt;/h3&gt;

&lt;p&gt;Every Pod is a first-class citizen in your AWS VPC. It gets a real, routable IP address pulled directly from your AWS Subnet's CIDR block.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The &lt;code&gt;aws-node&lt;/code&gt; DaemonSet:&lt;/strong&gt; Runs on every worker node. It consists of two components: the &lt;strong&gt;CNI Plugin&lt;/strong&gt; (which wires up network interfaces) and the &lt;strong&gt;IPAMD&lt;/strong&gt; (IP Address Management Daemon).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Warm Pools:&lt;/strong&gt; &lt;code&gt;ipamd&lt;/code&gt; keeps a pool of Elastic Network Interfaces (ENIs) and secondary IPv4 addresses pre-attached to your EC2 worker nodes so that when a Pod schedules, it gets an IP instantly.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+--------------------------------------------------------------+
| Worker Node (EC2 Instance)                                   |
|  [Primary ENI (eth0)] -&amp;gt; Host Node IP (10.0.1.50)           |
|                                                              |
|  [Secondary ENI (eth1)]                                      |
|     |-- Secondary IP 1 -&amp;gt; Assigned to Pod A (10.0.1.61)      |
|     |-- Secondary IP 2 -&amp;gt; Assigned to Pod B (10.0.1.62)      |
+--------------------------------------------------------------+

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Senior Architectural Engineering: The IP Exhaustion Problem
&lt;/h3&gt;

&lt;p&gt;Every EC2 instance size has a hard limit on how many ENIs and secondary IPs it can host. For example, a &lt;code&gt;t3.medium&lt;/code&gt; can attach 3 ENIs, and each ENI can hold 6 IPs.&lt;/p&gt;

&lt;p&gt;$$\text{Max Pods} = (\text{ENIs} \times (\text{IPs per ENI} - 1)) + 2$$&lt;/p&gt;

&lt;p&gt;A &lt;code&gt;t3.medium&lt;/code&gt; maxes out at 17 Pods. If your subnet is small (e.g., a &lt;code&gt;/24&lt;/code&gt;), a few large nodes will completely consume your subnet's IP addresses, preventing scaling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Senior Solutions implemented at 6+ years:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Prefix Delegation:&lt;/strong&gt; Instead of allocating individual secondary &lt;code&gt;/32&lt;/code&gt; IPs, &lt;code&gt;ipamd&lt;/code&gt; allocates entire &lt;code&gt;/28&lt;/code&gt; blocks (16 IPs) to the ENI. This increases pod density per node dramatically (up to the K8s recommended 110 pods per node).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom Networking:&lt;/strong&gt; You configure the VPC CNI to assign Pod IPs from an entirely separate, non-routable secondary VPC CIDR block (e.g., &lt;code&gt;100.64.0.0/16&lt;/code&gt; CGNAT space), saving your primary corporate subnet IPs for the actual EC2 nodes.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  2. ClusterIP &amp;amp; &lt;code&gt;kube-proxy&lt;/code&gt; Core Mechanics
&lt;/h2&gt;

&lt;p&gt;When you define a &lt;code&gt;ClusterIP&lt;/code&gt; service, Kubernetes creates a stable virtual IP address. But this IP does not exist on any physical network card. It is a ghost IP.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Linux Kernel Data Path (&lt;code&gt;iptables&lt;/code&gt; vs &lt;code&gt;IPVS&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;Every node runs a daemon called &lt;code&gt;kube-proxy&lt;/code&gt;. It watches the Kubernetes API server for new Services and &lt;code&gt;EndpointSlices&lt;/code&gt; (the real IPs of the backend pods matching your service selector).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Pod A] ---&amp;gt; Tries to talk to ClusterIP (10.100.0.15:80)
                 |
          (Linux Kernel intercept via Netfilter)
                 |
     [iptables / IPVS Rules Engine]
                 |
     (Changes Destination IP via DNAT)
                 |
                 v
         [Pod B Real IP (10.0.1.62:8080)]

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;iptables&lt;/code&gt; Mode (Default):&lt;/strong&gt; &lt;code&gt;kube-proxy&lt;/code&gt; writes sequential sequential &lt;code&gt;O(N)&lt;/code&gt; evaluation rules inside the Linux kernel's Netfilter stack. When a packet leaves a pod targeting a ClusterIP, the kernel intercepts it, executes a &lt;strong&gt;DNAT (Destination Network Address Translation)&lt;/strong&gt;, and swaps the ClusterIP with a randomly selected healthy Pod IP.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The 6-Year Gotcha:&lt;/strong&gt; At large scales (over 5,000 services), &lt;code&gt;iptables&lt;/code&gt; causes massive CPU overhead because every single network packet must traverse a massive, sequential list of rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production Fix:&lt;/strong&gt; Senior engineers switch &lt;code&gt;kube-proxy&lt;/code&gt; to &lt;strong&gt;IPVS (IP Virtual Server)&lt;/strong&gt; mode. IPVS utilizes a Netfilter hash table &lt;code&gt;O(1)&lt;/code&gt;, allowing lookup times to remain completely flat regardless of how many thousands of microservices exist in the cluster.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. NodePort: The Multi-Hop Bridge
&lt;/h2&gt;

&lt;p&gt;A NodePort service allocates a port across every worker node (&lt;code&gt;30000-32767&lt;/code&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  The Hidden Packet Flow
&lt;/h3&gt;

&lt;p&gt;If an external client hits &lt;code&gt;Node-1-IP:32145&lt;/code&gt;, the traffic path looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Packet arrives at &lt;strong&gt;Node 1&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Node 1's &lt;code&gt;iptables&lt;/code&gt; catches port &lt;code&gt;32145&lt;/code&gt; and maps it internally to the corresponding &lt;code&gt;ClusterIP&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The rule randomly selects a backend pod. If that pod happens to live on &lt;strong&gt;Node 2&lt;/strong&gt;, Node 1 performs an &lt;strong&gt;SNAT (Source NAT)&lt;/strong&gt; and forwards the packet &lt;em&gt;across&lt;/em&gt; the AWS network to Node 2.&lt;/li&gt;
&lt;li&gt;Node 2 delivers it to the Pod.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Senior Structural Problem: &lt;code&gt;externalTrafficPolicy&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Notice the extra network hop between Node 1 and Node 2. This increases latency and &lt;strong&gt;erases the client's real IP address&lt;/strong&gt; (the pod sees Node 1's IP as the source).&lt;/p&gt;

&lt;p&gt;Senior engineers modify the service manifest:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;NodePort&lt;/span&gt;
  &lt;span class="na"&gt;externalTrafficPolicy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Local&lt;/span&gt; &lt;span class="c1"&gt;# &amp;lt;--- CRITICAL&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;Local&lt;/code&gt; policy:&lt;/strong&gt; Forces the node that receives the traffic to &lt;em&gt;only&lt;/em&gt; route it to pods living on that exact same node. If no local pods exist, the packet is dropped. This preserves the original Client IP and removes the inter-node network hop.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Ingress &amp;amp; AWS Load Balancer Controller (Enterprise Tier)
&lt;/h2&gt;

&lt;p&gt;An Ingress is a collection of Layer 7 (Application Layer) routing rules. In EKS, you deploy the &lt;strong&gt;AWS Load Balancer Controller&lt;/strong&gt;, an open-source operator that sits in your cluster, watches for &lt;code&gt;Ingress&lt;/code&gt; objects, and calls AWS APIs to create an Application Load Balancer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Architectural Deep Dive: Target-Type Modes
&lt;/h3&gt;

&lt;p&gt;A Senior Engineer carefully chooses between two design modes using annotations:&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;alb.ingress.kubernetes.io/target-type: instance&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;The ALB targets the EC2 worker nodes using a NodePort.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Path:&lt;/strong&gt; Client $\rightarrow$ ALB $\rightarrow$ NodePort (EC2 Instance) $\rightarrow$ &lt;code&gt;kube-proxy&lt;/code&gt; (&lt;code&gt;iptables&lt;/code&gt;) $\rightarrow$ Pod IP.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cons:&lt;/strong&gt; Double hopping, higher latency, complex health checking.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;alb.ingress.kubernetes.io/target-type: ip&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;The ALB bypasses the EC2 instances completely and targets the Pods directly. This is only possible because the AWS VPC CNI gives Pods real VPC IPs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Path:&lt;/strong&gt; Client $\rightarrow$ ALB $\rightarrow$ Pod IP directly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pros:&lt;/strong&gt; Blazing fast, zero &lt;code&gt;kube-proxy&lt;/code&gt; interference, cleaner health checks, direct traffic pattern.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Internet Client]
       |
       v
  [AWS ALB]
       |
       +-----------------------+ (Target Type: IP)
       |                       |
       v                       v
[Pod 1 (10.0.1.61)]     [Pod 2 (10.0.1.62)]

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  5. Egress Architechture &amp;amp; Security Boundaries
&lt;/h2&gt;

&lt;p&gt;Managing outbound traffic is a massive part of auditing and compliance (PCI-DSS, SOC2).&lt;/p&gt;

&lt;h3&gt;
  
  
  The Infrastructure Layer
&lt;/h3&gt;

&lt;p&gt;Pods live on nodes inside &lt;strong&gt;Private Subnets&lt;/strong&gt;. When they call an external API (e.g., Salesforce, GitHub), the traffic passes from the Pod $\rightarrow$ ENI $\rightarrow$ Private Subnet Route Table $\rightarrow$ &lt;strong&gt;AWS NAT Gateway&lt;/strong&gt; (living in a Public Subnet) $\rightarrow$ Internet.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The NAT Gateway maps the internal IP to a single public &lt;strong&gt;Elastic IP (EIP)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Senior Level Layer-7 Security Problem
&lt;/h3&gt;

&lt;p&gt;Standard Kubernetes &lt;code&gt;NetworkPolicies&lt;/code&gt; operate at Layer 3/4 (IP and Port). They cannot inspect domain names. If a malicious dependency slips into your application code, it can easily exfiltrate data to a domain like &lt;code&gt;malicious-attacker.com&lt;/code&gt; over standard port &lt;code&gt;443&lt;/code&gt;, bypassing standard network policies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Senior Design Implementations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deploy &lt;strong&gt;Cilium&lt;/strong&gt; utilizing eBPF to implement L7 network policies:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;cilium.io/v2&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;CiliumNetworkPolicy&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;restrict-egress-to-stripe&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;endpointSelector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment-processor&lt;/span&gt;
  &lt;span class="na"&gt;egress&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;toFQDNs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;matchName&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;api.stripe.com"&lt;/span&gt; &lt;span class="c1"&gt;# &amp;lt;--- Only allow out to this domain&lt;/span&gt;
    &lt;span class="na"&gt;toPorts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;443"&lt;/span&gt;
        &lt;span class="na"&gt;protocol&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;TCP&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  6. Real-World Troubleshooting Playbook for a Senior Engineer
&lt;/h2&gt;

&lt;p&gt;When an application times out inside EKS, a Senior Engineer does not guess; they trace the network stack systemically.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                  [Is DNS Resolving?]
                     /          \
                (No) /            \ (Yes)
                    v              v
     Check CoreDNS Logs       [Can Pod contact ClusterIP?]
     Verify NodeLocal Cache       /          \
                             (No) /            \ (Yes)
                                 v              v
                     Check kube-proxy rules    Check Ingress / ALB Targets
                     Verify EndpointSlices     Verify Security Groups

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  1. "My Ingress returns a 502 Bad Gateway"
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Senior Action:&lt;/strong&gt; Check the AWS ALB Target Group status via the AWS console or CLI. If targets are unhealthy, check the Kubernetes Pod &lt;strong&gt;Readiness Probes&lt;/strong&gt;. If the container's readiness probe fails, the AWS Load Balancer Controller removes the Pod IP from the ALB Target Group, causing a 502.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security Group Check:&lt;/strong&gt; Ensure the Security Group attached to the ALB allows inbound traffic to the Worker Node/Pod security groups on the application port.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. "Intermittent DNS Resolution Timeouts (5-second delays)"
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Senior Action:&lt;/strong&gt; This is a famous Linux kernel bug involving &lt;code&gt;glibc&lt;/code&gt; tracking concurrent UDP requests (&lt;code&gt;ndots&lt;/code&gt; problem).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolution:&lt;/strong&gt; Deploy &lt;strong&gt;NodeLocal DNSCache&lt;/strong&gt; as a DaemonSet to handle DNS lookup requests locally on the node via a loopback interface (&lt;code&gt;169.254.20.10&lt;/code&gt;), cutting out connection tracking overhead entirely.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. "The Pod can't connect to an AWS RDS Database outside the cluster"
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Senior Action:&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;kubectl get pod -o wide&lt;/code&gt; to determine the Pod's actual IP.&lt;/li&gt;
&lt;li&gt;Check the AWS Security Group assigned to the RDS instance. Ensure it allows ingress from the &lt;strong&gt;Pod's specific IP block&lt;/strong&gt; (or the Security Group assigned directly to the Pod if using &lt;em&gt;Security Groups for Pods&lt;/em&gt; via Branch ENIs).&lt;/li&gt;
&lt;li&gt;Verify that the routing tables in the EKS node's subnets point correctly to the VPC subnets hosting the database.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>k8s: svc</title>
      <dc:creator>Aisalkyn Aidarova</dc:creator>
      <pubDate>Thu, 18 Jun 2026 12:16:38 +0000</pubDate>
      <link>https://dev.to/jumptotech/k8s-svc-1loj</link>
      <guid>https://dev.to/jumptotech/k8s-svc-1loj</guid>
      <description>&lt;h2&gt;
  
  
  2. ClusterIP: The Internal Phone Extension
&lt;/h2&gt;

&lt;h3&gt;
  
  
  From Scratch (The Analogy)
&lt;/h3&gt;

&lt;p&gt;Imagine a team of accounting workers inside the building. They move desks constantly (in Kubernetes, Pods are destroyed and recreated with new internal IPs all the time). If the sales team needs to call accounting, they can't memorize individual desk numbers. Instead, management sets up a permanent internal phone extension: &lt;strong&gt;Dial 400 for Accounting&lt;/strong&gt;. No matter which desk the accounting workers move to, dialing 400 always routes you to an available accountant.&lt;/p&gt;

&lt;h3&gt;
  
  
  6-Year DevOps Level
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;ClusterIP&lt;/code&gt; is the default Kubernetes service type. It exposes the service on an internal cluster-only IP.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Mechanics:&lt;/strong&gt; It creates a stable virtual IP (VIP) and DNS entry (e.g., &lt;code&gt;my-svc.my-namespace.svc.cluster.local&lt;/code&gt;) inside the cluster.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How it actually routes traffic:&lt;/strong&gt; It relies on &lt;code&gt;kube-proxy&lt;/code&gt;. A senior engineer knows that &lt;code&gt;kube-proxy&lt;/code&gt; usually runs in &lt;strong&gt;IPVS&lt;/strong&gt; or &lt;strong&gt;iptables&lt;/strong&gt; mode, modifying the Linux kernel netfilter rules on each node to intercept traffic hitting the ClusterIP and randomly (or via round-robin) forward it to a real Pod backing IP.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Senior Gotcha:&lt;/strong&gt; ClusterIPs are non-routable outside the cluster. If an application cannot talk to a database via ClusterIP, a senior engineer checks CoreDNS logs, reviews &lt;code&gt;Endpoints&lt;/code&gt; or &lt;code&gt;EndpointSlices&lt;/code&gt; (&lt;code&gt;kubectl get endpointslices&lt;/code&gt;) to ensure backend pods are actually marked "Ready" by their readiness probes.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. NodePort: The Dedicated Backdoor
&lt;/h2&gt;

&lt;h3&gt;
  
  
  From Scratch (The Analogy)
&lt;/h3&gt;

&lt;p&gt;Now, say an external vendor needs direct access to a specific internal system. The building manager decides to open a very specific side door on the outside of the building—say, Door &lt;strong&gt;Room 32000&lt;/strong&gt;. Anyone from the outside world can walk up to &lt;em&gt;any&lt;/em&gt; side wall of the building, find Door 32000, and they will be instantly tunneled straight to that internal team's desk.&lt;/p&gt;

&lt;h3&gt;
  
  
  6-Year DevOps Level
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;NodePort&lt;/code&gt; builds on top of ClusterIP. It opens a specific port (by default, between &lt;code&gt;30000-32767&lt;/code&gt;) on &lt;strong&gt;every single virtual machine (Worker Node)&lt;/strong&gt; in your cluster.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Mechanics:&lt;/strong&gt; If you target &lt;code&gt;http://&amp;lt;Any-Node-IP&amp;gt;:32000&lt;/code&gt;, the node's network stack receives the traffic and routes it to the underlying ClusterIP service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Senior Perspective:&lt;/strong&gt; In enterprise production, you almost &lt;strong&gt;never&lt;/strong&gt; expose NodePorts directly to the public internet because it's a security risk and requires clients to track ephemeral EC2 instance IPs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "Why":&lt;/strong&gt; Why do we need it? Because external Enterprise Load Balancers (like AWS ALBs or NLBs) use NodePorts as target groups to bridge public traffic into the private cluster network.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Ingress vs. ALB (AWS Load Balancer Controller)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  From Scratch (The Analogy)
&lt;/h3&gt;

&lt;p&gt;Having 50 different side doors (NodePorts) for 50 different services is chaotic. Instead, you build a &lt;strong&gt;Grand Front Lobby (The Ingress)&lt;/strong&gt; with a single front door. A receptionist sits there. When a visitor walks in and says, &lt;em&gt;"I want to go to /shipping,"&lt;/em&gt; the receptionist looks at a rulebook and directs them to the elevator. If a visitor says, &lt;em&gt;"I want to go to /billing,"&lt;/em&gt; they are directed to a different floor.&lt;/p&gt;

&lt;h3&gt;
  
  
  6-Year DevOps Level
&lt;/h3&gt;

&lt;p&gt;An &lt;strong&gt;Ingress&lt;/strong&gt; is just a Kubernetes &lt;em&gt;specification&lt;/em&gt; (a set of routing rules based on HTTP paths or hostnames). It does nothing by itself without an &lt;strong&gt;Ingress Controller&lt;/strong&gt; to execute it.&lt;/p&gt;

&lt;p&gt;In AWS EKS, the golden standard is the &lt;strong&gt;AWS Load Balancer Controller&lt;/strong&gt;, which automatically provisions an &lt;strong&gt;AWS ALB (Application Load Balancer)&lt;/strong&gt; in your AWS account when you apply an Ingress manifest.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# A Senior Engineer's Ingress Spec&lt;/span&gt;
&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;networking.k8s.io/v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Ingress&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;app-ingress&lt;/span&gt;
  &lt;span class="na"&gt;annotations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;alb.ingress.kubernetes.io/scheme&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;internet-facing&lt;/span&gt;
    &lt;span class="na"&gt;alb.ingress.kubernetes.io/target-type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ip&lt;/span&gt; &lt;span class="c1"&gt;# KEY SENIOR CONFIG&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;ingressClassName&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;alb&lt;/span&gt;
  &lt;span class="na"&gt;rules&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;http&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;paths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/users&lt;/span&gt;
        &lt;span class="na"&gt;pathType&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Prefix&lt;/span&gt;
        &lt;span class="na"&gt;backend&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;service&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;user-service&lt;/span&gt;
            &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
              &lt;span class="na"&gt;number&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deep Dive - Target-type &lt;code&gt;instance&lt;/code&gt; vs &lt;code&gt;ip&lt;/code&gt;:&lt;/strong&gt; * &lt;code&gt;instance&lt;/code&gt; mode routes traffic from the ALB -&amp;gt; NodePort on the EC2 worker node -&amp;gt; kube-proxy -&amp;gt; Pod. This adds an extra network hop.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ip&lt;/code&gt; mode (leveraging AWS VPC CNI) routes traffic &lt;strong&gt;directly from the ALB into the Pod's private IP&lt;/strong&gt;. This completely bypasses NodePort and kube-proxy, slashing latency and maximizing performance. A 6-year veteran designs for &lt;code&gt;target-type: ip&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Egress: Leaving the Building Safely
&lt;/h2&gt;

&lt;h3&gt;
  
  
  From Scratch (The Analogy)
&lt;/h3&gt;

&lt;p&gt;Workers inside the building occasionally need to look up info on the public internet or send mail out. However, you don't want just any worker downloading random files or leaking data. The building has a strictly managed &lt;strong&gt;Outbound Mailroom (Egress Gateway)&lt;/strong&gt; that checks where packets are going before letting them leave the building.&lt;/p&gt;

&lt;h3&gt;
  
  
  6-Year DevOps Level
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Egress&lt;/strong&gt; refers to traffic originating &lt;em&gt;inside&lt;/em&gt; the cluster going &lt;em&gt;out&lt;/em&gt; (to the internet, or to a legacy database outside the cluster).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Setup:&lt;/strong&gt; In a secure EKS setup, worker nodes live in &lt;strong&gt;Private Subnets&lt;/strong&gt;. Their outbound path goes through an AWS &lt;strong&gt;NAT Gateway&lt;/strong&gt; assigned to a static Elastic IP (EIP). External third-party APIs often require you to whitelist these specific EIPs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Egress Control:&lt;/strong&gt; A senior engineer knows that standard K8s network policies cannot restrict outbound traffic by domain name (e.g., blocking everything except &lt;code&gt;api.stripe.com&lt;/code&gt;). To solve this, a 6-year veteran implements tools like &lt;strong&gt;Cilium (Egress Gateway)&lt;/strong&gt; or a service mesh like &lt;strong&gt;Istio&lt;/strong&gt; to enforce Layer 7 egress filtering, preventing data exfiltration if a container is compromised.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. What Else is in the EKS Service &amp;amp; Networking Stack?
&lt;/h2&gt;

&lt;p&gt;To interview or operate at a 6-year senior level, you must master these additional critical components of the EKS network ecosystem:&lt;/p&gt;

&lt;h3&gt;
  
  
  A. AWS VPC CNI Plugin (The Ground Floor)
&lt;/h3&gt;

&lt;p&gt;Unlike standard vanilla Kubernetes which uses overlay networks (like Flannel), EKS uses the &lt;strong&gt;AWS VPC CNI&lt;/strong&gt;. Every Pod gets a &lt;em&gt;real, routable IP address directly from your AWS VPC subnet&lt;/em&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Senior Problem (IP Exhaustion):&lt;/strong&gt; Because pods use real VPC IPs, large clusters can easily run out of IPs in a standard subnet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Senior Solution:&lt;/strong&gt; You must know how to configure &lt;strong&gt;Custom Networking&lt;/strong&gt; (assigning secondary, non-routable CIDR blocks like &lt;code&gt;100.64.0.0/8&lt;/code&gt; to pods) and enable &lt;strong&gt;Prefix Delegation&lt;/strong&gt; (allocating /28 IP blocks to network interfaces to increase pod density per EC2 node).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  B. CoreDNS &amp;amp; NodeLocal DNSCache
&lt;/h3&gt;

&lt;p&gt;How do pods resolve domains? They hit the &lt;code&gt;CoreDNS&lt;/code&gt; pods running in the cluster. At scale, thousands of pods spamming CoreDNS creates a massive bottleneck. Senior engineers deploy &lt;strong&gt;NodeLocal DNSCache&lt;/strong&gt;, running a tiny DNS agent on &lt;em&gt;every single node&lt;/em&gt; to cache queries locally and prevent intermittent connection timeouts.&lt;/p&gt;

&lt;h3&gt;
  
  
  C. Pod Identities (The Modern Security Layer)
&lt;/h3&gt;

&lt;p&gt;Pods often need to talk to other AWS services (like S3 buckets or DynamoDB).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Old way: &lt;strong&gt;IRSA&lt;/strong&gt; (IAM Roles for Service Accounts) which required complex OIDC providers and trust policies.&lt;/li&gt;
&lt;li&gt;New standard: &lt;strong&gt;EKS Pod Identities&lt;/strong&gt;. It optimizes performance and simplifies credential mapping by running an agent on the node that maps AWS IAM roles directly to K8s service accounts seamlessly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  D. AWS VPC Lattice (The Future of Cross-Cluster Mesh)
&lt;/h3&gt;

&lt;p&gt;A cutting-edge DevOps engineer knows that managing traditional Service Meshes (like Istio or Linkerd) brings massive operational overhead. Amazon handles this natively via &lt;strong&gt;Amazon VPC Lattice&lt;/strong&gt; using the &lt;strong&gt;Kubernetes Gateway API&lt;/strong&gt;. It allows sidecar-less, fully managed service-to-service communication, traffic splitting, and IAM-level authentication across multiple distinct EKS clusters and AWS accounts.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary Checklist for a Senior DevOps Engineer
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Primary Purpose&lt;/th&gt;
&lt;th&gt;Key Senior Architectural Focus&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ClusterIP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Internal Pod-to-Pod communication.&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;kube-proxy&lt;/code&gt; performance (&lt;code&gt;iptables&lt;/code&gt; vs &lt;code&gt;IPVS&lt;/code&gt;), &lt;code&gt;EndpointSlices&lt;/code&gt; scaling.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NodePort&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Direct external access via node IP.&lt;/td&gt;
&lt;td&gt;Use primarily as a target for legacy external LBs; minimize public exposure.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ingress / ALB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Layer 7 HTTP/HTTPS routing.&lt;/td&gt;
&lt;td&gt;Use AWS Load Balancer Controller with &lt;code&gt;target-type: ip&lt;/code&gt; for direct routing.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Egress&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Outbound traffic control.&lt;/td&gt;
&lt;td&gt;NAT Gateway management, static IP whitelisting, L7 domain filtering (Cilium/Istio).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;VPC CNI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;IP Allocation to Pods.&lt;/td&gt;
&lt;td&gt;Prefix delegation, Custom Networking to prevent IP exhaustion.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;To deepen your understanding of how these routing mechanisms translate to real-world cloud infrastructure, &lt;a href="https://www.google.com/search?q=https://www.youtube.com/watch%3Fv%3D381fb9dca05" rel="noopener noreferrer"&gt;this AWS Load Balancer Controller deep dive&lt;/a&gt; covers advanced ingress, namespace isolation, and DNS architectures natively inside EKS.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>devops</category>
      <category>kubernetes</category>
      <category>networking</category>
    </item>
    <item>
      <title>interview questions with answers</title>
      <dc:creator>Aisalkyn Aidarova</dc:creator>
      <pubDate>Wed, 17 Jun 2026 23:52:16 +0000</pubDate>
      <link>https://dev.to/jumptotech/interview-questions-with-answers-2f3m</link>
      <guid>https://dev.to/jumptotech/interview-questions-with-answers-2f3m</guid>
      <description>&lt;p&gt;This is a very good foundation interview set. A DevOps engineer with 5–7 years of experience should be able to explain all of these clearly.&lt;/p&gt;

&lt;h1&gt;
  
  
  Infrastructure Fundamentals
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is Hardware?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
Hardware is the physical component of a computer system.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU&lt;/li&gt;
&lt;li&gt;RAM&lt;/li&gt;
&lt;li&gt;SSD&lt;/li&gt;
&lt;li&gt;Network Card (NIC)&lt;/li&gt;
&lt;li&gt;Motherboard&lt;/li&gt;
&lt;li&gt;Hard Drive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without hardware, software cannot run.&lt;/p&gt;


&lt;h2&gt;
  
  
  What is Software?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
Software is a collection of programs and instructions that run on hardware.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux&lt;/li&gt;
&lt;li&gt;Windows&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Kubernetes&lt;/li&gt;
&lt;li&gt;Jenkins&lt;/li&gt;
&lt;li&gt;Nginx&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hardware = Physical machine&lt;/p&gt;

&lt;p&gt;Software = Instructions running on machine&lt;/p&gt;


&lt;h1&gt;
  
  
  CPU
&lt;/h1&gt;
&lt;h2&gt;
  
  
  What is CPU?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
CPU (Central Processing Unit) is the brain of the computer.&lt;/p&gt;

&lt;p&gt;Responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Execute instructions&lt;/li&gt;
&lt;li&gt;Process calculations&lt;/li&gt;
&lt;li&gt;Run applications&lt;/li&gt;
&lt;li&gt;Manage processes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;When you run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CPU processes that command.&lt;/p&gt;




&lt;h2&gt;
  
  
  How do you check CPU usage?
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;top
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;htop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mpstat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  RAM
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is RAM?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
RAM is temporary memory used by running applications.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kubernetes Pods&lt;/li&gt;
&lt;li&gt;Docker Containers&lt;/li&gt;
&lt;li&gt;Nginx&lt;/li&gt;
&lt;li&gt;Java Applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When server reboots, RAM is cleared.&lt;/p&gt;


&lt;h2&gt;
  
  
  How do you check memory usage?
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;free &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;free &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Mem: 16Gi  10Gi  2Gi  4Gi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  How to check memory consumers?
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;top
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ps aux &lt;span class="nt"&gt;--sort&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;-%mem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  SSD
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is SSD?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
SSD (Solid State Drive) is permanent storage.&lt;/p&gt;

&lt;p&gt;Used for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Operating System&lt;/li&gt;
&lt;li&gt;Logs&lt;/li&gt;
&lt;li&gt;Databases&lt;/li&gt;
&lt;li&gt;Files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster than HDD&lt;/li&gt;
&lt;li&gt;No moving parts&lt;/li&gt;
&lt;/ul&gt;


&lt;h1&gt;
  
  
  IP Address
&lt;/h1&gt;
&lt;h2&gt;
  
  
  What is IP Address?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
IP Address uniquely identifies a device on a network.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;192.168.1.10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Similar to a home address.&lt;/p&gt;

&lt;p&gt;Without IP, devices cannot communicate.&lt;/p&gt;




&lt;h2&gt;
  
  
  Difference between Public and Private IP
&lt;/h2&gt;

&lt;p&gt;Private:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Public:&lt;/p&gt;

&lt;p&gt;Accessible from internet.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;54.12.34.56
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Port
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is Port?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
Port identifies a service running on an IP address.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;192.168.1.10:80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;IP = House&lt;/p&gt;

&lt;p&gt;Port = Apartment Number&lt;/p&gt;




&lt;p&gt;Common Ports&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Port&lt;/th&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;SSH&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;HTTP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;443&lt;/td&gt;
&lt;td&gt;HTTPS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;td&gt;DNS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3306&lt;/td&gt;
&lt;td&gt;MySQL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5432&lt;/td&gt;
&lt;td&gt;PostgreSQL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6379&lt;/td&gt;
&lt;td&gt;Redis&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Protocol
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is Protocol?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
Protocol is a set of communication rules.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP&lt;/li&gt;
&lt;li&gt;HTTPS&lt;/li&gt;
&lt;li&gt;TCP&lt;/li&gt;
&lt;li&gt;UDP&lt;/li&gt;
&lt;li&gt;SSH&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Difference between TCP and UDP
&lt;/h2&gt;

&lt;p&gt;TCP:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reliable&lt;/li&gt;
&lt;li&gt;Ordered&lt;/li&gt;
&lt;li&gt;Connection oriented&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP&lt;/li&gt;
&lt;li&gt;HTTPS&lt;/li&gt;
&lt;li&gt;SSH&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;UDP:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fast&lt;/li&gt;
&lt;li&gt;No delivery guarantee&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DNS&lt;/li&gt;
&lt;li&gt;Video Streaming&lt;/li&gt;
&lt;/ul&gt;


&lt;h1&gt;
  
  
  OSI Model
&lt;/h1&gt;
&lt;h2&gt;
  
  
  Explain OSI Model
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Application&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Presentation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Session&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Transport&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Network&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Data Link&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Physical&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h3&gt;
  
  
  Layer 7
&lt;/h3&gt;

&lt;p&gt;Application Layer&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP&lt;/li&gt;
&lt;li&gt;HTTPS&lt;/li&gt;
&lt;li&gt;FTP&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  Layer 4
&lt;/h3&gt;

&lt;p&gt;Transport&lt;/p&gt;

&lt;p&gt;Protocols:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TCP&lt;/li&gt;
&lt;li&gt;UDP&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  Layer 3
&lt;/h3&gt;

&lt;p&gt;Network&lt;/p&gt;

&lt;p&gt;Responsible for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Routing&lt;/li&gt;
&lt;li&gt;IP Addressing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Devices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Router&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  Layer 2
&lt;/h3&gt;

&lt;p&gt;Data Link&lt;/p&gt;

&lt;p&gt;Responsible for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MAC Addresses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Devices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Switch&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  Layer 1
&lt;/h3&gt;

&lt;p&gt;Physical&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cables&lt;/li&gt;
&lt;li&gt;Fiber&lt;/li&gt;
&lt;li&gt;Ethernet&lt;/li&gt;
&lt;/ul&gt;


&lt;h1&gt;
  
  
  EC2
&lt;/h1&gt;
&lt;h2&gt;
  
  
  What is EC2?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
Amazon EC2 is a virtual server in AWS.&lt;/p&gt;

&lt;p&gt;Used to run:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux&lt;/li&gt;
&lt;li&gt;Applications&lt;/li&gt;
&lt;li&gt;Databases&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Launch Ubuntu server.&lt;/p&gt;

&lt;p&gt;Install Nginx.&lt;/p&gt;

&lt;p&gt;Access via browser.&lt;/p&gt;


&lt;h1&gt;
  
  
  ASG
&lt;/h1&gt;
&lt;h2&gt;
  
  
  What is Auto Scaling Group?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
ASG automatically adds or removes EC2 instances.&lt;/p&gt;

&lt;p&gt;Benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High Availability&lt;/li&gt;
&lt;li&gt;Scalability&lt;/li&gt;
&lt;li&gt;Self Healing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Traffic increases.&lt;/p&gt;

&lt;p&gt;ASG:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2 EC2 → 4 EC2 → 8 EC2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  ALB
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is Application Load Balancer?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
ALB distributes HTTP/HTTPS traffic across multiple targets.&lt;/p&gt;

&lt;p&gt;Works at:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OSI Layer 7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Host-based routing&lt;/li&gt;
&lt;li&gt;Path-based routing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/api/users → User Service

/api/orders → Order Service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  NLB
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is Network Load Balancer?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
NLB works at:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Layer 4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Handles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TCP&lt;/li&gt;
&lt;li&gt;UDP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Very fast.&lt;/p&gt;

&lt;p&gt;Millions of connections.&lt;/p&gt;




&lt;h1&gt;
  
  
  Target Group
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is Target Group?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
Target Group contains backend servers.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ALB
 ↓
Target Group
 ↓
EC2 Instances
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Health checks are performed against targets.&lt;/p&gt;




&lt;h1&gt;
  
  
  Security Group
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is Security Group?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
Virtual firewall for AWS resources.&lt;/p&gt;

&lt;p&gt;Controls:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inbound Traffic&lt;/li&gt;
&lt;li&gt;Outbound Traffic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Allow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;22 SSH
80 HTTP
443 HTTPS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  EBS
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is EBS?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
Elastic Block Store.&lt;/p&gt;

&lt;p&gt;Persistent disk attached to EC2.&lt;/p&gt;

&lt;p&gt;Similar to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SSD attached to server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Databases&lt;/li&gt;
&lt;li&gt;Application storage&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  EFS
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is EFS?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
Elastic File System.&lt;/p&gt;

&lt;p&gt;Shared storage.&lt;/p&gt;

&lt;p&gt;Multiple EC2 instances can mount same filesystem.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EC2-1
EC2-2
EC2-3
   ↓
   EFS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  S3
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is S3?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
Object Storage Service.&lt;/p&gt;

&lt;p&gt;Stores:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Images&lt;/li&gt;
&lt;li&gt;Videos&lt;/li&gt;
&lt;li&gt;Backups&lt;/li&gt;
&lt;li&gt;Logs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Characteristics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Durable&lt;/li&gt;
&lt;li&gt;Highly Available&lt;/li&gt;
&lt;li&gt;Unlimited Scale&lt;/li&gt;
&lt;/ul&gt;


&lt;h1&gt;
  
  
  Cookies
&lt;/h1&gt;
&lt;h2&gt;
  
  
  What are Cookies?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
Small files stored in browser.&lt;/p&gt;

&lt;p&gt;Used for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Login Sessions&lt;/li&gt;
&lt;li&gt;User Preferences&lt;/li&gt;
&lt;li&gt;Tracking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;User logs in.&lt;/p&gt;

&lt;p&gt;Cookie stores session identifier.&lt;/p&gt;


&lt;h1&gt;
  
  
  Persistent Volume (PV)
&lt;/h1&gt;
&lt;h2&gt;
  
  
  What is Persistent Volume?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
Persistent storage in Kubernetes.&lt;/p&gt;

&lt;p&gt;Pod can restart without losing data.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod
 ↓
PVC
 ↓
PV
 ↓
EBS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Linux Commands
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Check Disk Usage
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Filesystem
Size
Used
Available
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Check Filesystem Size
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lsblk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Check Memory
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;free &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Check CPU
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;top
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Check Processes
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ps aux
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Kill Process
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;kill&lt;/span&gt; &lt;span class="nt"&gt;-9&lt;/span&gt; PID
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Search File
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find / &lt;span class="nt"&gt;-name&lt;/span&gt; nginx.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Check Port
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ss &lt;span class="nt"&gt;-tulpn&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;netstat &lt;span class="nt"&gt;-tulpn&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Current Directory
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  List Files
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-la&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Copy
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cp &lt;/span&gt;file1 file2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Move
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mv &lt;/span&gt;old new
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Delete
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; folder
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Change Permissions
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chmod &lt;/span&gt;755 file
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Change Ownership
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chown &lt;/span&gt;ubuntu:ubuntu file
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Systemd
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is systemd?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
systemd is Linux service manager.&lt;/p&gt;

&lt;p&gt;Manages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Services&lt;/li&gt;
&lt;li&gt;Boot process&lt;/li&gt;
&lt;li&gt;Logs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;nginx&lt;/li&gt;
&lt;li&gt;docker&lt;/li&gt;
&lt;li&gt;kubelet&lt;/li&gt;
&lt;/ul&gt;


&lt;h1&gt;
  
  
  systemctl
&lt;/h1&gt;
&lt;h2&gt;
  
  
  Start Service
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Stop Service
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl stop nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Restart Service
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Service Status
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;systemctl status nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Enable On Boot
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  journalctl
&lt;/h1&gt;
&lt;h2&gt;
  
  
  What is journalctl?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
Reads systemd logs.&lt;/p&gt;


&lt;h2&gt;
  
  
  View Logs
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;journalctl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Service Logs
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;journalctl &lt;span class="nt"&gt;-u&lt;/span&gt; nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Real-Time Logs
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;journalctl &lt;span class="nt"&gt;-fu&lt;/span&gt; nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  apt
&lt;/h1&gt;
&lt;h2&gt;
  
  
  What is apt?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
Ubuntu package manager.&lt;/p&gt;



&lt;p&gt;Install package&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;nginx &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Update repository&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Upgrade packages&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  sudo
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is sudo?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
Runs command as root.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Network Troubleshooting
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Check IP Address
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ip a
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Check Routing Table
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ip route
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Test Connectivity
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ping 8.8.8.8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  DNS Test
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nslookup google.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dig google.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Trace Route
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;traceroute google.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Check Open Ports
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ss &lt;span class="nt"&gt;-tulpn&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Test TCP Port
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;telnet &lt;span class="nb"&gt;hostname &lt;/span&gt;80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nc &lt;span class="nt"&gt;-zv&lt;/span&gt; &lt;span class="nb"&gt;hostname &lt;/span&gt;80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Real Interview Scenario
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Question: Website is down. How do you troubleshoot?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Answer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check process
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ps aux | &lt;span class="nb"&gt;grep &lt;/span&gt;nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Check service
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;systemctl status nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Check logs
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;journalctl &lt;span class="nt"&gt;-u&lt;/span&gt; nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Check port
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ss &lt;span class="nt"&gt;-tulpn&lt;/span&gt; | &lt;span class="nb"&gt;grep &lt;/span&gt;80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Check disk
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Check memory
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;free &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Check CPU
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;top
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Check connectivity
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ping
curl
nc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Check firewall/security group&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check DNS&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nslookup
dig
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Check load balancer health checks&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verify backend application is responding&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This troubleshooting flow is exactly the type of answer expected from a mid-to-senior DevOps/SRE engineer during interviews.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Lecture: Architectural Masterclass — Kubernetes Networking In-Depth</title>
      <dc:creator>Aisalkyn Aidarova</dc:creator>
      <pubDate>Mon, 15 Jun 2026 06:45:32 +0000</pubDate>
      <link>https://dev.to/jumptotech/lecture-architectural-masterclass-kubernetes-networking-in-depth-5cak</link>
      <guid>https://dev.to/jumptotech/lecture-architectural-masterclass-kubernetes-networking-in-depth-5cak</guid>
      <description>&lt;p&gt;Kubernetes networking operates on a fundamental principle: &lt;strong&gt;Every Pod gets its own unique, routable IP address.&lt;/strong&gt; In traditional infrastructure, multiple applications on a single server have to share an IP address and fight over port allocations (e.g., App A uses port 8080, App B must use 8081). In Kubernetes, every Pod behaves like a distinct physical server or virtual machine on the network, eliminating port conflicts entirely.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The Four Layers of Kubernetes Networking
&lt;/h2&gt;

&lt;p&gt;To understand how data flows through a cluster, we must break networking down into four distinct communication boundaries.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 1: Container-to-Container Networking (Within the Same Pod)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Mechanism:&lt;/strong&gt; All containers inside a single Pod share the exact same network namespace. This means they share the same IP address, MAC address, and port space.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How they talk:&lt;/strong&gt; They communicate with each other over the local loopback interface (&lt;code&gt;localhost&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-World Use Case:&lt;/strong&gt; A frontend application container talks to a local logging sidecar container on &lt;code&gt;localhost:9000&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Layer 2: Pod-to-Pod Networking (Same Node vs. Across Nodes)
&lt;/h3&gt;

&lt;p&gt;The foundational rule of Kubernetes networking is that &lt;strong&gt;any Pod must be able to communicate with any other Pod without utilizing Network Address Translation (NAT)&lt;/strong&gt;, regardless of which machine they live on.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;On the Same Node:&lt;/strong&gt; The virtual network interfaces (&lt;code&gt;veth&lt;/code&gt; pairs) of the Pods are plugged into a local virtual bridge (like &lt;code&gt;cbr0&lt;/code&gt; or &lt;code&gt;docker0&lt;/code&gt;) running on the host OS. Traffic flows across the bridge directly from one Pod's virtual interface to another.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Across Different Nodes:&lt;/strong&gt; This requires a &lt;strong&gt;Container Network Interface (CNI)&lt;/strong&gt; plugin. The CNI builds an overlay network (an encrypted or encapsulated tunnel using protocols like VXLAN or Geneve) or routes traffic natively using BGP. When Pod A on Node 1 sends a packet to Pod B on Node 2, the CNI encapsulates the packet inside a standard host-to-host physical packet, transmits it across the underlying data center network, and unpacks it on the destination node.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Deep Dive into the Container Network Interface (CNI)
&lt;/h2&gt;

&lt;p&gt;Kubernetes does not have a built-in network provider. Instead, it exposes an interface specification called the &lt;strong&gt;CNI&lt;/strong&gt;. When a Pod is created, the local &lt;code&gt;kubelet&lt;/code&gt; agent calls the configured CNI plugin to provision a virtual network interface and assign an IP address.&lt;/p&gt;

&lt;p&gt;As an engineer, choosing the right CNI determines cluster performance, security, and scalability:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Flannel:&lt;/strong&gt; A lightweight overlay network provider. It uses standard VXLAN encapsulation. It is simple to configure but lacks advanced features like Network Policies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Calico:&lt;/strong&gt; An enterprise-grade provider that routes packets natively via Layer 3 using BGP (Border Gateway Protocol) without encapsulation overhead. It features a highly robust implementation of Kubernetes Network Policies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cilium:&lt;/strong&gt; The modern industry standard. Cilium completely skips traditional Linux IPTables routing by leveraging &lt;strong&gt;eBPF (Extended Berkeley Packet Filter)&lt;/strong&gt; directly inside the Linux Kernel. It routes packets at near-native hardware speeds and provides deep cryptographic visibility and security profiling.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Layer 3: Pod-to-Service Networking (The East-West Traffic Engine)
&lt;/h2&gt;

&lt;p&gt;Because Pods are ephemeral, relying on individual Pod IPs for long-term internal routing is impossible. If a Pod crashes, its replacement gets a completely different IP.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;Service&lt;/strong&gt; provides a stable, permanent IP address and DNS name that fronts a collection of identical Pods.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Role of Kube-Proxy
&lt;/h3&gt;

&lt;p&gt;Services are completely abstract concepts; they do not possess a real physical network interface or a network cable. They are managed by &lt;strong&gt;kube-proxy&lt;/strong&gt;, a network daemon running on every single worker node.&lt;/p&gt;

&lt;p&gt;When a Service is created, the control plane assigns it a virtual IP called a &lt;strong&gt;ClusterIP&lt;/strong&gt;. &lt;code&gt;kube-proxy&lt;/code&gt; watches the API server for these objects and immediately writes routing rules into the node's underlying operating system kernel using one of three modes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;IPVS Mode (IP Virtual Server):&lt;/strong&gt; The modern production standard. It operates using netfilter hooks inside the Linux kernel to implement true Layer 4 load balancing via an efficient $O(1)$ hash table lookup. It scales to tens of thousands of services without degrading network performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IPTables Mode:&lt;/strong&gt; The historical default. &lt;code&gt;kube-proxy&lt;/code&gt; sequentially appends netfilter firewall rules for every service in the cluster. While functional, it operates on a linear lookup model ($O(N)$). If a cluster grows to thousands of services, evaluating millions of sequential IPTables rules for every single packet significantly degrades system performance and consumes excessive CPU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Userspace Mode:&lt;/strong&gt; The legacy model. Traffic is routed out of kernel space, up into the user application space of &lt;code&gt;kube-proxy&lt;/code&gt;, and back down to the kernel. This double-context switch introduces severe latency and is completely deprecated in production environments.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  CoreDNS: Service Discovery
&lt;/h3&gt;

&lt;p&gt;Every time a Service is provisioned, the internal cluster DNS engine (&lt;strong&gt;CoreDNS&lt;/strong&gt;) automatically registers a DNS entry mapped directly to that Service's virtual ClusterIP:&lt;/p&gt;

&lt;p&gt;$$\texttt{..svc.cluster.local}$$&lt;/p&gt;

&lt;p&gt;This allows an application to reliably communicate with an internal database using a static hostname like &lt;code&gt;postgres-db.production&lt;/code&gt; instead of tracking shifting IP addresses.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Layer 4: Exposing Workloads to the Outside World (North-South Traffic)
&lt;/h2&gt;

&lt;p&gt;To accept external requests from clients sitting outside the cluster boundary, you must transition from internal networking to external publishing models.&lt;/p&gt;

&lt;h3&gt;
  
  
  Service Types
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ClusterIP:&lt;/strong&gt; The default mode. It exposes the service on an internal-only cluster IP. This means the service is completely unreachable from outside the cluster network.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NodePort:&lt;/strong&gt; Opens a dedicated high-order port (by default between &lt;code&gt;30000-32767&lt;/code&gt;) across the physical network interface of &lt;strong&gt;every single worker node&lt;/strong&gt; in the cluster. External clients can hit any node's public IP address on that specific port to be automatically routed inside to the target application Pods.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LoadBalancer:&lt;/strong&gt; The enterprise standard for cloud-based clusters. It instructs Kubernetes to reach out to your cloud provider's API (such as AWS, Google Cloud, or Azure) and provision a dedicated physical Cloud Load Balancer. The cloud load balancer automatically routes external public traffic into your cluster's underlying &lt;code&gt;NodePort&lt;/code&gt; or &lt;code&gt;ClusterIP&lt;/code&gt; networks.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Ingress Controllers and the Gateway API
&lt;/h2&gt;

&lt;p&gt;While a Cloud &lt;code&gt;LoadBalancer&lt;/code&gt; service works well, creating a unique cloud load balancer for every individual microservice becomes highly cost-prohibitive and complicated to manage. This is where edge routing abstractions step in.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Ingress Architecture
&lt;/h3&gt;

&lt;p&gt;An &lt;strong&gt;Ingress Controller&lt;/strong&gt; acts as an application-layer (Layer 7) reverse proxy and application load balancer running right inside your cluster. You provision a single Cloud Load Balancer pointing directly to your Ingress Controller (e.g., Nginx Ingress, Traefik, AWS ALB Controller).&lt;/p&gt;

&lt;p&gt;The Ingress Controller reads incoming HTTP requests, looks at the host header and URI path, and performs intelligent routing based on declarative rules:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;networking.k8s.io/v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Ingress&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;API-routing-ingress&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;ingressClassName&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;
  &lt;span class="na"&gt;rules&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;company.com&lt;/span&gt;
    &lt;span class="na"&gt;http&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;paths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/users&lt;/span&gt;
        &lt;span class="na"&gt;pathType&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Prefix&lt;/span&gt;
        &lt;span class="na"&gt;backend&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;service&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;user-service&lt;/span&gt;
            &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
              &lt;span class="na"&gt;number&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8080&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/billing&lt;/span&gt;
        &lt;span class="na"&gt;pathType&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Prefix&lt;/span&gt;
        &lt;span class="na"&gt;backend&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;service&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;billing-service&lt;/span&gt;
            &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
              &lt;span class="na"&gt;number&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;9000&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Next Generation: Gateway API
&lt;/h3&gt;

&lt;p&gt;As clusters scale across massive engineering organizations, the traditional &lt;code&gt;Ingress&lt;/code&gt; resource breaks down because infrastructure configurations (like TLS certificates) and routing mechanisms are tightly coupled into a single file.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Gateway API&lt;/strong&gt; splits this monolithic structure into modular roles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GatewayClass:&lt;/strong&gt; Created by cluster administrators to define the underlying proxy infrastructure type (e.g., Envoy, Istio).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gateway:&lt;/strong&gt; Managed by the infrastructure operations team to define the public-facing entry points, listening ports, and global TLS certifications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTTPRoute / TCPRoute:&lt;/strong&gt; Managed independently by software development teams to map their specific microservice endpoints behind the pre-established Gateway.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. Securing the Network via Network Policies
&lt;/h2&gt;

&lt;p&gt;By default, Kubernetes network design assumes complete trust—&lt;strong&gt;any Pod can send traffic to any other Pod across any namespace.&lt;/strong&gt; To build a secure enterprise environment, you must implement a zero-trust architecture using &lt;strong&gt;Network Policies&lt;/strong&gt;. Network Policies act as stateful firewalls for your Pods, controlling traffic at Layer 3 and Layer 4.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Crucial Operational Warning:&lt;/strong&gt; Network Policies are purely declarative specifications. If your cluster is running a CNI plugin that does not support network policies (such as raw Flannel), your Network Policy manifests will be successfully saved to the API server, but &lt;strong&gt;they will be completely ignored, leaving your cluster entirely wide open.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  📄 Production Example: Isolating a Database Pod
&lt;/h3&gt;

&lt;p&gt;This policy isolates any Pod tagged with &lt;code&gt;app: backend-db&lt;/code&gt;. It implements a default-deny rule for all traffic, explicitly allowing incoming packets (&lt;strong&gt;Ingress&lt;/strong&gt;) exclusively from Pods matching the label &lt;code&gt;app: api-server&lt;/code&gt; on port &lt;code&gt;5432&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;networking.k8s.io/v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;NetworkPolicy&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;db-security-policy&lt;/span&gt;
  &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;production&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;podSelector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;backend-db&lt;/span&gt;
  &lt;span class="na"&gt;policyTypes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Ingress&lt;/span&gt;
  &lt;span class="na"&gt;ingress&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;podSelector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;api-server&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;protocol&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;TCP&lt;/span&gt;
      &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5432&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  7. The Engineer's Guide to Network Troubleshooting
&lt;/h2&gt;

&lt;p&gt;When an internal application fails to communicate over the network, a professional DevOps engineer uses a systematic triage strategy to isolate the root cause.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Validate Pod-to-Pod Connectivity
&lt;/h3&gt;

&lt;p&gt;Verify if the low-level overlay network is functional by passing traffic directly between Pod IPs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Get the raw IP addresses of your source and destination pods&lt;/span&gt;
kubectl get pods &lt;span class="nt"&gt;-o&lt;/span&gt; wide

&lt;span class="c"&gt;# Execute an interactive ping or curl directly from one container to the destination Pod IP&lt;/span&gt;
kubectl &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; target-pod-name &lt;span class="nt"&gt;--&lt;/span&gt; curl http://&amp;lt;destination-pod-ip&amp;gt;:port/healthz

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;If this fails:&lt;/em&gt; The issue resides in your CNI overlay encapsulation, or a strict Network Policy is explicitly blocking the path.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Validate Service VIP Transformation
&lt;/h3&gt;

&lt;p&gt;Verify if &lt;code&gt;kube-proxy&lt;/code&gt; is properly load balancing requests over the Service abstraction layer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Fetch the virtual ClusterIP of your service&lt;/span&gt;
kubectl get svc

&lt;span class="c"&gt;# Attempt to communicate directly with the ClusterIP&lt;/span&gt;
kubectl &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; target-pod-name &lt;span class="nt"&gt;--&lt;/span&gt; curl http://&amp;lt;cluster-ip&amp;gt;:port/healthz

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;If Step 1 succeeds but Step 2 fails:&lt;/em&gt; The &lt;code&gt;kube-proxy&lt;/code&gt; daemon on that specific node is likely frozen, or its local IPTables/IPVS routing tables have desynchronized. Check the health of the &lt;code&gt;kube-proxy&lt;/code&gt; pods inside the &lt;code&gt;kube-system&lt;/code&gt; namespace.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Validate DNS Service Discovery
&lt;/h3&gt;

&lt;p&gt;Verify if CoreDNS is successfully translating network hostnames to virtual cluster IPs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Execute a DNS lookup inside an application container&lt;/span&gt;
kubectl &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; target-pod-name &lt;span class="nt"&gt;--&lt;/span&gt; nslookup postgres-service.production.svc.cluster.local

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;If Step 2 succeeds but Step 3 fails:&lt;/em&gt; The internal CoreDNS deployment is misconfigured or overwhelmed. Check the deployment logs using &lt;code&gt;kubectl logs -n kube-system deployment/coredns&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Production-Grade K8s — Configs, Networking, and Health</title>
      <dc:creator>Aisalkyn Aidarova</dc:creator>
      <pubDate>Mon, 15 Jun 2026 06:33:34 +0000</pubDate>
      <link>https://dev.to/jumptotech/production-grade-k8s-configs-networking-and-health-36d4</link>
      <guid>https://dev.to/jumptotech/production-grade-k8s-configs-networking-and-health-36d4</guid>
      <description>&lt;h2&gt;
  
  
  1. Decoupling Code from Configuration (ConfigMaps &amp;amp; Secrets)
&lt;/h2&gt;

&lt;p&gt;In a true DevOps pipeline, you &lt;strong&gt;never&lt;/strong&gt; hardcode database URLs or passwords inside your container image. If you change a configuration variable, you shouldn't have to rebuild your entire Docker image.&lt;/p&gt;

&lt;p&gt;Kubernetes solves this with two resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ConfigMaps:&lt;/strong&gt; For non-sensitive data (e.g., application logs settings, database hostnames).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secrets:&lt;/strong&gt; For sensitive data (e.g., API keys, database passwords). &lt;em&gt;Note: Standard K8s secrets are only Base64 encoded, not strongly encrypted by default. In enterprise environments, we back them up with tools like AWS Secrets Manager or HashiCorp Vault.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📄 Lab Blueprint: Injecting Configuration into Pods
&lt;/h3&gt;

&lt;p&gt;Show your students how a Pod consumes a ConfigMap as an environment variable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ConfigMap&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;app-config&lt;/span&gt;
&lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;DATABASE_HOST&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;db.production.company.com"&lt;/span&gt;
  &lt;span class="na"&gt;LOG_LEVEL&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;debug"&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;apps/v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deployment&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;backend-app&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;replicas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;
  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;backend&lt;/span&gt;
  &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;backend&lt;/span&gt;
    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;api-server&lt;/span&gt;
        &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;my-registry/api:v1.0&lt;/span&gt;
        &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;DB_HOST&lt;/span&gt;
          &lt;span class="na"&gt;valueFrom&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;configMapKeyRef&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
              &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;app-config&lt;/span&gt;
              &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;DATABASE_HOST&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  2. Advanced Traffic Management: Services &amp;amp; Ingress
&lt;/h2&gt;

&lt;p&gt;Your pods are up, and they have their configurations. But how does a customer on the internet actually view the website?&lt;/p&gt;

&lt;p&gt;Pods are ephemeral; they die and change IP addresses constantly. We need a permanent, stable entry point.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Routing Chain
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ External User Request ] 
           │
           ▼
┌──────────────────────────┐
│    Ingress Controller    │  &amp;lt;-- Routes traffic based on domain name (e.g., app.com)
└──────────┬───────────────┘
           │
           ▼
┌──────────────────────────┐
│     ClusterIP Service    │  &amp;lt;-- Acts as the permanent internal Load Balancer
└──────────┬───────────────┘
           │
           ▼
 ┌──────────────────┐
 │ Target Pods (1-3)│  &amp;lt;-- The actual running application instances
 └──────────────────┘

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ClusterIP Service:&lt;/strong&gt; The internal load balancer. It gives your group of pods a single, permanent internal IP address.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ingress Controller (e.g., Nginx, Traefik):&lt;/strong&gt; The reverse proxy sitting at the edge of your cluster. It reads incoming HTTP requests and routes them based on the domain name or URL path (e.g., routing traffic hitting &lt;code&gt;/api&lt;/code&gt; to the backend pods, and &lt;code&gt;/&lt;/code&gt; to the frontend pods).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. The  Production Pillars: Health Probes
&lt;/h2&gt;

&lt;p&gt;A professional DevOps engineer never assumes an application is working just because the container status says &lt;code&gt;Running&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;What happens if an app experiences a Java Out-Of-Memory deadlock? The container stays "alive," but it cannot handle customer traffic. Kubernetes handles this using &lt;strong&gt;Probes&lt;/strong&gt; (automated health checks run by the node's &lt;code&gt;kubelet&lt;/code&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  The Two Critical Probes
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Probe Type&lt;/th&gt;
&lt;th&gt;What it asks the container&lt;/th&gt;
&lt;th&gt;What happens if it fails&lt;/th&gt;
&lt;th&gt;Real-World Use Case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Readiness Probe&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;"Are you ready to receive live user traffic right now?"&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;The Ingress stops sending traffic to this specific pod, but &lt;strong&gt;does not&lt;/strong&gt; restart it.&lt;/td&gt;
&lt;td&gt;Waiting for a heavy application to load its cache or connect to the database on boot.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Liveness Probe&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;"Are you still alive and healthy, or are you frozen/deadlocked?"&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;Kubelet instantly terminates the pod and spins up a fresh replica.&lt;/td&gt;
&lt;td&gt;Automatically fixing an application that has completely frozen or stopped responding.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  📄 Classroom Demo: Implementing Probes
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;production-app&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;company/app:v2&lt;/span&gt;
    &lt;span class="na"&gt;livenessProbe&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;httpGet&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/healthz&lt;/span&gt;
        &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8080&lt;/span&gt;
      &lt;span class="na"&gt;initialDelaySeconds&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;15&lt;/span&gt;
      &lt;span class="na"&gt;periodSeconds&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;
    &lt;span class="na"&gt;readinessProbe&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;httpGet&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/ready&lt;/span&gt;
        &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8080&lt;/span&gt;
      &lt;span class="na"&gt;initialDelaySeconds&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
      &lt;span class="na"&gt;periodSeconds&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4. Resource Allocation: Requests vs. Limits
&lt;/h2&gt;

&lt;p&gt;If you do not specify boundaries, a single malfunctioning container with a memory leak can steal all the RAM on a physical server, causing all other critical tenant pods on that machine to crash.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Requests:&lt;/strong&gt; The &lt;em&gt;guaranteed floor&lt;/em&gt;. The minimum amount of CPU/Memory the container needs to boot up. The scheduler uses this to pick a node.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limits:&lt;/strong&gt; The &lt;em&gt;absolute ceiling&lt;/em&gt;. The maximum amount of resource the container is allowed to take.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Critical Interview Question Warning for Students:&lt;/strong&gt;&lt;br&gt;
If a container breaks past its &lt;strong&gt;CPU Limit&lt;/strong&gt;, Kubernetes throttles its speed (the app slows down).&lt;br&gt;
If a container breaks past its &lt;strong&gt;Memory Limit&lt;/strong&gt;, the Linux kernel immediately terminates it with an &lt;strong&gt;OOMKilled&lt;/strong&gt; (Out of Memory Killed) error status.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>What is a Deployment Controller? (The Fleet Manager)</title>
      <dc:creator>Aisalkyn Aidarova</dc:creator>
      <pubDate>Mon, 15 Jun 2026 06:29:58 +0000</pubDate>
      <link>https://dev.to/jumptotech/what-is-a-deployment-controller-the-fleet-manager-4c97</link>
      <guid>https://dev.to/jumptotech/what-is-a-deployment-controller-the-fleet-manager-4c97</guid>
      <description>&lt;p&gt;To understand how a &lt;strong&gt;Deployment Controller&lt;/strong&gt; works, we have to look past the technical jargon and understand the core problem it solves in the real world.&lt;/p&gt;

&lt;p&gt;Imagine you own a high-end shipping company that delivers packages using a fleet of delivery vans.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Containers (The Packages):&lt;/strong&gt; Your application code (like a website or an API) is packed inside a standard container (like Docker).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Pods (The Delivery Vans):&lt;/strong&gt; In Kubernetes, you don't run containers directly. You put them inside a &lt;strong&gt;Pod&lt;/strong&gt;. Think of a Pod as a delivery van. The van carries the package, protects it, and moves it around.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Worker Nodes (The Highways/Garages):&lt;/strong&gt; These are the actual physical or virtual servers (computers) where your vans drive and operate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, if you only have one van, what happens if it gets a flat tire or crashes? Your delivery stops. If suddenly 10,000 customers order packages at the exact same time, one van isn't enough. You need someone in a control tower managing the fleet.&lt;/p&gt;

&lt;p&gt;That control tower is the &lt;strong&gt;Deployment Controller&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;In Kubernetes, a &lt;strong&gt;Controller&lt;/strong&gt; is a background process that runs an infinite loop. It works exactly like a home thermostat. You set the thermostat to 72°F (your &lt;strong&gt;Desired State&lt;/strong&gt;). The thermostat looks at the room's actual temperature (the &lt;strong&gt;Current State&lt;/strong&gt;). If it’s 68°F, it turns on the heat until it hits 72°F.&lt;/p&gt;

&lt;p&gt;A Deployment Controller does this for software. You tell it: &lt;em&gt;"I want exactly 3 vans (Pods) running my website at all times."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If a server crashes at 3:00 AM and one of your vans disappears, the Deployment Controller instantly notices:&lt;/p&gt;

&lt;p&gt;$$\text{Current State (2)} \neq \text{Desired State (3)}$$&lt;/p&gt;

&lt;p&gt;It doesn't wake up a human. It automatically orders a new van to be built on a healthy server within milliseconds. This is called &lt;strong&gt;Self-Healing&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Deep Dive: What a Professional DevOps Engineer Knows Behind the Scenes
&lt;/h2&gt;

&lt;p&gt;While a beginner just knows that a Deployment keeps an app running, a professional DevOps engineer with years of experience understands the underlying mechanics, architecture, and exact order of operations.&lt;/p&gt;

&lt;p&gt;A &lt;code&gt;Deployment&lt;/code&gt; doesn't actually manage Pods directly. It manages a middle layer called a &lt;strong&gt;ReplicaSet&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ Deployment ] 
      │
      ▼
 [ ReplicaSet ] 
   ├── Pod 1
   ├── Pod 2
   └── Pod 3

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Deployment&lt;/strong&gt; handles the &lt;em&gt;strategy&lt;/em&gt; of how your application updates (e.g., changing from version 1 to version 2).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The ReplicaSet&lt;/strong&gt; handles the &lt;em&gt;number&lt;/em&gt; of duplicates (ensuring exactly 3 copies are alive).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Step-by-Step Lifecycle of a Deployment
&lt;/h3&gt;

&lt;p&gt;When a DevOps engineer writes a configuration file (YAML) and sends it to Kubernetes using the command line (&lt;code&gt;kubectl apply -f deployment.yaml&lt;/code&gt;), a highly choreographed sequence occurs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The Guard (API Server):&lt;/strong&gt; The request enters the central brain of Kubernetes (the API Server). It checks who you are and if you have permission to deploy software.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Ledger (Etcd):&lt;/strong&gt; Once approved, the configuration is saved into a super-secure database called &lt;code&gt;etcd&lt;/code&gt;. This database holds the absolute truth of the entire system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Brain (Deployment Controller):&lt;/strong&gt; The Deployment Controller constantly watches this database. It sees the new request, creates a &lt;code&gt;ReplicaSet&lt;/code&gt; object, and writes it back to the database.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Count (ReplicaSet Controller):&lt;/strong&gt; The ReplicaSet Controller sees its new assignment, realizes it needs to create 3 Pods, and writes 3 blank Pod blueprints into the database.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Matchmaker (Scheduler):&lt;/strong&gt; The Scheduler looks at these blank Pod blueprints. It reviews all available servers in your cloud network, checks which servers have enough CPU and memory, and assigns each Pod to a specific server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Captain (Kubelet):&lt;/strong&gt; On each individual server, a small agent program called a &lt;code&gt;kubelet&lt;/code&gt; is watching. It sees that a Pod has been assigned to its machine. It immediately tells the container software (like Docker/containerd) to download the application code and start running it.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  3. Real-World Production Strategies (Advanced DevOps Mastery)
&lt;/h2&gt;

&lt;p&gt;As you grow into a professional role, your job shifts from just "making it work" to "ensuring zero downtime when millions of people are using it." This is where Deployment strategies matter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rolling Updates (The Default Strategy)
&lt;/h3&gt;

&lt;p&gt;Imagine you need to upgrade all your delivery vans from Version 1 to Version 2. You can't just destroy all Version 1 vans at once, or your business shuts down for 10 minutes.&lt;/p&gt;

&lt;p&gt;A Deployment Controller performs a &lt;strong&gt;Rolling Update&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It spins up &lt;em&gt;one&lt;/em&gt; new Version 2 van.&lt;/li&gt;
&lt;li&gt;Once it confirms the new van is working perfectly, it destroys &lt;em&gt;one&lt;/em&gt; old Version 1 van.&lt;/li&gt;
&lt;li&gt;It repeats this step-by-step until the whole fleet is upgraded. &lt;strong&gt;Result:&lt;/strong&gt; The users utilizing your website never notice a single second of downtime.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Proactive Safeguards: Readiness &amp;amp; Liveness Probes
&lt;/h3&gt;

&lt;p&gt;A great DevOps engineer never trusts that software is working just because it booted up. Sometimes an application starts, but it's frozen inside because it can't connect to the database.&lt;/p&gt;

&lt;p&gt;To fix this, you configure &lt;strong&gt;Probes&lt;/strong&gt; (automated health checks) inside the deployment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Liveness Probe:&lt;/strong&gt; The controller continuously knocks on the container's door. If the container stops answering, the controller assumes it is deadlocked and restarts it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Readiness Probe:&lt;/strong&gt; During an update, the controller checks if the new Version 2 van is actually ready to take real customer orders. If the app takes 30 seconds to load its data, the controller waits patiently before routing live traffic to it.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Summary: The Mindset Shift to Become a Professional
&lt;/h2&gt;

&lt;p&gt;To transition from a beginner to a high-level DevOps Engineer, you must stop thinking about software as something you install manually on a computer.&lt;/p&gt;

&lt;p&gt;Instead, your job is to write code that &lt;em&gt;describes&lt;/em&gt; the perfect infrastructure environment, and let automation engines like the &lt;strong&gt;Deployment Controller&lt;/strong&gt; do the heavy lifting of maintaining, scaling, and repairing that environment 24/7.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Kubernetes Architecture: Behind the Scenes</title>
      <dc:creator>Aisalkyn Aidarova</dc:creator>
      <pubDate>Mon, 15 Jun 2026 06:26:17 +0000</pubDate>
      <link>https://dev.to/jumptotech/the-kubernetes-architecture-behind-the-scenes-1lm0</link>
      <guid>https://dev.to/jumptotech/the-kubernetes-architecture-behind-the-scenes-1lm0</guid>
      <description>&lt;p&gt;To truly master Kubernetes, a DevOps engineer must look past the &lt;code&gt;kubectl&lt;/code&gt; CLI and understand the internal components. When you run a command or deploy a manifest, a highly coordinated workflow occurs between the &lt;strong&gt;Control Plane&lt;/strong&gt; (the brains) and the &lt;strong&gt;Worker Nodes&lt;/strong&gt; (the muscle).&lt;/p&gt;

&lt;h3&gt;
  
  
  The Control Plane (Master Components)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;kube-apiserver:&lt;/strong&gt; The front door to the cluster. It exposes the Kubernetes API and is the only component that talks directly to the cluster storage. Every tool (&lt;code&gt;kubectl&lt;/code&gt;, CI/CD pipelines, internal controllers) communicates through it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;etcd:&lt;/strong&gt; A distributed, consistent key-value store. This is the &lt;strong&gt;single source of truth&lt;/strong&gt; for your cluster. It records the exact state of every single resource. &lt;em&gt;Pro-Tip: If you lose your etcd backups, you lose your cluster.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;kube-scheduler:&lt;/strong&gt; The matchmaker. It watches for newly created Pods that have no assigned node and selects the best Worker Node for them to run on based on resource availability, constraints, and affinity rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;kube-controller-manager:&lt;/strong&gt; The engine behind the controllers. It packages the actual control loops (Deployment controller, Node controller, Endpoints controller) that continuously regulate the state of the cluster.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Worker Nodes (Data Plane)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;kubelet:&lt;/strong&gt; The captain of the node. It runs on every machine in the cluster, ensuring that containers are running in a Pod and healthy according to the instructions given by the Control Plane.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;kube-proxy:&lt;/strong&gt; The network supervisor. It maintains network rules on nodes, allowing network communication to your Pods from inside or outside the cluster.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Container Runtime:&lt;/strong&gt; The software responsible for running containers (most commonly &lt;code&gt;containerd&lt;/code&gt; or &lt;code&gt;CRI-O&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Step-by-Step Lifecycle: What Happens When You Run &lt;code&gt;kubectl apply&lt;/code&gt;?
&lt;/h2&gt;

&lt;p&gt;To diagnose infrastructure issues effectively, a DevOps engineer must understand the exact chain of events that occurs when a manifest is deployed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Authentication &amp;amp; Authorization
&lt;/h3&gt;

&lt;p&gt;You execute &lt;code&gt;kubectl apply -f deployment.yaml&lt;/code&gt;. The request hits the &lt;code&gt;kube-apiserver&lt;/code&gt;. The API server validates your identity (Certificate, Token, or OIDC) and checks your Role-Based Access Control (&lt;strong&gt;RBAC&lt;/strong&gt;) permissions to ensure you are allowed to create deployments in that namespace.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Mutating &amp;amp; Validating Admission Control
&lt;/h3&gt;

&lt;p&gt;Before saving anything, the API server passes the YAML through &lt;strong&gt;Admission Controllers&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Mutating webhooks&lt;/em&gt; modify the request (e.g., automatically injecting sidecar containers for service meshes or default resource limits).&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Validating webhooks&lt;/em&gt; enforce compliance (e.g., rejecting the deployment if it runs as the &lt;code&gt;root&lt;/code&gt; user or uses an unapproved container registry).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Etcd Storage (The State Recorded)
&lt;/h3&gt;

&lt;p&gt;Once validated, the API server writes the desired state of the Deployment into &lt;code&gt;etcd&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: The Controller Manager Steps In
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;Deployment Controller&lt;/strong&gt; (inside the manager) notices a new Deployment object in &lt;code&gt;etcd&lt;/code&gt; via a watch stream. It realizes the Deployment demands a &lt;strong&gt;ReplicaSet&lt;/strong&gt;, but none exists yet. The controller instructs the API server to write a ReplicaSet object to &lt;code&gt;etcd&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;In turn, the &lt;strong&gt;ReplicaSet Controller&lt;/strong&gt; notices this new object, sees you requested &lt;code&gt;replicas: 3&lt;/code&gt;, and generates definitions for 3 individual &lt;strong&gt;Pods&lt;/strong&gt;, saving them to &lt;code&gt;etcd&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Scheduling the Pods
&lt;/h3&gt;

&lt;p&gt;At this stage, the 3 Pods exist in &lt;code&gt;etcd&lt;/code&gt; but have a status of &lt;code&gt;Pending&lt;/code&gt; because their &lt;code&gt;nodeName&lt;/code&gt; field is blank. The &lt;strong&gt;kube-scheduler&lt;/strong&gt; detects these unassigned pods, evaluates the nodes for available CPU/Memory, and selects optimal hosts. It updates the Pod definitions in &lt;code&gt;etcd&lt;/code&gt; with the assigned node names.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6: Node Execution via Kubelet
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;kubelet&lt;/strong&gt; running on the selected worker node watches the API server. It notices a Pod has been assigned to its specific node.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Kubelet calls the &lt;strong&gt;Container Runtime Interface (CRI)&lt;/strong&gt; to pull the container image and start the containers.&lt;/li&gt;
&lt;li&gt;It interacts with the &lt;strong&gt;Container Network Interface (CNI)&lt;/strong&gt; plugin to assign a unique cluster IP address to the Pod.&lt;/li&gt;
&lt;li&gt;It provisions storage via the &lt;strong&gt;Container Storage Interface (CSI)&lt;/strong&gt; if persistent volumes are required.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 7: Continuous Reconciliation
&lt;/h3&gt;

&lt;p&gt;Once running, the kubelet reports back to the API server that the pod status is &lt;code&gt;Running&lt;/code&gt;. The controller manager confirms that the &lt;em&gt;Current State (3 active pods)&lt;/em&gt; matches the &lt;em&gt;Desired State (3 requested pods)&lt;/em&gt;. The reconciliation loop is temporarily satisfied.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. What a DevOps Engineer &lt;em&gt;Must&lt;/em&gt; Know to Manage K8s Production
&lt;/h2&gt;

&lt;p&gt;Being a DevOps engineer requires moving past basic YAML configurations and managing day-to-day production realities.&lt;/p&gt;

&lt;h3&gt;
  
  
  A. Resource Management &amp;amp; Scheduling Controls
&lt;/h3&gt;

&lt;p&gt;Improperly configured pods can destabilize an entire cluster. You must always define resource boundaries.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Requests:&lt;/strong&gt; The absolute minimum CPU and Memory a container needs to boot. The Scheduler uses this number to place the Pod on a node.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limits:&lt;/strong&gt; The maximum threshold a container is allowed to consume. If a container breaks past its memory limit, the Linux kernel kills it with an &lt;strong&gt;OOMKilled&lt;/strong&gt; (Out Of Memory) error.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Affinity &amp;amp; Taints:&lt;/strong&gt; You must know how to dictate placement. Use &lt;strong&gt;Taints and Tolerations&lt;/strong&gt; to repel pods from specific nodes (e.g., keeping regular apps off expensive GPU nodes). Use &lt;strong&gt;Node Affinity&lt;/strong&gt; to attract pods to specific instances.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  B. Networking, Ingress, and Service Architecture
&lt;/h3&gt;

&lt;p&gt;Pods are ephemeral—they die and change IPs constantly. To expose applications reliably, you must master the layers of K8s networking:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ Internet ] ---&amp;gt; [ Ingress Controller ] ---&amp;gt; [ ClusterIP Service ] ---&amp;gt; [ Pod Replicas ]

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ClusterIP:&lt;/strong&gt; The default service type. It exposes the service on an internal cluster-only IP. Best for internal communication between microservices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NodePort:&lt;/strong&gt; Exposes the service on a static port across each Node's IP.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LoadBalancer:&lt;/strong&gt; Integrates with your cloud provider (AWS, GCP, Azure) to provision an enterprise-grade external cloud load balancer automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ingress Controllers (Nginx, Traefik, ALB):&lt;/strong&gt; Acting as an application-layer reverse proxy, an Ingress controller routes external HTTP/HTTPS traffic to internal services based on paths or domain names (e.g., &lt;code&gt;api.company.com/v1&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  C. Troubleshooting &amp;amp; Day-2 Operations
&lt;/h3&gt;

&lt;p&gt;When production breaks, you must know exactly where to look. Memorize this troubleshooting matrix:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;If a Pod Status is...&lt;/th&gt;
&lt;th&gt;It usually means...&lt;/th&gt;
&lt;th&gt;Your Next Command Should Be...&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;CrashLoopBackOff&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The application code is crashing immediately after startup (misconfiguration, missing env variables, database down).&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl logs &amp;lt;pod-name&amp;gt; --previous&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;ImagePullBackOff&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Typo in the image name, wrong tag, or the cluster doesn't have the permission/credentials to pull from a private registry.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl describe pod &amp;lt;pod-name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;Pending&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The scheduler cannot find a node that has enough free CPU or Memory to satisfy the Pod's &lt;strong&gt;Requests&lt;/strong&gt;.&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;kubectl describe pod &amp;lt;pod-name&amp;gt;&lt;/code&gt; (Check the events at the bottom)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;OOMKilled&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The container tried to consume more memory than its explicitly declared &lt;strong&gt;Limit&lt;/strong&gt;.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl describe pod &amp;lt;pod-name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
    </item>
    <item>
      <title>Kubernetes - From ECS 3-Tier Arch to Production Microservices</title>
      <dc:creator>Aisalkyn Aidarova</dc:creator>
      <pubDate>Mon, 08 Jun 2026 03:30:31 +0000</pubDate>
      <link>https://dev.to/jumptotech/kubernetes-from-ecs-3-tier-arch-to-production-microservices-4egh</link>
      <guid>https://dev.to/jumptotech/kubernetes-from-ecs-3-tier-arch-to-production-microservices-4egh</guid>
      <description>&lt;h1&gt;
  
  
  1. What We Built Already
&lt;/h1&gt;

&lt;p&gt;Students already created:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Frontend Container
        ↓
Backend Container
        ↓
RDS PostgreSQL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Infrastructure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Users
  ↓
ALB
  ↓
ECS Fargate
  ↓
Frontend Container
  ↓
Backend Container
  ↓
RDS PostgreSQL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Technologies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;ECS Fargate&lt;/li&gt;
&lt;li&gt;ECR&lt;/li&gt;
&lt;li&gt;RDS&lt;/li&gt;
&lt;li&gt;AWS Networking&lt;/li&gt;
&lt;li&gt;Security Groups&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is called:&lt;/p&gt;

&lt;h1&gt;
  
  
  Three-Tier Architecture
&lt;/h1&gt;




&lt;h1&gt;
  
  
  2. Problem with Traditional Backend
&lt;/h1&gt;

&lt;p&gt;Initially companies create:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;One frontend
One huge backend
One database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But when traffic grows:&lt;/p&gt;

&lt;p&gt;Problems appear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backend becomes huge&lt;/li&gt;
&lt;li&gt;One bug crashes entire backend&lt;/li&gt;
&lt;li&gt;Difficult deployments&lt;/li&gt;
&lt;li&gt;Scaling becomes expensive&lt;/li&gt;
&lt;li&gt;One team changes code → affects everyone&lt;/li&gt;
&lt;li&gt;Downtime during deployments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Netflix cannot keep:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 giant backend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead they split services.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. What Are Microservices?
&lt;/h1&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;backend-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We split into:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;auth-service
payment-service
course-service
student-service
notification-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each service:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;independent&lt;/li&gt;
&lt;li&gt;deploys separately&lt;/li&gt;
&lt;li&gt;scales separately&lt;/li&gt;
&lt;li&gt;owned by different teams&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is:&lt;/p&gt;

&lt;h1&gt;
  
  
  Microservice Architecture
&lt;/h1&gt;




&lt;h1&gt;
  
  
  4. What is Kubernetes?
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Kubernetes (K8s)
&lt;/h1&gt;

&lt;p&gt;Kubernetes is:&lt;/p&gt;

&lt;h1&gt;
  
  
  Container Orchestration Platform
&lt;/h1&gt;

&lt;p&gt;It manages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;containers&lt;/li&gt;
&lt;li&gt;scaling&lt;/li&gt;
&lt;li&gt;networking&lt;/li&gt;
&lt;li&gt;deployments&lt;/li&gt;
&lt;li&gt;recovery&lt;/li&gt;
&lt;li&gt;updates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Automatically.&lt;/p&gt;

&lt;p&gt;Created by:&lt;/p&gt;

&lt;h1&gt;
  
  
  Google
&lt;/h1&gt;

&lt;p&gt;Based on:&lt;/p&gt;

&lt;h1&gt;
  
  
  Borg system
&lt;/h1&gt;

&lt;p&gt;Now maintained by:&lt;/p&gt;

&lt;h1&gt;
  
  
  CNCF
&lt;/h1&gt;




&lt;h1&gt;
  
  
  5. Why Companies Use Kubernetes
&lt;/h1&gt;

&lt;p&gt;Companies need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;high availability&lt;/li&gt;
&lt;li&gt;scaling&lt;/li&gt;
&lt;li&gt;self healing&lt;/li&gt;
&lt;li&gt;automation&lt;/li&gt;
&lt;li&gt;rolling updates&lt;/li&gt;
&lt;li&gt;multi-cloud portability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kubernetes solves these problems.&lt;/p&gt;

&lt;p&gt;Used by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Netflix&lt;/li&gt;
&lt;li&gt;Uber&lt;/li&gt;
&lt;li&gt;Spotify&lt;/li&gt;
&lt;li&gt;Airbnb&lt;/li&gt;
&lt;li&gt;Amazon&lt;/li&gt;
&lt;li&gt;Banks&lt;/li&gt;
&lt;li&gt;Healthcare companies&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  6. ECS vs Kubernetes
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;ECS&lt;/th&gt;
&lt;th&gt;Kubernetes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AWS only&lt;/td&gt;
&lt;td&gt;Multi-cloud&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Easier&lt;/td&gt;
&lt;td&gt;More complex&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Faster to start&lt;/td&gt;
&lt;td&gt;Industry standard&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Less control&lt;/td&gt;
&lt;td&gt;Very flexible&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AWS manages much&lt;/td&gt;
&lt;td&gt;You manage more&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Simple learning curve&lt;/td&gt;
&lt;td&gt;Steeper learning curve&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  7. ECS Flow
&lt;/h1&gt;

&lt;p&gt;In ECS we did:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Docker Build
    ↓
Push to ECR
    ↓
Task Definition
    ↓
ECS Service
    ↓
Running Containers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AWS handled:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;orchestration&lt;/li&gt;
&lt;li&gt;scheduling&lt;/li&gt;
&lt;li&gt;networking&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  8. Kubernetes Flow
&lt;/h1&gt;

&lt;p&gt;In Kubernetes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Docker Build
      ↓
Push to ECR
      ↓
Deployment YAML
      ↓
Pods
      ↓
Services
      ↓
Ingress
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kubernetes uses YAML configuration.&lt;/p&gt;




&lt;h1&gt;
  
  
  9. Kubernetes Architecture
&lt;/h1&gt;

&lt;p&gt;Main components:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Control Plane
    ↓
Worker Nodes
    ↓
Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  10. Control Plane
&lt;/h1&gt;

&lt;p&gt;Control Plane = brain of Kubernetes&lt;/p&gt;

&lt;p&gt;Components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API Server&lt;/li&gt;
&lt;li&gt;Scheduler&lt;/li&gt;
&lt;li&gt;Controller Manager&lt;/li&gt;
&lt;li&gt;etcd&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;manage cluster&lt;/li&gt;
&lt;li&gt;schedule pods&lt;/li&gt;
&lt;li&gt;maintain desired state&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  11. Worker Nodes
&lt;/h1&gt;

&lt;p&gt;Worker Nodes run applications.&lt;/p&gt;

&lt;p&gt;Inside nodes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;kubelet&lt;/li&gt;
&lt;li&gt;container runtime&lt;/li&gt;
&lt;li&gt;kube-proxy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Worker nodes host:&lt;/p&gt;

&lt;h1&gt;
  
  
  Pods
&lt;/h1&gt;




&lt;h1&gt;
  
  
  12. What is a Pod?
&lt;/h1&gt;

&lt;p&gt;Pod = smallest Kubernetes object.&lt;/p&gt;

&lt;p&gt;A Pod contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one or more containers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod
 ├── frontend container
 └── helper container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Usually:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 container per pod&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  13. Why Pods?
&lt;/h1&gt;

&lt;p&gt;Pods provide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;shared networking&lt;/li&gt;
&lt;li&gt;shared storage&lt;/li&gt;
&lt;li&gt;lifecycle management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Containers inside pod communicate using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;localhost
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  14. Deployment
&lt;/h1&gt;

&lt;p&gt;Deployment manages pods.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Deployment
      ↓
ReplicaSet
      ↓
Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;scaling&lt;/li&gt;
&lt;li&gt;rolling updates&lt;/li&gt;
&lt;li&gt;self healing&lt;/li&gt;
&lt;li&gt;restarting failed pods&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  15. ReplicaSet
&lt;/h1&gt;

&lt;p&gt;ReplicaSet ensures:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;desired pods = running pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3 replicas requested
1 pod crashes
Kubernetes creates new pod automatically
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  16. Kubernetes Self-Healing
&lt;/h1&gt;

&lt;p&gt;If pod crashes:&lt;/p&gt;

&lt;p&gt;Kubernetes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;detects failure&lt;/li&gt;
&lt;li&gt;recreates pod&lt;/li&gt;
&lt;li&gt;restores application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Automatically.&lt;/p&gt;

&lt;p&gt;This is:&lt;/p&gt;

&lt;h1&gt;
  
  
  Self-Healing Infrastructure
&lt;/h1&gt;




&lt;h1&gt;
  
  
  17. Kubernetes Services
&lt;/h1&gt;

&lt;p&gt;Pods change IPs constantly.&lt;/p&gt;

&lt;p&gt;Service gives:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;stable endpoint&lt;/li&gt;
&lt;li&gt;internal communication&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ClusterIP&lt;/li&gt;
&lt;li&gt;NodePort&lt;/li&gt;
&lt;li&gt;LoadBalancer&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  18. ClusterIP
&lt;/h1&gt;

&lt;p&gt;Default service.&lt;/p&gt;

&lt;p&gt;Internal communication only.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;frontend → backend-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside cluster only.&lt;/p&gt;




&lt;h1&gt;
  
  
  19. NodePort
&lt;/h1&gt;

&lt;p&gt;Exposes service on node port.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NodeIP:30080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mostly for labs/testing.&lt;/p&gt;




&lt;h1&gt;
  
  
  20. LoadBalancer
&lt;/h1&gt;

&lt;p&gt;Creates cloud load balancer.&lt;/p&gt;

&lt;p&gt;In AWS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;creates ALB/NLB automatically&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Used for production.&lt;/p&gt;




&lt;h1&gt;
  
  
  21. Ingress
&lt;/h1&gt;

&lt;p&gt;Ingress controls:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP routing&lt;/li&gt;
&lt;li&gt;domains&lt;/li&gt;
&lt;li&gt;SSL&lt;/li&gt;
&lt;li&gt;path routing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/api → backend
/admin → admin-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ingress acts like:&lt;/p&gt;

&lt;h1&gt;
  
  
  Smart Traffic Router
&lt;/h1&gt;




&lt;h1&gt;
  
  
  22. Kubernetes Networking
&lt;/h1&gt;

&lt;p&gt;Each Pod gets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;its own IP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pods communicate directly.&lt;/p&gt;

&lt;p&gt;Kubernetes provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;internal DNS&lt;/li&gt;
&lt;li&gt;service discovery&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;backend-service.default.svc.cluster.local
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  23. Kubernetes Storage
&lt;/h1&gt;

&lt;p&gt;Containers are temporary.&lt;/p&gt;

&lt;p&gt;Databases need persistence.&lt;/p&gt;

&lt;p&gt;Kubernetes uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Persistent Volumes&lt;/li&gt;
&lt;li&gt;Persistent Volume Claims&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;BUT:&lt;/p&gt;

&lt;p&gt;Production companies usually keep databases outside cluster:&lt;/p&gt;

&lt;h1&gt;
  
  
  RDS
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Aurora
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Cloud SQL
&lt;/h1&gt;




&lt;h1&gt;
  
  
  24. Why RDS Outside Kubernetes?
&lt;/h1&gt;

&lt;p&gt;Reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;easier backups&lt;/li&gt;
&lt;li&gt;managed failover&lt;/li&gt;
&lt;li&gt;better stability&lt;/li&gt;
&lt;li&gt;managed scaling&lt;/li&gt;
&lt;li&gt;less operational risk&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Very common architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EKS + RDS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  25. Kubernetes Scaling
&lt;/h1&gt;

&lt;p&gt;Kubernetes can scale automatically.&lt;/p&gt;

&lt;p&gt;Using:&lt;/p&gt;

&lt;h1&gt;
  
  
  HPA
&lt;/h1&gt;

&lt;p&gt;Horizontal Pod Autoscaler.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CPU &amp;gt; 70%
Pods scale from 2 → 10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  26. Rolling Updates
&lt;/h1&gt;

&lt;p&gt;Without downtime.&lt;/p&gt;

&lt;p&gt;Old pods terminate gradually.&lt;/p&gt;

&lt;p&gt;New pods start gradually.&lt;/p&gt;

&lt;p&gt;Users never notice deployment.&lt;/p&gt;

&lt;p&gt;This is:&lt;/p&gt;

&lt;h1&gt;
  
  
  Zero Downtime Deployment
&lt;/h1&gt;




&lt;h1&gt;
  
  
  27. Production Kubernetes Architecture
&lt;/h1&gt;

&lt;p&gt;Production flow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Users
  ↓
CloudFront
  ↓
ALB
  ↓
Ingress
  ↓
Frontend Pods
  ↓
Backend Microservices
  ↓
RDS PostgreSQL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Monitoring:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Prometheus
Grafana
Loki
CloudWatch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CI/CD:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GitHub Actions
Jenkins
ArgoCD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  28. Kubernetes Security
&lt;/h1&gt;

&lt;p&gt;Production security:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RBAC&lt;/li&gt;
&lt;li&gt;IAM Roles&lt;/li&gt;
&lt;li&gt;Secrets&lt;/li&gt;
&lt;li&gt;Network Policies&lt;/li&gt;
&lt;li&gt;Private Subnets&lt;/li&gt;
&lt;li&gt;TLS/SSL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Never store passwords in code.&lt;/p&gt;

&lt;p&gt;Use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kubernetes Secrets&lt;/li&gt;
&lt;li&gt;AWS Secrets Manager&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  29. Kubernetes YAML
&lt;/h1&gt;

&lt;p&gt;Kubernetes uses YAML files.&lt;/p&gt;

&lt;p&gt;Example structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Main files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;deployment.yaml&lt;/li&gt;
&lt;li&gt;service.yaml&lt;/li&gt;
&lt;li&gt;ingress.yaml&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  30. Example Deployment YAML
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;apps/v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deployment&lt;/span&gt;

&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;frontend&lt;/span&gt;

&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;replicas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;

  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;frontend&lt;/span&gt;

  &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;frontend&lt;/span&gt;

    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;frontend&lt;/span&gt;
        &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;
        &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;containerPort&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  31. Important kubectl Commands
&lt;/h1&gt;

&lt;p&gt;Create resources:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; deployment.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;View pods:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;View services:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get svc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Describe pod:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl describe pod pod-name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;View logs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl logs pod-name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  32. EKS (Elastic Kubernetes Service)
&lt;/h1&gt;

&lt;p&gt;AWS Managed Kubernetes.&lt;/p&gt;

&lt;p&gt;AWS manages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Control Plane&lt;/li&gt;
&lt;li&gt;High availability&lt;/li&gt;
&lt;li&gt;etcd&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We manage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;worker nodes&lt;/li&gt;
&lt;li&gt;deployments&lt;/li&gt;
&lt;li&gt;pods&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  33. Why Companies Love EKS
&lt;/h1&gt;

&lt;p&gt;Benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kubernetes without managing masters&lt;/li&gt;
&lt;li&gt;AWS integration&lt;/li&gt;
&lt;li&gt;IAM integration&lt;/li&gt;
&lt;li&gt;ALB integration&lt;/li&gt;
&lt;li&gt;CloudWatch integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Very common in enterprise.&lt;/p&gt;




&lt;h1&gt;
  
  
  34. ECS vs EKS in Production
&lt;/h1&gt;

&lt;p&gt;ECS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;simpler&lt;/li&gt;
&lt;li&gt;faster&lt;/li&gt;
&lt;li&gt;easier for AWS-only environments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;EKS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;portable&lt;/li&gt;
&lt;li&gt;more powerful&lt;/li&gt;
&lt;li&gt;more enterprise demand&lt;/li&gt;
&lt;li&gt;industry standard&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  35. Real Production Example
&lt;/h1&gt;

&lt;p&gt;E-commerce company:&lt;/p&gt;

&lt;p&gt;Microservices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;auth-service&lt;/li&gt;
&lt;li&gt;order-service&lt;/li&gt;
&lt;li&gt;payment-service&lt;/li&gt;
&lt;li&gt;inventory-service&lt;/li&gt;
&lt;li&gt;notification-service&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each service:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;independent deployment&lt;/li&gt;
&lt;li&gt;independent scaling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Traffic spike:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;only payment-service scales&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Huge advantage.&lt;/p&gt;




&lt;h1&gt;
  
  
  36. Monitoring Kubernetes
&lt;/h1&gt;

&lt;p&gt;Observability stack:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Prometheus → metrics
Grafana → dashboards
Loki → logs
Alertmanager → alerts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your current stack already matches production patterns.&lt;/p&gt;




&lt;h1&gt;
  
  
  37. CI/CD Pipeline
&lt;/h1&gt;

&lt;p&gt;Modern deployment flow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer
   ↓
GitHub
   ↓
GitHub Actions
   ↓
Docker Build
   ↓
Push to ECR
   ↓
Deploy to EKS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  38. Interview Questions
&lt;/h1&gt;

&lt;p&gt;Common DevOps interview questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is Pod?&lt;/li&gt;
&lt;li&gt;Difference between ECS and EKS?&lt;/li&gt;
&lt;li&gt;What is Deployment?&lt;/li&gt;
&lt;li&gt;What is Service?&lt;/li&gt;
&lt;li&gt;What is Ingress?&lt;/li&gt;
&lt;li&gt;What is HPA?&lt;/li&gt;
&lt;li&gt;What happens when pod crashes?&lt;/li&gt;
&lt;li&gt;Difference between container and pod?&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  39. Career Impact
&lt;/h1&gt;

&lt;p&gt;Kubernetes skills are highly demanded.&lt;/p&gt;

&lt;p&gt;Roles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DevOps Engineer&lt;/li&gt;
&lt;li&gt;SRE&lt;/li&gt;
&lt;li&gt;Platform Engineer&lt;/li&gt;
&lt;li&gt;Cloud Engineer&lt;/li&gt;
&lt;li&gt;Kubernetes Administrator&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  40. Final Architecture Summary
&lt;/h1&gt;

&lt;p&gt;Current:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3-Tier ECS Architecture
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Future:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Production Kubernetes Microservices Platform
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Final production vision:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Users
 ↓
CloudFront
 ↓
ALB
 ↓
Ingress
 ↓
Frontend Pods
 ↓
Microservices
 ↓
RDS
 ↓
Monitoring Stack
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is real enterprise architecture used in production today.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>full agile by claude</title>
      <dc:creator>Aisalkyn Aidarova</dc:creator>
      <pubDate>Wed, 03 Jun 2026 06:09:24 +0000</pubDate>
      <link>https://dev.to/jumptotech/full-agile-by-claude-pka</link>
      <guid>https://dev.to/jumptotech/full-agile-by-claude-pka</guid>
      <description>&lt;p&gt;Here's the full Agile roadmap. Navigate using the tabs at the top — each view is designed for a different stakeholder:&lt;/p&gt;

&lt;p&gt;The five tabs give you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Overview&lt;/strong&gt; — epic cards at a glance, each clickable to generate deeper breakdowns&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Epics &amp;amp; features&lt;/strong&gt; — all 7 epics expandable, 28 features with priority ratings and descriptions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User stories&lt;/strong&gt; — filterable by epic, each with full acceptance criteria in testable format&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sprints&lt;/strong&gt; — all 9 sprints expandable with tasks, story points per task, tags, dependencies, and a checkable testing checklist&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Timeline&lt;/strong&gt; — visual Gantt-style bar chart showing cadence and point distribution across 18 weeks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A few architectural decisions baked into the prioritization worth calling out:&lt;/p&gt;

&lt;p&gt;Sprint 1 is deliberately a zero-feature sprint. Nothing ships to users — only foundation work. RLS policies, CI/CD, schema migrations, and fixing the broken UI states must land before any feature development begins, or you'll be retrofitting security onto live user data.&lt;/p&gt;

&lt;p&gt;Payments are Sprint 7 (not Sprint 1) by design. You need working auth, lecture delivery, and an admin panel before charging students. Trying to wire Stripe before those are stable creates refund complexity and support burden.&lt;/p&gt;

&lt;p&gt;The testing checklist for each sprint is written as executable statements, not vague phrases — each item should map to an actual test case or manual QA step in your project management tool.&lt;/p&gt;

&lt;p&gt;When you're ready to move forward, say the word and I can generate the actual code for any specific sprint, starting with Sprint 1's Supabase schema and RLS policies.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>agile from claude</title>
      <dc:creator>Aisalkyn Aidarova</dc:creator>
      <pubDate>Wed, 03 Jun 2026 05:59:50 +0000</pubDate>
      <link>https://dev.to/jumptotech/agile-from-claude-134g</link>
      <guid>https://dev.to/jumptotech/agile-from-claude-134g</guid>
      <description>&lt;p&gt;Now I have everything I need. Let me produce a comprehensive architectural analysis report as a rendered document.Now I have everything needed for a comprehensive analysis. Let me build this as an interactive report.Here's the full architectural assessment. Click each numbered section to expand it. A few things I want to call out as your senior architect:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The single most important insight:&lt;/strong&gt; What exists today is a marketing site with auth scaffolding, not an LMS. The UI shows placeholder states — "Loading projects…", an expired countdown, empty module pages — which means the real product build starts from sprint 1.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Three decisions that will define everything:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Adopt Supabase RLS before a single real student record enters the database.&lt;/strong&gt; Retrofitting row-level security after data exists is painful and risky. Design the policies in Sprint 1 alongside the schema.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use Mux for video, not S3 or YouTube.&lt;/strong&gt; 128 lectures × ~45 minutes is a serious media operation. You need adaptive bitrate, resume position tracking, and per-minute billing — Mux is purpose-built for exactly this use case.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Remove &lt;code&gt;/admin/projects/&lt;/code&gt; from the public nav immediately.&lt;/strong&gt; This is a security hygiene issue that should be fixed before any other feature work.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The 9-sprint roadmap is realistic&lt;/strong&gt; for a small team (2–3 engineers). Sprints 1–5 get you to a functional LMS that can onboard Batch 4. Sprints 6–9 harden it for scale and add community features.&lt;/p&gt;

&lt;p&gt;When you're ready, I can generate the code for any specific sprint or component — starting with the Supabase schema + RLS policies, the Next.js route group structure, or the Stripe enrollment flow.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>website plan</title>
      <dc:creator>Aisalkyn Aidarova</dc:creator>
      <pubDate>Wed, 03 Jun 2026 05:46:47 +0000</pubDate>
      <link>https://dev.to/jumptotech/website-plan-3cfc</link>
      <guid>https://dev.to/jumptotech/website-plan-3cfc</guid>
      <description>&lt;p&gt;Yes — absolutely.&lt;/p&gt;

&lt;p&gt;If you give Claude ONLY the URL of your website:&lt;br&gt;
&lt;a href="https://www.jump2techdevops.com?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;JumpToTech DevOps School&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Claude can already:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;analyze structure&lt;/li&gt;
&lt;li&gt;detect pages&lt;/li&gt;
&lt;li&gt;understand your business model&lt;/li&gt;
&lt;li&gt;identify missing functionality&lt;/li&gt;
&lt;li&gt;create Agile roadmap&lt;/li&gt;
&lt;li&gt;create sprint planning&lt;/li&gt;
&lt;li&gt;suggest architecture&lt;/li&gt;
&lt;li&gt;suggest UI improvements&lt;/li&gt;
&lt;li&gt;suggest database structure&lt;/li&gt;
&lt;li&gt;detect UX issues&lt;/li&gt;
&lt;li&gt;recommend enterprise workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your website already has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;landing page&lt;/li&gt;
&lt;li&gt;modules&lt;/li&gt;
&lt;li&gt;lectures&lt;/li&gt;
&lt;li&gt;student portal&lt;/li&gt;
&lt;li&gt;registration&lt;/li&gt;
&lt;li&gt;announcements&lt;/li&gt;
&lt;li&gt;discussions&lt;/li&gt;
&lt;li&gt;LMS concept&lt;/li&gt;
&lt;li&gt;admin logic idea&lt;/li&gt;
&lt;li&gt;DevOps branding&lt;/li&gt;
&lt;li&gt;course structure (&lt;a href="https://jump2techdevops.com/modules/monitoring/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;JumpToTech&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So Claude has enough context to become your:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product Manager&lt;/li&gt;
&lt;li&gt;Scrum Master&lt;/li&gt;
&lt;li&gt;Senior Architect&lt;/li&gt;
&lt;li&gt;Technical Lead&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;BUT…&lt;/p&gt;

&lt;p&gt;The MOST IMPORTANT thing:&lt;/p&gt;

&lt;p&gt;Do NOT ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Build my website.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead ask Claude like enterprise company.&lt;/p&gt;


&lt;h1&gt;
  
  
  THIS IS THE CORRECT WAY
&lt;/h1&gt;
&lt;h2&gt;
  
  
  STEP 1 — Ask Claude to Analyze
&lt;/h2&gt;

&lt;p&gt;Prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Analyze this website:
https://www.jump2techdevops.com

I am building a DevOps LMS platform using:
- Next.js
- Supabase
- Tailwind
- Vercel

Please analyze:
1. Current architecture
2. Missing functionality
3. UX problems
4. Scalability issues
5. Recommended folder structure
6. Database structure
7. Agile sprint roadmap
8. MVP vs future features
9. Enterprise best practices

Do NOT generate code yet.
Act like senior software architect.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the FIRST thing.&lt;/p&gt;




&lt;h1&gt;
  
  
  STEP 2 — Ask for Agile Plan
&lt;/h1&gt;

&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create Agile roadmap for this LMS project.

Split into:
- Epics
- Features
- User stories
- Sprints

Prioritize:
1. Stability
2. Authentication
3. Lecture system
4. Admin panel
5. Student experience
6. Payments
7. Scalability

Each sprint should:
- have goal
- tasks
- estimated complexity
- dependencies
- testing checklist
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now Claude becomes Scrum Master.&lt;/p&gt;




&lt;h1&gt;
  
  
  STEP 3 — Build Sprint-by-Sprint
&lt;/h1&gt;

&lt;p&gt;Then ONLY work on ONE sprint.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;We are now working ONLY on Sprint 1.

Goal:
Fix navigation and lecture system.

Current problems:
- lecture not clickable
- admin/modules redirects incorrectly
- preview broken

Please:
1. explain probable root cause
2. create debugging checklist
3. create implementation plan
4. generate only necessary code changes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;THIS is the key.&lt;/p&gt;




&lt;h1&gt;
  
  
  YOUR WEBSITE SHOULD BE BUILT LIKE THIS
&lt;/h1&gt;

&lt;h1&gt;
  
  
  EPIC 1 — FOUNDATION
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;routing&lt;/li&gt;
&lt;li&gt;navbar&lt;/li&gt;
&lt;li&gt;footer&lt;/li&gt;
&lt;li&gt;responsive layout&lt;/li&gt;
&lt;li&gt;dark/light mode&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  EPIC 2 — AUTHENTICATION
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;login&lt;/li&gt;
&lt;li&gt;register&lt;/li&gt;
&lt;li&gt;student/admin roles&lt;/li&gt;
&lt;li&gt;protected routes&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  EPIC 3 — LMS CORE
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;modules&lt;/li&gt;
&lt;li&gt;lectures&lt;/li&gt;
&lt;li&gt;markdown rendering&lt;/li&gt;
&lt;li&gt;progress tracking&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  EPIC 4 — ADMIN PANEL
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;create module&lt;/li&gt;
&lt;li&gt;edit lecture&lt;/li&gt;
&lt;li&gt;upload files&lt;/li&gt;
&lt;li&gt;analytics&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  EPIC 5 — STUDENT EXPERIENCE
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;dashboard&lt;/li&gt;
&lt;li&gt;certificates&lt;/li&gt;
&lt;li&gt;quizzes&lt;/li&gt;
&lt;li&gt;notes&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  EPIC 6 — BUSINESS
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Stripe&lt;/li&gt;
&lt;li&gt;subscriptions&lt;/li&gt;
&lt;li&gt;coupons&lt;/li&gt;
&lt;li&gt;invoices&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  EPIC 7 — DEVOPS
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;CI/CD&lt;/li&gt;
&lt;li&gt;ECS&lt;/li&gt;
&lt;li&gt;monitoring&lt;/li&gt;
&lt;li&gt;backups&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  MOST IMPORTANT FOR AI CODING
&lt;/h1&gt;

&lt;p&gt;You need these files FIRST:&lt;/p&gt;

&lt;h1&gt;
  
  
  PROJECT_DOCS/
&lt;/h1&gt;

&lt;p&gt;Inside:&lt;/p&gt;

&lt;h2&gt;
  
  
  architecture.md
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Frontend: Next.js
Backend: Supabase
Auth: Supabase Auth
Hosting: Vercel
Storage: Supabase Storage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  routes.md
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/
/modules
/modules/[slug]
/admin
/admin/modules
/admin/lectures
/dashboard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  database.md
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;users
modules
lectures
progress
payments
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  coding-rules.md
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Use TypeScript
- Use App Router
- Reusable components only
- No duplicated UI
- Mobile-first
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AI performs MUCH better with this.&lt;/p&gt;




&lt;h1&gt;
  
  
  BEST TOOL COMBINATION FOR YOU
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Claude
&lt;/h2&gt;

&lt;p&gt;Use for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;architecture&lt;/li&gt;
&lt;li&gt;debugging&lt;/li&gt;
&lt;li&gt;sprint planning&lt;/li&gt;
&lt;li&gt;backend logic&lt;/li&gt;
&lt;li&gt;technical decisions&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Antigravity / Lovable
&lt;/h2&gt;

&lt;p&gt;Use for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;frontend pages&lt;/li&gt;
&lt;li&gt;animations&lt;/li&gt;
&lt;li&gt;responsive design&lt;/li&gt;
&lt;li&gt;visual sections&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  VS Code + GitHub
&lt;/h2&gt;

&lt;p&gt;Use for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;version control&lt;/li&gt;
&lt;li&gt;rollback&lt;/li&gt;
&lt;li&gt;manual fixes&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  VERY IMPORTANT
&lt;/h1&gt;

&lt;p&gt;Right now your website is already at:&lt;br&gt;
“startup MVP stage”&lt;/p&gt;

&lt;p&gt;Meaning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;not prototype anymore&lt;/li&gt;
&lt;li&gt;now architecture matters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So random prompting becomes dangerous.&lt;/p&gt;

&lt;p&gt;Now you need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agile&lt;/li&gt;
&lt;li&gt;documentation&lt;/li&gt;
&lt;li&gt;Git discipline&lt;/li&gt;
&lt;li&gt;sprint isolation&lt;/li&gt;
&lt;li&gt;reusable components&lt;/li&gt;
&lt;li&gt;stable releases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Exactly like enterprise engineering.&lt;/p&gt;




&lt;h1&gt;
  
  
  MY RECOMMENDATION FOR YOUR NEXT 48 HOURS
&lt;/h1&gt;

&lt;p&gt;DO NOT add new features.&lt;/p&gt;

&lt;p&gt;ONLY:&lt;/p&gt;

&lt;h1&gt;
  
  
  Sprint Stabilization
&lt;/h1&gt;

&lt;p&gt;Fix:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;module navigation&lt;/li&gt;
&lt;li&gt;lecture clickability&lt;/li&gt;
&lt;li&gt;admin routing&lt;/li&gt;
&lt;li&gt;lecture rendering&lt;/li&gt;
&lt;li&gt;markdown support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then freeze system.&lt;/p&gt;

&lt;p&gt;Commit stable version.&lt;/p&gt;

&lt;p&gt;Only after that continue.&lt;/p&gt;

&lt;p&gt;That is exactly how real SaaS teams work.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
