2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

EKS ManagedNodegroupとEKS on Fargate

Last updated at Posted at 2019-12-25

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を詳しく調べたい。
2
0
0

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
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?