<?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: 高棹大樹</title>
    <description>The latest articles on DEV Community by 高棹大樹 (@daitak).</description>
    <link>https://dev.to/daitak</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1365940%2F759655d2-01c9-4d21-9238-8dbeda42247e.jpeg</url>
      <title>DEV Community: 高棹大樹</title>
      <link>https://dev.to/daitak</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/daitak"/>
    <language>en</language>
    <item>
      <title>I Became a Community Builder, So Let Me Tell You About EKS!</title>
      <dc:creator>高棹大樹</dc:creator>
      <pubDate>Sat, 19 Apr 2025 13:53:45 +0000</pubDate>
      <link>https://dev.to/daitak/i-became-a-community-builder-so-let-me-tell-you-about-eks-1aka</link>
      <guid>https://dev.to/daitak/i-became-a-community-builder-so-let-me-tell-you-about-eks-1aka</guid>
      <description>&lt;p&gt;Hi there! I'm Daiki Takasao, an Expert Architect.&lt;/p&gt;

&lt;p&gt;To celebrate being selected as an &lt;strong&gt;AWS Community Builder&lt;/strong&gt;, I’d like to share why I'm such a big fan of &lt;strong&gt;Amazon EKS (Elastic Kubernetes Service)&lt;/strong&gt; and how it can make your infrastructure life much easier!&lt;/p&gt;




&lt;h2&gt;
  
  
  First Things First: Why EKS Is My Favorite AWS Service
&lt;/h2&gt;

&lt;p&gt;EKS is a &lt;strong&gt;managed Kubernetes service on AWS&lt;/strong&gt; that helps reduce the operational burden of containerized workloads.&lt;/p&gt;

&lt;p&gt;If you're thinking, "Kubernetes sounds complicated..." — don't worry. With EKS, many of the difficult parts are handled for you. As someone managing a microservices infrastructure for financial institutions, I can assure you it's a game-changer.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Kubernetes? A Quick Refresher
&lt;/h2&gt;

&lt;p&gt;Kubernetes (aka &lt;strong&gt;K8s&lt;/strong&gt;) is a &lt;strong&gt;container orchestration platform&lt;/strong&gt; that automates deployment, scaling, and management of containerized applications.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Actively maintained OSS project with &lt;strong&gt;a new version every 4 months&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Highly &lt;strong&gt;extensible&lt;/strong&gt; via CRDs (Custom Resource Definitions)&lt;/li&gt;
&lt;li&gt;Huge ecosystem backed by the cloud-native community&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl9qdhjbqmdffqh330zd1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl9qdhjbqmdffqh330zd1.png" alt="Kubernetes Overview" width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The architecture separates worker nodes from the control plane, which allows for scalable and modular cluster operations.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What Is EKS?
&lt;/h2&gt;

&lt;p&gt;EKS is AWS’s way of offering Kubernetes as a managed service. It helps users deploy and run K8s clusters &lt;strong&gt;without managing the control plane&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3w8sowf0u734jzawi8n8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3w8sowf0u734jzawi8n8.png" alt="EKS Architecture" width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;No need to manage the control plane — AWS handles it&lt;/li&gt;
&lt;li&gt;Built-in integration with IAM for access control&lt;/li&gt;
&lt;li&gt;Highly available and scalable by default&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ECS vs. EKS — Which Should You Use?
&lt;/h2&gt;

&lt;p&gt;AWS also offers ECS (Elastic Container Service), which is their own container orchestration solution. Here's how they compare:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fka9rmnaf6bwsp3vqixi8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fka9rmnaf6bwsp3vqixi8.png" alt="ECS vs EKS Comparison" width="800" height="301"&gt;&lt;/a&gt;&lt;/p&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;ECS&lt;/th&gt;
&lt;th&gt;EKS&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Feature Set&lt;/td&gt;
&lt;td&gt;Limited to AWS ecosystem&lt;/td&gt;
&lt;td&gt;Full Kubernetes + OSS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-Cloud Compatibility&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Operational Overhead&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Requires cluster upgrades&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;TL;DR: Choose &lt;strong&gt;EKS&lt;/strong&gt; if you want to leverage Kubernetes’ rich ecosystem or work in multi-cloud environments.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Challenges with EKS (and How Auto Mode Fixes Them)
&lt;/h2&gt;

