EKSは「Kubernetesが動く」だけでは本番に乗りません。ノード選定、Pod単位のIAM、IP設計、アップグレード運用という4つの勘所を、最初から押さえておくと後戻りが激減します。本記事は実務で最初に踏む落とし穴を先回りで整理します。

01EKSは何を預かり、何を任せてくるのか

Amazon EKSは、Kubernetesの「コントロールプレーン」をAWSがマネージドで運用してくれるサービスです。APIサーバー、etcd、スケジューラといった管理コンポーネントはAWSが冗長化・パッチ適用まで面倒を見ます。一方で、実際にPodが動く「データプレーン」、つまりワーカーノード(EC2やFargate)は、原則として利用者側の責任範囲に残ります。ここの境界を最初に正しく認識しておくことが、EKS運用の出発点です。

よくある誤解が「EKSにすればKubernetesの運用から解放される」というものです。実際には、ノードのOS更新、アドオン(VPC CNI、CoreDNS、kube-proxy)のバージョン管理、ワークロードのアップグレード追従など、利用者が手を動かす領域は相応に残ります。マネージドなのはあくまで管理層であり、下回りとアプリの整合は自分たちで守る、という前提で設計してください。

コントロールプレーン(AWSが運用・マネージド) API サーバー etcd スケジューラ Controller データプレーン(利用者の責任範囲) マネージド ノードグループ Fargate (サーバーレス) Karpenter (動的プロビジョニング)
図:EKSの責任分界。上のコントロールプレーンはAWSが運用し、下のデータプレーン(ノード)は利用者が選定・管理する。
現場のコツ:「EKS = フルマネージド」と説明資料に書くと、後で運用工数の見積もりが崩れます。コントロールプレーンはマネージド、ノードとアドオンとアプリは自分たちで守る、と分けて伝えるのが安全です。

02ノードをどう供給するか — 3つの選択肢

データプレーンの供給方式は大きく3つです。それぞれ得意領域が異なり、1つのクラスタで併用することも珍しくありません。

実務では「システム系Pod(CoreDNSやコントローラ)は小さなマネージドノードグループに、アプリのワークロードはKarpenterに」という併用が現実的な落とし所になることが多いです。AWSのベストプラクティスガイドも、静的なワークロードにはマネージドノードグループ、スパイキーで多様な要件にはKarpenterを推奨しています。ノード単位のインスタンスタイプ選定はEC2インスタンスタイプ選定も併せて確認してください。

03ノード選定の判断軸

迷ったときのために、判断軸を決定表に落とします。あくまで出発点であり、実際には併用が前提です。

条件 マネージドNG Fargate Karpenter 負荷が静的・一定 スパイク大・多様な要件 OS管理を減らしたい DaemonSet常駐が必須 ×
図:ノード供給方式の判断表。◎=第一候補、○=可、△=条件付き、×=不可。実際は併用が前提。

Fargateは「DaemonSetが動かない」点が実務で効いてきます。ログ収集エージェントやセキュリティエージェントをDaemonSetで配る前提の運用設計だと、Fargateだけでは組めません。この違いはFargate と EC2 起動タイプでも掘り下げています。ECSとの棲み分けから検討する場合はECS と EKS の選定を参照してください。

04Pod単位でIAM権限を渡す — IRSAとEKS Pod Identity

EKSでアプリがAWS APIを叩く際、ノードのIAMロールを共用すると「同じノードのPodが互いの権限を使えてしまう」最小権限違反に陥ります。これを避けるのが、Pod(正確にはService Account)単位でIAMロールを紐づける仕組みです。方式は2つあります。

AWS公式は、Pod IdentityをIRSAより「シンプルな方式」と位置づけています。OIDCプロバイダの管理が不要で、クラスタ横断でロールを使い回せるため、新規構築なら第一候補として検討する価値があります。ただし現時点でFargate上のPodでは使えないなどの制約があるため、ノード構成と合わせて確認してください(対応範囲はバージョン依存なので公式で最新を確認)。IAM設計全体の考え方はIAM最小権限の現実も参考になります。

現場のコツ:Pod IdentityはFargate上のPodでは利用できません(AWS公式明記)。「アプリはFargateで、AWS APIアクセスはPod単位のIAMで」という設計をそのまま組むと詰まります。この場合はIRSAを使うか、ノード方式を見直すかの判断が要ります。

05外部公開の要 — AWS Load Balancer Controller

EKS上のワークロードをALB/NLBで公開する定番が、AWS Load Balancer Controllerです。KubernetesのIngressリソースを作ると、コントローラがALBをプロビジョニングし、ターゲットグループとリスナーを構成し、PodのIPまたはノードをターゲットとして登録します。Service(type: LoadBalancer)からNLBを作ることもできます。

