この記事は「イエソド アウトプット筋 トレーニング Advent Calendar 2020」12日目の記事です。
前職でEKS,現職でGKEを触ったので感じた違いとかを書いていこうかなと思います。
はじめに
EKSとGKEを両方触って感じたことは、KubernetesのマネージドサービスとしてはGKEの方が優秀だと思いました。
そう感じた理由を一つずつ書いていこうと思います。(※個人的感想です)
ノード管理について
まずEKSはKubernetesの1.14バージョン以前まではEKSのマネージドノードグループがありませんでした。
そのためEC2のAutoScalingグループに指定のタグをつけてどのクラスターのノードグループなのかという識別をさせる必要がありました。
こういった点から正直EKSを利用する際は、関連するコンポーネントの管理も含めIaC化をしないと管理が厳しいのではないかと感じました。(タグが一文字typoしただけでも動かなくなるとかあるので。。)
ちなみに私はterraformのEKSモジュールを使用して管理をしていました。
1.14以降はマネージドノードグループができたので、そういった事をする必要は基本なくなりました。
しかし現状EKSのマネージドノードグループはスポットインスタンスに対応していないため、スポットインスタンスをクラスター内に組み込みたい場合は前述の方法でAutoScalingグループを自分で作成して管理をするか、EKSのマネージドノードグループを設定した後に起動テンプレートのスポット購入オプションの%を変更するなどしないといけません。
その点GKEはコンソール上から簡単にノードプールを追加して、プリエンティブルノードへの変更もできるのでノードの管理が楽です。
ポッドのスケーリングとクラスターのスケーリングについて
EKSでHPA/VPAを利用するにはmetrics serverを自分でインストールをする手間が入ります。
GKEには標準でインストールされているためHPA/VPAのマニフェストを適用するだけで設定が完了します。
また、ノードのスケーリングについてもEKSではCluster Autoscalerを自分でインストールする必要がありますがGKEは標準でインストールされているのでコンソール上から有効にして数を指定するだけで設定が完了します。
EKSではこれらのコンポーネントのインストールに加えてIAMロールで権限を設定してあげる必要があるなど結構めんどくさいです。
ログについて
EKSではPodのログをCloudWatchなどのログビューアーに転送するためには、何かしらのログ転送デーモンをノード上に展開をする必要があります。
私はfluentd-cloudwatchをDaemonsetとして利用してCloudWatchに転送をしていました。
その点GKEでは特に設定をする事なくStackdriverにログが転送されてくれるため非常に楽です。
また、ログビューアーといった観点で可読性や検索性についてCloudWatchと比較してStack driverの方が優れていると感じますし、EKSを使用するにしてもログの転送先は多少手間をとってでも Stackdriverを使用した方がいいと思います。
アクセス管理について
社内ツールや開発環境など社外から見られたくないけど、インターネットに公開していて欲しいリソースは何かしらの認証をかけるのが一般的です。
BASIC認証やIPホワイトリストベースの認証など方法は色々ありますが、GKEではIdentity Aware Proxyという機能を利用すれば特定のサービスに対してGoogle認証をかけることが可能になります。
これによって認証管理の手間を削減することができる上、セキュリティリスクの低減に繋がります。
またGKEはWorkload Identityを利用することでKubernetesのサービスアカウントとGCPのサービスアカウントを簡単に紐づけることができるため、GCP上の別サービスへのアクセスコントロールを容易に行うことができます。
全体的に
EKSはKubernetesでやりたい事を実現するために複数のサービスを横断してそれぞれにタグ付けをしたり権限を設定する必要があり、管理が非常に煩雑になります。
またmetrics serverやCluster Autoscalerやログデーモンなど自分たちでマネージしなければいけないコンポーネントの数が増えるため管理工数が高くなります。
複数のサービスを横断することもあって、Webコンソール上でも欲しい情報に辿り着くまでの画面の遷移数がGKEと比較して多く手間がかかっていた印象があります。
その点GKEはGKEを立ち上げれば、全部入りといった印象でKubernetes内のアプリケーションやネットワークの管理に集中をすることができるので、個人的にはGKE最高!!って感じです。
雑な記事ではありますが、Kubernetesのマネージドサービスを比較検討されている方や、既にEKSやGKEを利用している方の参考に少しでもなれば嬉しいです。
来週にもまた何かネタを書くのでよろしくお願いします。