&lt;p&gt;While EKS handles the control plane, users still have to manage parts of the infrastructure:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fca66xvk5nnlqopeakz5s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fca66xvk5nnlqopeakz5s.png" alt="EKS User Responsibilities1" width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwxasnb03noevwevfutkl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwxasnb03noevwevfutkl.png" alt="EKS User Responsibilities2" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Worker node provisioning and scaling&lt;/li&gt;
&lt;li&gt;Load balancer configuration (e.g., AWS LoadBalancer Controller)&lt;/li&gt;
&lt;li&gt;Persistent storage (e.g., EBS CSI Driver)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But now, there's a better way...&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Enter EKS Auto Mode
&lt;/h2&gt;

&lt;p&gt;EKS Auto Mode takes the convenience of EKS to the next level. With this, even &lt;strong&gt;worker nodes are managed by AWS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3vnrh5ha27jul3ufl6mg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3vnrh5ha27jul3ufl6mg.png" alt="EKS Auto Mode" width="800" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;No need to manage EC2-based nodes&lt;/li&gt;
&lt;li&gt;Built-in auto-scaling&lt;/li&gt;
&lt;li&gt;Seamless integration with load balancers and storage drivers&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why Learn Kubernetes?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🌍 A Career-Expanding Skill
&lt;/h3&gt;

&lt;p&gt;Kubernetes is cloud-agnostic — you can use it on AWS, Azure, Google Cloud, or even on-prem. It’s the &lt;strong&gt;foundation of cloud-native tech&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧠 Official Certifications Are Available
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Certification&lt;/th&gt;
&lt;th&gt;Focus&lt;/th&gt;
&lt;th&gt;Difficulty&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;KCNA&lt;/td&gt;
&lt;td&gt;Cloud-native basics&lt;/td&gt;
&lt;td&gt;⭐☆☆&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KCSA&lt;/td&gt;
&lt;td&gt;Security fundamentals&lt;/td&gt;
&lt;td&gt;⭐⭐☆&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CKAD&lt;/td&gt;
&lt;td&gt;App development&lt;/td&gt;
&lt;td&gt;⭐⭐☆&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CKA&lt;/td&gt;
&lt;td&gt;Cluster admin&lt;/td&gt;
&lt;td&gt;⭐⭐⭐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CKS&lt;/td&gt;
&lt;td&gt;Security specialist&lt;/td&gt;
&lt;td&gt;⭐⭐⭐&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fahmvepazl2g4m1y8vu13.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fahmvepazl2g4m1y8vu13.png" alt="k8s cert 1" width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl5q9huyoduw066e7qg41.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl5q9huyoduw066e7qg41.png" alt="k8s cert 2" width="800" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All these are offered by the &lt;strong&gt;Cloud Native Computing Foundation (CNCF)&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Taking the Exam: Tips from Experience
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Exams are online — make sure you have a clean, quiet space&lt;/li&gt;
&lt;li&gt;A webcam is required for remote proctoring&lt;/li&gt;
&lt;li&gt;I once forgot to book a meeting room and took the test in my bathroom… true story 😅&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Learning Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://training.linuxfoundation.org/training/introduction-to-kubernetes-lfs158-jp/" rel="noopener noreferrer"&gt;Intro to Kubernetes (Linux Foundation)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/" rel="noopener noreferrer"&gt;CKA Prep on Udemy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course/certified-kubernetes-application-developer/" rel="noopener noreferrer"&gt;CKAD Prep on Udemy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://killercoda.com/" rel="noopener noreferrer"&gt;Killercoda&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kodekloud.com/" rel="noopener noreferrer"&gt;KodeKloud&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hands-on practice is &lt;strong&gt;crucial&lt;/strong&gt; for passing the certification exams, especially for CKAD/CKA/CKS.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;AWS is great, but stepping outside to learn about Kubernetes and EKS can really &lt;strong&gt;broaden your perspective&lt;/strong&gt; as a cloud engineer.&lt;/p&gt;

