ユーザ用ツール

サイト用ツール


aws:eks:index.html

AWS EKSで、Kubernetes(k8s)を利用

AWS EKSとは



Amazon Elastic Kubernetes Service
Amazon EKSは、AWSでマネージド Kubernetes を実行するサービスです。

AWS EKSは、コントロールプレーンで、デプロイ・スケジューリング・スケーリングのオーケストレーション・アプリケーション管理を行います。
AWSのコントロールプレーンは、ECSかEKSを選ぶことができます。

EKSとECSの比較は AWSで使えるコンテナサービスの比較(ECS, EKS, Fargate) を参照してください。


EKSの注意点

  • Kubernetesのバージョンアップに追従する必要があります。
    • 3カ月に1回リリース
    • 保証は1年間のみ
  • クラスターのバージョンアップには、本番環境でも、ブルーグリーンデプロイメントと呼ばれるような、「現在の本番環境を維持したまま新しい本番環境を構築して、DNSの切り替えによって環境移行を行う」ようなオペレーションが必要になります。
Kubernetesクラスターのバージョンアップを行う際には同等の別環境を構築してバージョンアップの検証を行い、実際に本番環境のバージョンアップを行う際にはアップデートの失敗を考慮してブルーグリーンデプロイメントと呼ばれるような、「現在の本番環境を維持したまま新しい本番環境を構築して、DNSの切り替えによって環境移行を行う」ようなオペレーションが必要になります。

AWSでコンテナを支えるサービスについて ECS、EKS、Fargateの違いは? 第2回(最終回) | SunnyCloud
ticles/YKIlSRAAACYANEW9|AWSのコンテナについて初心者にも分かりやすく解説! | アンドエンジニア]]

EKS on Fargate

  • CloudWatch Container Insights未対応
  • DaemonSetも使えないです。
  • Priviledgedコンテナ未対応


EKSを選択する理由

  • Kubernetes(k8s)を利用できる。


Amazon EKSとは

Amazon EKSの仕組み

AWSの名称 k8sでの名称 AWSでの説明
コントロールプレーン Master フルマネージドとなり、管理する必要がない
ワーカーノード node 利用者が管理する部分


EKSの設定方法

方法1:AWS管理コンソール
方法2:aws cli
  • AWS標準CLIツール
方法3:eksctl
  • 公式のEKSクラスタ構築用CLIツール
  • AWS CLIとkubectlコマンドもインストールされている必要があります。
  • クラスタ構築時、eksctlはコマンド1つで関連するVPC/Subnet/SG/IAM,Workerノードなどを自動的に生成してくれる。


EKSクラスターの要素

VPCネットワーク
  • VPC
  • サブネット (パブリック×3、プライベート×3)
  • インターネットゲートウェイ
  • NATゲートウェイ
EKSコントロールプレーン
  • コントロールプレーン (または、狭義の「クラスター」)
  • コントロールプレーン用セキュリティグループ
  • コントロールプレーン用IAMロール
EKSワーカーノード
  • EC2起動テンプレート
  • EC2 Auto Scalingグループ
  • ワーカーノード用セキュリティグループ
  • ワーカーノード用IAMロール


EKSクラスターVPC

代表的なパターン
  • 2つ以上のAZ
  • パブリックサブネットは、ELBやNAT Gatewayを設置
  • プライベートサブネットは、ワーカーノードを配置

公式 Amazon EKS ワーカーノードの謎を解くクラスターネットワーク | Amazon Web Services ブログ

ポッドネットワーキング (CNI)

CNI(Container Network Interface)

EKSではAmazon VPC CNI plugin for KubernetesというネイティブなVPCを利用可能とするプラグインを用いることで、VPCネットワーク上と同じIPをPodに割り当てることなります。つまり、PodはVPC上のIPを利用して通信するため、Podの起動数がVPCで利用可能なIP数に依存するということになります。

https://cloudfish.hatenablog.com/entry/2019/12/09/224246


