LoginSignup
0

More than 3 years have passed since last update.

posted at

updated at

EKS ManagedNodegroupとEKS on Fargate

AWS re:Invent 2019で新しく発表されたたくさんのサービスの中で個人的に一番興味深く、すぐ使いたいと思ったサービスは EKS on Fargate でした。re:Inventの直前に発表されたEKS Managed Nodegroup と Fargateを併用する形で試してみました。

まず注意点(2019.12月時点)

  1. eksctl versionは1.11以上。古いバージョンではFargateが作れない。
  2. Managed NodegroupはPublic Subnetに作る。Private Subnetには作れない。
  3. Managed Nodegroupには以下2つのPolicyが必須。   arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy   arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
  4. Managed NodegroupとFargateにデプロイする物の使い分けはKubernetesのNamespace。FargateのselectorにFargateにデプロイしたいnamespaceを書く。
  5. EKS on Fargateが使えるリージョンは、現時点で米国東部 (バージニア北部)、米国東部 (オハイオ)、欧州 (アイルランド)、およびアジアパシフィック (東京) 。
  6. EKS on FargateはALB/NLBが使えない。

作る

eksctl create cluster -f cluster.yaml

cluster.yamlは以下

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: [Cluster Name]
  region: ap-northeast-1

vpc:
  cidr: [CIDR]

managedNodeGroups:
  - name: [Nodegroup Name]
    instanceType: t3.medium
    minSize: 1
    maxSize: 3
    desiredCapacity: 1
    iam:
      attachPolicyARNs:
        - arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
        - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
        - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
      withAddonPolicies:
        externalDNS: true
        certManager: true
        imageBuilder: true
        ebs: true
        fsx: true
        efs: true
        appMesh: true
        xRay: true
        autoScaler: true
        albIngress: true
        cloudWatch: true

fargateProfiles:
  - name: default
    selectors:
      - namespace: default
      - namespace: kube-system
      - namespace: demo

現時点で判明された制限事項

  • EKS on FargateにClassic LBは使えない
  • EKS on Fargateにデプロイ時、1分くらい時間がかかる
  • Managed NodegroupにprivateNetworking: trueは使えない(Private Subnetに作れない)
  • Managed NodegroupもNodegroupも、eksctlによって自動で作られたNAT GatewayのEIPは変更出来ない (追記:変更する方法はある。あとで書く。)

現時点のベストプラクティス

  • 頻繁にアップデートがあるアプリケーションはManaged Nodegroupに作る
  • defaultなnamespaceはFargateに作る。
  • Classic LBを使いたい場合はManaged Nodegroupではなく普通のNodegroupを作る

参考

ref. Autoscaling EKS on Fargate with custom metrics
ref. https://github.com/weaveworks/eksctl/issues/1575
ref. https://github.com/weaveworks/eksctl/issues/1576
ref. 入門 EKS on Fargate

次の課題

  • Managed NodegroupのithAddonPoliciesでどれが必須か調べたい。
  • FargateProfilesを詳しく調べたい。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0