&lt;p&gt;EKS isn't just another AWS service — it's your gateway into the cloud-native universe.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Testing Amazon Application Recovery Controller (ARC) on EKS</title>
      <dc:creator>高棹大樹</dc:creator>
      <pubDate>Fri, 21 Mar 2025 06:55:50 +0000</pubDate>
      <link>https://dev.to/daitak/testing-amazon-application-recovery-controller-arc-on-eks-59gc</link>
      <guid>https://dev.to/daitak/testing-amazon-application-recovery-controller-arc-on-eks-59gc</guid>
      <description>&lt;p&gt;Hello, My Name is Daiki!&lt;br&gt;
I'm a newbie in the AWS Community Builders program.&lt;/p&gt;

&lt;p&gt;A little while ago, my favorite service, EKS, started supporting Amazon Application Recovery Controller (ARC).&lt;/p&gt;

&lt;p&gt;Honestly, it's not a very flashy service, but it seems to be important for increasing the availability of applications running on EKS!&lt;/p&gt;

&lt;p&gt;As far as I can see, there are no blogs that deal with this function, so I decided to test it out this time!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/jp/about-aws/whats-new/2024/10/amazon-eks-application-recovery-controller-arc/" rel="noopener noreferrer"&gt;https://aws.amazon.com/jp/about-aws/whats-new/2024/10/amazon-eks-application-recovery-controller-arc/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What is Amazon Application Recovery Controller (ARC)?
&lt;/h2&gt;

&lt;p&gt;Amazon Application Recovery Controller (ARC) is a function that improves the resilience of applications running on AWS.&lt;/p&gt;

&lt;p&gt;Specifically, it is a function that minimizes the impact of failures on services by cutting off service communications to the region or AZ where a failure has occurred and continuing services only with normal ones.&lt;/p&gt;

&lt;p&gt;ARC has functions that operate at the AZ level and the region level, but the AZ-level ones have the following two functions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Zone shift&lt;/li&gt;
&lt;li&gt;Zone auto shift&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Zone shift is a function that allows the user to manually isolate the target AZ. The user can specify the time to isolate, and when that time has elapsed, the target AZ will be reintegrated into the service.&lt;/p&gt;

&lt;p&gt;Zone auto shift is a function that allows AWS to detect an AZ failure and automatically isolate the AZ.&lt;/p&gt;

&lt;p&gt;As of December 2024, the following AWS resources support APC.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Network Load Balancer (NLB)&lt;/li&gt;
&lt;li&gt;Application Load Balancer (ALB)&lt;/li&gt;
&lt;li&gt;Amazon Elastic Kubernetes Service (EKS)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Behavior of ARC in EKS
&lt;/h2&gt;

&lt;p&gt;This is a reprint from the official AWS documentation, but the following explains how ARC controls communication between services in an EKS cluster.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/eks/latest/userguide/zone-shift.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/eks/latest/userguide/zone-shift.html&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  1. Communication between services in an EKS cluster under normal circumstances
&lt;/h2&gt;

&lt;p&gt;Let's consider a case where the &lt;code&gt;Orders&lt;/code&gt; Service communicates with the &lt;code&gt;Producest&lt;/code&gt; Service.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;First, the Pod of the &lt;code&gt;Orders&lt;/code&gt; Service queries CoreDNS, the internal DNS of the EKS cluster, for name resolution of the &lt;code&gt;Producest&lt;/code&gt; Service. Since &lt;code&gt;10.100.78.3&lt;/code&gt; was registered as the IP address of the &lt;code&gt;Producest&lt;/code&gt; Service, this IP address is returned to the &lt;code&gt;Orders&lt;/code&gt; Pod.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When a Service is created, a corresponding EndpointSlice object is automatically created. The EndpointSlice object manages the IP address information of the Pod that is set as the distribution destination from the target Service. kube-proxy, a Kubernetes component running on the worker node, periodically monitors this EndpointSlice object, and if there are any changes to the contents of the EndpointSlice object, it changes the packet forwarding settings of iptables accordingly. The destination address of the packet from the &lt;code&gt;Orders&lt;/code&gt; Pod to the &lt;code&gt;Products&lt;/code&gt; Service is converted by iptables from the &lt;code&gt;Products&lt;/code&gt; Service's IP to one of the Pods associated with that Service.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The packet whose destination address has been converted to the &lt;code&gt;Products&lt;/code&gt; Pod's IP address in 1. 2. is sent via the ENI to the &lt;code&gt;Products&lt;/code&gt; Pod with that IP address running on another worker node.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhd298m7lysmyrlurlpfk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhd298m7lysmyrlurlpfk.png" alt="zs-traffic-flow-before-1.png" width="800" height="595"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2zlual1i7506nsipj5bt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2zlual1i7506nsipj5bt.png" alt="zs-traffic-flow-before-2.png" width="800" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For more information about the Kubernetes object EndpointSlice, please refer to the following document.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kubernetes.io/docs/concepts/services-networking/endpoint-slices/" rel="noopener noreferrer"&gt;https://kubernetes.io/docs/concepts/services-networking/endpoint-slices/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Communication between services in an EKS cluster when an ARC zone shift is activated
&lt;/h2&gt;