ワーカーノード

https://labs.gree.jp/blog/2020/01/20271/
ワーカーノード起動時にまとまった数の IP アドレスが確保されます。
起動時に確保する数(デフォルト)は、以下の表のようにインスタンスタイプごとに異なります

Pod の起動時は、確保されたセカンダリ IP アドレスが割り当てられて、Pod 間や VPC 内の他のサービスとネイティブで通信できるようになります。

インスタンスタイプ 起動時に確保される IP アドレス数
c5.large 20
c5.xlarge 30
c5.2xlarge 30
c5.4xlarge 60
m5.large 20
m5.xlarge 30


参考

EKSのトラブルシュート

kubectl logs pod名 Podのログを表示
kubectl describe pod Pod名 Podの詳細表示
kubectl describe node Node名 Nodeの詳細表示
journalctl -u kubelet kubeletが出力するログを確認
kubeletは、Kubernetes nodeサーバ上でデーモンとして動作しています。
Kubernetes nodeサーバ上で実行し、kubeletのログを表示


検討項目

EKSクラスターのバージョンアップ方法

インプレースアップグレードをやり、問題があったら、クラスタマイグレーションを行うのがよいです。

インプレースアップグレード(in-place upgrade)

  • 既存のクラスターをそのまま使う
  • ノードを順番に入れ替え
  • Rolling upgrade
  • コンソールからポチポチやればよいので、簡単。
  • 通常1つのバージョンアップしか対応していない。(1.14 → 1.15)

クラスタマイグレーション(cluster migration)

  • 既存のクラスターは使わず新しいクラスタを立てる
  • リソースを新クラスターにコピー
  • Blude/Green Deploy
  • バージョンアップの制限なくできる(1.14 → 1.20)

クラスターバージョンアップのメモ

Amazon EKS は、クラスターの更新時に Kubernetes アドオンを変更しません。
クラスターの更新後、更新後の新しいバージョンの Kubernetes 用に、アドオンを指定さえているバージョンに更新することをお勧めします。

  • Amazon VPC CNI プラグイン
  • DNS (CoreDNS)
  • KubeProxy


EKSコントロールプレーンとの通信方法

方法1 NAT Gateway経由

ノードグループがPrivateセグメントにある場合、Publicセグメントに配置したNAT Gateway経由でアクセスすることもできます。

方法2 APIサーバーエンドポイント(推奨)

EKSコントロールプレーンの設定で「APIサーバーエンドポイント」の「プライベートアクセス」を有効にするというものです。
プライベートアクセスを有効にすると、ノードグループが配置されるプライベートサブネット上に専用のネットワークインターフェイス (ENI) が作成され、
プライベートサブネットからAPIサーバーエンドポイントに対して直接通信が行えるようになります。

[アップデート] EKSでマネージドノードグループをデプロイする際のパブリックIPアドレス付与の挙動が変更されました | DevelopersIO


Ingress

クラスター内のServiceに対する外部からのアクセス(主にHTTP)を管理するAPIオブジェクトです。

AWS Load Balancer Controller(旧 AWS ALB Ingress Controller)

Kubernetes アドオン

Helm Kubernetes 用パッケージマネージャー
Metrics Server や AWS ALB Ingress Controller などを入れるために利用
AWS Load Balancer Controller
(AWS ALB Ingress Controller)
マニフェストによる ALB の管理や、Kubernetes Deployments リソースの Rolling Update 機能を利用する際に
ALB Target Group への Pod の登録・削除を行う
Metrics Server Kubernetes の 水平オートスケール(HPA)リソースを利用して、API サーバの Deployments の Pod 数をオートスケールするために利用しています。
HPA がオートスケールを判断するのに必要な指標(各 Pod の 割り当てCPU に対する使用率など)を収集します。
Cluster Autoscaler EKS ワーカーノードのオートスケールのため利用


参考

aws/eks/index.html.txt · 最終更新: 2021/07/26 01:33 by kurihara

ページ用ツール