導入時によく詰まるのがサブネットのタグ付けです。コントローラはVPCサブネットのタグを見てALB配置先を自動検出します。パブリック用・プライベート用の適切なタグ(kubernetes.io/role/elbなど)が付いていないと、ALBが作られない、あるいは意図しないサブネットに出てしまいます。もう一点、コントローラ自身がAWS APIを叩くため、前述のIRSAまたはPod Identityで専用のIAM権限を渡す必要があります。ここを飛ばすと権限エラーで動きません。

現場のコツ:ターゲットタイプをip(Pod直結)にするかinstance(ノード経由)にするかで、通信経路とSecurity Group設計が変わります。ipモードはPodへ直接ルーティングでき効率的ですが、VPC CNIでPodがVPCのIPを持つ前提です。次章のIP設計と直結する論点です。

06最大の落とし穴 — VPC CNIとIPアドレス枯渇

EKSの標準ネットワークであるAmazon VPC CNIは、各PodにVPCのCIDRからIPアドレスを1つ割り当てます。PodがVPCの一級市民になり通信がシンプルになる反面、Podを大量に動かすとVPC内のIPv4アドレスをあっという間に食い潰します。これはEKS導入で最も多く踏まれる設計上の落とし穴です。

特に、既存のオンプレ連携で小さめのサブネットしか切れない、あるいは他システムとIP空間を共有している環境では、Podの増加でInsufficientFreeAddressesInSubnetのようなエラーに直面します。対策は主に次の3つです。

いずれも後付けで切り替えるのは手戻りが大きいため、VPC・サブネットのサイジングは「成長を見込んで」最初に大きめに取るのが鉄則です。数値上限(プレフィックスのIP数やインスタンスタイプ別の割当上限)はバージョン・インスタンス依存なので、公式のIP最適化ガイドで最新を確認してください。NAT経由の外向き通信コストが絡む場合はNAT Gateway コスト設計も併読を。

現場のコツ:PoCで小さいサブネット(/24など)を切ったまま本番に流用すると、負荷試験で一気にIP枯渇します。最初にプレフィックス委任を有効化し、Pod用にセカンダリCIDRを確保しておくと、後の増設で慌てずに済みます。

07止まらない宿題 — アップグレード運用

Kubernetesは年に複数回マイナーバージョンが上がり、EKSもこれに追従します。EKSでは各マイナーバージョンが標準サポートで一定期間、その後は追加費用のかかる延長サポートに移行します(サポート期間の月数はバージョン依存なので公式で最新を確認)。放置すると延長サポートのコストが発生し、さらに期間を過ぎると自動アップグレードの対象になります。「上げない」という選択肢は事実上ありません。

ここで重要な落とし穴が、コントロールプレーンを上げてもノードは自動では上がらない点です。マネージドノードグループのEC2インスタンスは、コントロールプレーン更新に連動して自動更新されません。利用者がノードグループの更新を明示的に実行する必要があります。コントロールプレーンとkubeletのバージョン差(スキュー)には許容範囲があるため、順序としては「コントロールプレーン → ノード → アドオン → ワークロード」の流れで、差が開きすぎないうちに進めます。

もう一つ、非推奨APIの廃止が地雷です。マイナーバージョンアップでKubernetes APIが削除されると、それを使うマニフェストやコントローラが動かなくなります。アップグレード前に廃止APIの利用を洗い出し、マニフェストを追従させておくことが必須です。なお、インプレースアップグレードは完了後の一定期間内であれば前のマイナーバージョンへロールバックできる仕組みもあります(条件・期間は公式で最新を確認)。CI/CDでマニフェストとアドオンのバージョンを管理する運用はIaC CI/CDパイプラインが参考になります。

現場のコツ:アップグレードは「クラスタを上げる作業」ではなく「廃止APIとアドオン互換を先に潰す作業」です。事前チェックに8割の工数を割き、本番は検証環境で通した手順をそのままなぞる、という段取りが事故を減らします。

08入門者が最初に踏みやすい落とし穴まとめ

ここまでの内容を、着手前チェックリストとして整理します。

Kubernetesの運用に不慣れな組織でも、この6点を最初に押さえるだけで、本番移行後のトラブルは大きく減ります。マルチアカウント環境でのクラスタ配置やガードレールについてはマルチアカウント統制も併せてご検討ください。

まとめ

EKSは強力なマネージドKubernetesですが、「動かす」と「本番で運用する」の間には、ノード選定・Pod単位IAM・IP設計・アップグレードという4つの勘所があります。いずれも後付けが効きにくく、最初の設計で決まってしまう論点です。逆に言えば、着手前にこの4点を押さえておけば、EKSの運用は十分に見通しの立つものになります。EMWでは、こうした構成レビューから本番移行の伴走まで実務目線で支援しています。ご相談はお問い合わせから、導入の実例は導入事例をご覧ください。

参考(一次情報)

EKSの構成レビューや本番移行の伴走が必要でしたら、お問い合わせください。設計の勘所を一緒に固めます。

相談する
← ブログ一覧へ戻る