&lt;p&gt;Assuming that a failure occurs in AZ2 out of the three AZs, AZ1 to AZ3, the following explains how communication between services is controlled when an ARC zone shift is activated.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inside the EKS cluster, the EndpointSlice Controller runs to manage the EndpointSlice object. When an APC zone shift is triggered, this EndpointSlice Controller checks whether the information of the Pods running in the AZ where the failure occurred (AZ2 in this case) is registered in all EndpointSlice objects that have already been created, and if so, deletes the Pod information from the EndpointSlice object.&lt;/li&gt;
&lt;li&gt;The kube-proxy running on each worker node updates the iptables settings on the worker node based on the information in the changed EndpointSlice object. In other words, it deletes the packet forwarding settings for the Pods deleted in 1.&lt;/li&gt;
&lt;li&gt;When communicating with a Service (&lt;code&gt;Products&lt;/code&gt;Service in this case), the packet forwarding destination address is changed from the Service's IP address to the Pod's IP address based on the information in iptables, but since the information of the Pods in the failed AZ has been deleted from iptables in 2, it is not converted to the IP addresses of those Pods. This will prevent traffic from being routed to pods in the failed AZ.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp23nvhh0408acq4hsbnc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp23nvhh0408acq4hsbnc.png" alt="zs-traffic-flow-after-1.png" width="800" height="609"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiscf8bapqumnhzmp8q52.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiscf8bapqumnhzmp8q52.png" alt="zs-traffic-flow-after-2.png" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In other words, zone shifting for EKS clusters seems to be a mechanism that quickly blocks communication routing to Pods in the affected AZ by modifying the contents of the EndpointSlice object that is automatically created for each Service.&lt;/p&gt;

&lt;p&gt;I see, I kind of understand how it works!!&lt;/p&gt;
&lt;h2&gt;
  
  
  Try EKS ARC zone shift on a real machine!
&lt;/h2&gt;

&lt;p&gt;So far, we have learned about the internal operation of an EKS cluster when an ARC zone shift is activated, so from here on, we will verify it on a real machine!&lt;/p&gt;
&lt;h2&gt;
  
  
  Preparation 1. Prepare an EKS cluster with ARC zone shift enabled
&lt;/h2&gt;

&lt;p&gt;First, you need an EKS cluster with ARC zone shift enabled.&lt;/p&gt;

&lt;p&gt;Please build your EKS cluster by referring to the following official AWS documentation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/create-cluster.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/create-cluster.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can choose to enable ARC zone shift when creating an EKS cluster.&lt;/p&gt;

