Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20250116_EKS Auto Modeがなくしたもの

20250116_EKS Auto Modeがなくしたもの

EKSの現状、Karpenterの仕組み、Auto Modeによる課題解決・制約について詳説。

Avatar for Yutaka Kozuka

Yutaka Kozuka

January 16, 2025

More Decks by Yutaka Kozuka

Other Decks in Technology

Transcript

  1. 自己紹介(Yutaka Kozuka) 簡単な肩書: • 2024 Japan AWS Jr. Champions •

    wakaru-blog.com(ブログ)運営 業務での取り組み: • 主に公共サービス系のお客様に対して、システム 設計・開発・運用を担当。 • 好きなAWSサービスはEKS 趣味: • 旅行、温泉、ライブ鑑賞(緑黄色社会や Vaundy)
  2. EKSの概要 Kubernetes: コンテナ化されたアプリケーションのデプロイ、スケーリング、 管理を自動化するオープンソースのオーケストレーション ツール。 複数のサーバーをクラスタとしてまとめ、効率的かつ安 定した運用を実現する。 Amazon EKS: Elastic

    Kubernetes Serviceの略称で、AWSが 提供するフルマネージドのKubernetesサービス。 Control Planeやオートスケーリングの管理などをマ ネージドで行う。 AZ AZ AZ Control Plane Control Plane Control Plane EKS AWS VPC Customer VPC Worker Node Worker Node Worker Node
  3. EKSの概要 Kubernetes: コンテナ化されたアプリケーションのデプロイ、スケーリング、 管理を自動化するオープンソースのオーケストレーション ツール。 複数のサーバーをクラスタとしてまとめ、効率的かつ安 定した運用を実現する。 Amazon EKS: Elastic

    Kubernetes Serviceの略称で、AWSが 提供するフルマネージドのKubernetesサービス。 Control Planeやオートスケーリングの管理などをマ ネージドで行う。 AZ AZ AZ Control Plane Control Plane Control Plane EKS AWS VPC Customer VPC Worker Node Worker Node Worker Node AWSの管理範囲
  4. Karpenterの概要(1/2) AZ AZ AZ Customer VPC Worker Node Worker Node

    Worker Node Cluster Autoscaler(CA): Kubernetesクラスターのノード数を自動で調整するツール で、スケジュール可能なPodが不足した場合にノードを追加 し、未使用のノードを削除する。 この際、CAは、Auto Scaling Groupを操作することで 上記を実現する Auto Scaling group AZ AZ AZ Customer VPC Worker Node Worker Node Worker Node Karpenter: AWSがOSSとして開発している、Kubernetesクラスターの ノード数とサイズを自動で調整するツールで、適切なサイズの ノードの追加・削除を行う。 この際、Karpenterは、Auto Scaling Groupを操作 せず、直接EC2をプロビジョニングする Karpenter CA
  5. Karpenterの概要(2/2) AZ AZ AZ Customer VPC Worker Node Worker Node

    Worker Node Karpenter: • Auto Scaling Groupを介さず、直接EC2をプロビジョニン グすることで、高速なスケーリングが可能 • ノードグループに縛られず、NodePools・NodeClassesに 定義したインスタンスを動的に選択する • スポットインスタンスを選択することも可能 NodeClasses: あらかじめ以下などを定義する • インスタンスファミリー(AL2023など) • EBS設定 • サブネットやSGなどのネットワーク NodePools: あらかじめ以下などを定義する • NodeClass • インスタンスタイプ • Nodeをプロビジョニングするポリシー Karpenter karpen ter Node Pools Node Classes
  6. 【re:Cap】EKS Auto Mode AZ AZ AZ Control Plane Control Plane

    Control Plane EKS AWS VPC Customer VPC Worker Node Worker Node Worker Node EKS Auto Mode: Kubernetesクラスタの管理をAWSにほとんど委託できる新機能。 これにより、ノード、ネットワーク、ストレージのプロビジョニングやス ケーリングを自動化し、クラスタインフラストラクチャのセットアップから 運用管理までを一元化する。 主に以下のコンポーネントが追加でAWSの管理となる。 • Karpenter(NodeClass・NodePoolはカスタマイズ可能) • ワーカーノードの管理 • CNIやEBSなどのアドオン • AWS Load Balancer Controller • IAMロール各種 Karpenter
  7. 【re:Cap】EKS Auto Mode AZ AZ AZ Control Plane Control Plane

    Control Plane EKS AWS VPC Customer VPC Worker Node Worker Node Worker Node EKS Auto Mode: Kubernetesクラスタの管理をAWSにほとんど委託できる新機能。 これにより、ノード、ネットワーク、ストレージのプロビジョニングやス ケーリングを自動化し、クラスタインフラストラクチャのセットアップから 運用管理までを一元化する。 主に以下のコンポーネントが追加でAWSの管理となる。 • Karpenter(NodeClass・NodePoolはカスタマイズ可能) • ワーカーノードの管理 • CNIやEBSなどのアドオン • AWS Load Balancer Controller • IAMロール各種 Karpenter AWSの管理範囲 (EC2の上のアプリ は管理範囲外)
  8. Auto Modeがなくしたもの Karpenter ワーカーノード 各種アドオン LBコントローラー IAMロール • Karpenterのインストール・プロビジョニングを全てAWSが管理する。 •

    ワーカーノードでKarpenter Podは管理されない。 • 従来は、Karpenter Podのインストール・プロビジョニングが必要だった。 • ワーカーノードのプロビジョニングを全てAWSが管理する。 • バージョンアップ・パッチ適応・イメージの変更が不要。 • ユーザーが作成するPodが存在しない場合、ワーカーノードが0台になる。 • VPC CNI、Kube-Proxy、Core-DNS、EBS CSI Driver、EKS Pod Identity Agentのインストール・プロビジョニングを全てAWSが管理する。 • 従来は、ユーザーのワーカーノード上で、各アドオンの管理が必要だった。 • ワーカーノードのリソースをユーザーのアプリケーションのみのために利用可能。 • Load Balancer Controllerのインストール・プロビジョニングを全てAWS が管理する。 • 従来は、ユーザーのワーカーノード上で、各アドオンの管理が必要だった。 • Ingressクラスを指定するだけですぐにALBの作成が可能。 • 上記に関するIAMロールを自動作成。 • NodeClass、NodePoolを管 理したい場合、追加でデプロイ 必要。 • ワーカーノードへのSSHが不可。 • OSに依存しない様なコンテナの 設計が必要。 • Linuxのみ対応。 • VPC CNIなどで調整可能な項 目(AWS_VPC_ENI_MTU など)などが、調整不可能。 • SG For Podの利用不可。 • サブネットのタグ付けは必要。 - 注意 詳細
  9. 実践EKS Auto Mode apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: demo-cluster

    region: ap-northeast-1 version: "1.31" iam: withOIDC: true autoModeConfig: enabled: true ①事前準備: create-cluster.yamlという名前で以下内容のファイルを 準備 eksctl create cluster -f create-cluster.yaml ③クラスター作成: 以下コマンドを実行するだけでクラスターが作成されます (作成された内容はCloudFormationから確認可能) # Install kubectl curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.31.0/2024-09- 12/bin/linux/amd64/kubectl chmod +x ./kubectl mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH # Install eksctl ARCH=amd64 PLATFORM=$(uname -s)_$ARCH curl -sLO "https://github.com/eksctl- io/eksctl/releases/latest/download/eksctl_$PLATFORM.tar.gz" tar -xzf eksctl_$PLATFORM.tar.gz -C /tmp sudo mv /tmp/eksctl /usr/local/bin ②事前準備: eksctlとkubectlをインストール (eksctlはv0.195.0以上とする必要がある) 詳しい詳細はこちらに記載しています:
  10. 参考記事 Learn about Amazon EKS Auto Mode managed instances -

    Amazon EKS Automate cluster infrastructure with EKS Auto Mode - Amazon EKS [アップデート] EKS で Auto Mode が追加されたので試してみた#AWSreInvent | DevelopersIO Change EKS Auto cluster settings - Amazon EKS