&lt;p&gt;The only option is the enable/disable radio button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkruar2kuoemdyd3t04yt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkruar2kuoemdyd3t04yt.png" alt="EKSクラスタ作成時にARC設定可能.png" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The ARC zone shift setting can be changed even after creating an EKS cluster.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2oy4sownj8fcyvmfv35d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2oy4sownj8fcyvmfv35d.png" alt="EKSクラスタ作成後にARC変更可能.png" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For this verification, we prepared an EKS cluster with worker nodes in two AZs (us-east-1a, us-east-1b). The range of IP addresses that can be assigned to subnets and pods is as follows.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;AZ&lt;/th&gt;
&lt;th&gt;CIDR range&lt;/th&gt;
&lt;th&gt;Range of IP addresses that may be assigned to Pods&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1a&lt;/td&gt;
&lt;td&gt;192.168.128.0/18&lt;/td&gt;
&lt;td&gt;192.168.128.4 - 192.168.191.254&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1b&lt;/td&gt;
&lt;td&gt;192.168.192.0/18&lt;/td&gt;
&lt;td&gt;192.168.192.4 - 192.168.255.254&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Of course, ARC zone shift is enabled!&lt;/p&gt;
&lt;h2&gt;
  
  
  Preparation 2. Deploy a sample app to verify ARC zone shift
&lt;/h2&gt;

&lt;p&gt;As a preparation for the next step, we will deploy a sample app to verify ARC zone shift.&lt;/p&gt;

&lt;p&gt;First, create an nginx Pod with Deployment.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: arc-sample-nginx
name: arc-sample-nginx
spec:
replicas: 2 #Create two pods
selector:
matchLabels:
app: arc-sample-nginx
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: arc-sample-nginx
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm: #Start each pod on a worker node in a different AZ.
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- arc-sample-nginx
topologyKey: kubernetes.io/zone
weight: 100
containers:
- image: nginx
name: nginx
ports:
- containerPort: 80
command: [ "sh", "-c", "
hostname -I &amp;gt; /usr/share/nginx/html/index.html;
nginx -g 'daemon off;';
"] #Set the Pod to return the IP address assigned to it as a response.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;replicas: 2&lt;/code&gt; will launch two Pods with the same content.&lt;/p&gt;

&lt;p&gt;Then, set the Pods to be distributed to worker nodes in different AZs using &lt;code&gt;podAntiAffinity&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;By setting &lt;code&gt;hostname -I &amp;gt; /usr/share/nginx/html/index.html;&lt;/code&gt; in the container command of the Pod to be created, the IP address assigned to the Pod will be returned to the client as an HTTP response.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[cloudshell-user@ip-10-134-48-42 ~]$ kubectl apply -f arc-sample-nginx.yaml
deployment.apps/arc-sample-nginx created
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The creation of the Deployment has been completed.&lt;/p&gt;

&lt;p&gt;The two Pods of the Deployment are also running normally. You can also see that those Pods are running on the subnets of each of the two AZs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[cloudshell-user@ip-10-134-48-42 ~]$ kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
arc-sample-nginx-59cb7bff9f-f8nnc 1/1 Running 0 15m 192.168.245.13 ip-192-168-228-161.ec2.internal &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;
arc-sample-nginx-59cb7bff9f-jsczh 1/1 Running 0 15m 192.168.191.4 ip-192-168-164-166.ec2.internal &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, create a Service to route communication to these two Pods.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: arc-sample-nginx
name: arc-sample-nginx
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: arc-sample-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[cloudshell-user@ip-10-134-48-42 ~]$ kubectl apply -f arc-sample-nginx-svc.yaml
service/arc-sample-nginx created
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The sample app is now ready.&lt;br&gt;
Let's run curl periodically on this sample app.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[cloudshell-user@ip-10-134-48-42 ~]$ kubectl run curl-client --image=curlimages/curl -it -- sh
If you don't see a command prompt, try pressing enter.
~ $ while true; do curl http://arc-sample-nginx; sleep 1; done
192.168.191.4
192.168.245.13
192.168.191.4
192.168.191.4
192.168.245.13
192.168.245.13
192.168.191.4
192.168.191.4
192.168.245.13
192.168.245.13
192.168.245.13
192.168.245.13
192.168.191.4
192.168.191.4
192.168.191.4
192.168.245.13
192.168.245.13
192.168.191.4
192.168.191.4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The IP addresses of the two Pods are returned, so we can see that the request is being routed to each Pod.&lt;/p&gt;

&lt;p&gt;In addition, an EndpointSlice object is also created, which is automatically created by creating the Service mentioned above. You can see that the IP addresses of the two Pods, 192.168.191.4 and 192.168.245.13, are registered as Endpoints.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[cloudshell-user@ip-10-134-48-42 ~]$ kubectl get endpointslices
NAME ADDRESSTYPE PORTS ENDPOINTS AGE
arc-sample-nginx-qxrgc IPv4 80 192.168.245.13,192.168.191.4 30m
kubernetes IPv4 443 192.168.174.91,192.168.229.161 8h
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Execute ARC zone shift!
&lt;/h2&gt;

&lt;p&gt;Preparation is complete, so let's finally execute ARC zone shift!&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Go to the zone shift screen
&lt;/h3&gt;

&lt;p&gt;First, go to the top page of the APC service.&lt;/p&gt;

&lt;p&gt;Then click "Zone-level migration" in the left pane.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flotz9tzaa2atdkxjw305.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flotz9tzaa2atdkxjw305.png" alt="スクリーンショット 2024-12-01 0.41.53.png" width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The AWS resources targeted for ARC are displayed at the bottom of the screen, so make sure that the EKS cluster you just built is displayed.&lt;br&gt;
If it is displayed without any problems, click the "Start Zone Shift" button at the top of the screen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4nf4aojyk2kur6byel3b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4nf4aojyk2kur6byel3b.png" alt="スクリーンショット 2024-12-01 0.44.11.png" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Execute zone shift!!
&lt;/h3&gt;

&lt;p&gt;Before executing the zone shift, you need to enter some settings.&lt;br&gt;
First, select the AZ you want to block.&lt;br&gt;
Next, select the EKS cluster you have prepared as the resource to be zone shifted.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmngm8b3qq1o14ppuuiwe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmngm8b3qq1o14ppuuiwe.png" alt="スクリーンショット 2024-12-01 0.56.42.png" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select the expiration date for the zone shift.&lt;/p&gt;

&lt;p&gt;When the expiration date has passed, the zone shift will be released and communication will be routed to the target AZ again.&lt;/p&gt;

&lt;p&gt;You can write anything in the comments field.&lt;/p&gt;

&lt;p&gt;Check the box to agree that the amount of resources available for processing will be reduced by the zone shift, and click the "Start" button to start the zone shift.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4o8l2qk59mlw7318zndk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4o8l2qk59mlw7318zndk.png" alt="スクリーンショット 2024-12-01 1.01.12.png" width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The target EKS cluster is displayed in the zone shift list.&lt;/p&gt;

&lt;p&gt;It seems that the zone shift has started!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv92t8sjj7gb0y11ju1x0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv92t8sjj7gb0y11ju1x0.png" alt="スクリーンショット 2024-12-01 1.07.14.png" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Is the zone shift really happening?
&lt;/h3&gt;

&lt;p&gt;Let's check if the zone has really been shifted.&lt;/p&gt;

&lt;p&gt;First, let's use the &lt;code&gt;kubectl get endpointslices&lt;/code&gt; command to see how the EndpointSlice object has changed.&lt;/p&gt;

&lt;p&gt;You can see that &lt;code&gt;192.168.191.4&lt;/code&gt; is no longer listed as an endpoint.&lt;/p&gt;

&lt;p&gt;Zone shift seems to be working!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[cloudshell-user@ip-10-134-48-42 ~]$ kubectl get endpointslices
NAME ADDRESSTYPE PORTS ENDPOINTS AGE
arc-sample-nginx-qxrgc IPv4 80 192.168.245.13 47m
kubernetes IPv4 443 192.168.174.91,192.168.229.161 8h
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, I tried to run curl on the sample app every second, and it was not routed to &lt;code&gt;192.168.191.4&lt;/code&gt;, but all were directed to &lt;code&gt;192.168.245.13&lt;/code&gt;.&lt;br&gt;
It seems to have been properly blocked, yay!!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[cloudshell-user@ip-10-134-48-42 ~]$ kubectl run curl-client --image=curlimages/curl -it -- sh
If you don't see a command prompt, try pressing enter.
~ $ while true; do curl http://arc-sample-nginx; sleep 1; done
192.168.245.13
192.168.245.13
192.168.245.13
192.168.245.13
192.168.245.13
192.168.245.13
192.168.245.13
192.168.245.13
192.168.245.13
192.168.245.13
192.168.245.13
192.168.245.13
192.168.245.13
192.168.245.13
192.168.245.13
192.168.245.13
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After 5 minutes, it was again assigned to &lt;code&gt;192.168.191.4&lt;/code&gt;.&lt;br&gt;
This is also according to the settings!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~ $ while true; do curl http://arc-sample-nginx; sleep 1; done
192.168.245.13
192.168.245.13
192.168.245.13
192.168.245.13
192.168.245.13
192.168.245.13
192.168.245.13
192.168.191.4
192.168.191.4
192.168.245.13
192.168.245.13
192.168.191.4
192.168.191.4
192.168.245.13
192.168.245.13
192.168.191.4
192.168.245.13
192.168.191.4
192.168.191.4
192.168.191.4
192.168.191.4
192.168.245.13
192.168.191.4
192.168.191.4
192.168.245.13
192.168.191.4
192.168.245.13
192.168.191.4
192.168.191.4
192.168.245.13
192.168.191.4
192.168.191.4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Just to be sure, I checked the EndpointSlice object, and &lt;code&gt;192.168.191.4&lt;/code&gt; was registered again.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[cloudshell-user@ip-10-134-48-42 ~]$ kubectl get endpointslices
NAME ADDRESSTYPE PORTS ENDPOINTS AGE
arc-sample-nginx-qxrgc IPv4 80 192.168.245.13,192.168.191.4 55m
kubernetes IPv4 443 192.168.174.91,192.168.229.161 9h
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The EKS line has also disappeared from the zone shift list in the ARC console.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg4wuoml7mfk61le5fwnz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg4wuoml7mfk61le5fwnz.png" alt="スクリーンショット 2024-12-01 1.19.14.png" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the cost of ARC zone shift?
&lt;/h2&gt;

&lt;p&gt;As for the cost, it seems that there is no additional charge for using zone shift.&lt;/p&gt;

&lt;p&gt;If that's the case, it's better to use this function!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/r53recovery/latest/dg/introduction-pricing-zonal-shift.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/r53recovery/latest/dg/introduction-pricing-zonal-shift.html&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Note: Karpenter and Cluster Autoscaler do not support ARC!
&lt;/h2&gt;

&lt;p&gt;Currently, Karpenter and Cluster Autoscaler, which are automatic scale-out SW for worker nodes, do not support ARC zone shift and zone auto shift.&lt;/p&gt;

&lt;p&gt;Therefore, please note that even if you activate zone shift for a certain AZ, Karpenter and Cluster Autoscaler may continue to launch worker nodes on that AZ!&lt;/p&gt;

&lt;p&gt;To restrict the launch of worker nodes to a specific AZ, you will need to reconfigure them individually, referring to the instructions on the following site.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.github.io/aws-eks-best-practices/karpenter/" rel="noopener noreferrer"&gt;https://aws.github.io/aws-eks-best-practices/karpenter/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.github.io/aws-eks-best-practices/cluster-autoscaling/" rel="noopener noreferrer"&gt;https://aws.github.io/aws-eks-best-practices/cluster-autoscaling/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the other hand, worker nodes launched by Karpenter and Cluster Autoscaler are also subject to ARC zone shift and zone auto shift for pods running on them, so that alone is effective.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;I have provided an overview of how APC zone shift works for this EKS cluster and performed a simple actual test.&lt;/p&gt;

&lt;p&gt;We were able to confirm that performing a zone shift cuts off communication to Pods in the target AZ.&lt;br&gt;
It appears that there are no additional charges, so we'd like to make effective use of it to increase system availability!!&lt;/p&gt;

&lt;p&gt;If I have time in the future, I'd like to verify zone auto shift, which automatically detects a failed AZ and cuts off communication.&lt;/p&gt;

&lt;p&gt;See you next time!&lt;/p&gt;

</description>
      <category>eks</category>
      <category>aws</category>
      <category>kubernetes</category>
    </item>
  </channel>
</rss>
