GKE vs AKS vs EKS
先日、EKSがGAになりました。業界トップのクラウドプロバイダーによるKubernetesマネージメントサービスを揃ってる状態になってます。
※EKSは日本リジョンが未だです。
今まで、下記の3つKubernetesマネージメントの情報をまとめます。
- Google Container Engine (GKE) by Google Cloud Platform
- Azure Container Service (AKS) by Microsoft Azure
- Elastic Container Service (EKS) by Amazon Web Services.
Update: 2018年7月9日
Onboarding
GKEとAKSは完成度が高いCLIを提供されています。Kubernetesクラスタの作成、バージョンアップ、Nodeの増減、削除が一つコマンドで対応できます。さらに、GKEは設定がUI画面で対応できます、AKSは最小限のUI機能を提供されています。
EKS は、プロセスには複数の手順があり、web コンソール以外の構成が必要です (Worker Nodeを kubectl 経由でクラスタに接続するなど)。オンデマンドでクラスターを作成および削除する場合は、これがちょっと物足りない感じ。weaveworks社から、提供されているeksctlツールがあります。かなりのEKSプロビジョニングプロセスを簡素化になります。
利用可能な Kubernetes バージョンに関しては、GKE 、AKS、EKS は、最新の安定バージョンである Kubernetes v 1.10 を提供しています。やはり、GKEのバージョンアップは他社より、反映が早いです。
バージョンアップの実行時、自分の場合は、GKE約〜2分、AKE約〜5分、EKSが約〜15分ぐらい。
Availability
本番運用を考える、最初可用性が気になります。
GKE は、マルチゾーンと地域の2つのモードで、クラスターの高可用性を提供します。マルチゾーンモードでは、マスターノードは1つしかありませんが、異なる領域にワーカーノードを持つことができます。地域モードでは、マスターノードもすべてのゾーンにまたがって、より良い HA を提供します。
AKSは、現時点マスターノードの高可用性はありません。ワーカーノードは、HA を提供するアベイラビリティーゾーンの一部です。今後の完全な HA に関して、Azure のロードマップがどのように見えるかは不明です。
また、EKS は、GKE の地域モードと非常によく似た、複数のアベイラビリティーゾーンにまたがる HA master および Worker Nodeを提供します。
Scalability
GKE、EKS、およびすべてのユーザーは、UI を使用するだけで、ノードを非常に簡単にスケールアップできるようになります。
GKE と EKS は、スケールアップ機能を提供します。同じノードまでスケールアップできるのは、GKE と EKS が異なる ‘ nodepools ‘ (または ‘ nodegroups ‘) を追加する機能を提供し、異なるマシンタイプがWorker Nodeに参加できるようにするとは異なります。nodepool の GKE の追加は1つのステッププロセスであるのに対し、EKS では、新しい nodepool をクラスタに手動で追加接続する必要があります。
また、GKE では、必要なワークロードに基づいてノードを上下にスケーリングするクラスターオートスケーラーを自動的に使用するようにクラスターを構成することもできます。これは、バッチジョブのような短命のプロセスを繰り返し実行する場合に最適です。EKS と、両方のワーカーノードが “自動スケーリング” グループとして実行されているにもかかわらず、自動スケーリングポリシーは Kubernetes に対応していないことに注意してください。クラスタオートスケーラーは、これらのプロバイダに対して手動で設定することもできます。
Add-ons
Kubernetes クラスタ性能を向上させるAdd-onsは多数あります。これらのプロバイダをより顕著区別することができます。
例えば、全てのプロバイダはGPU nodeを対応します。TensorFlow のような機械学習/画像処理フレームワークが最大限に活用することができます。
GKE は、ネットワーク・ポリシーがポッド間通信に対して定義されるようにするために、Calicoを提供します。
AKSでは、kube-routerを手動でインストールすることで、ネットワーク・ポリシーを提供します。
EKS も、Calicoを手動でセットアップすることができます。
ネットワークポリシーは、特にMulti-Tenant環境でプラットフォームを保護するために重要です。
その以外、多くなAdd-onsを開発されていますが、kubernetes-incubatorを探せば、面白いAdd-onsがあります。
Pricing
はやり、本番運用なら、コストも重要な選定ポイントになります。
GKEとAKSは、表示されているWorkder Nodeだけ、課金されています。つまり、Master Node、クラスタ管理、およびその他のサービスは無償で提供されます。
EKS は、Master Nodeにも課金対象になります、これは大きな違い。つまい、Master Node を含む、1時間あたり0.20 ドルで、EKS はかなり高価です。
8 node (1 core, 3.5gb) clusterの金額表
╔═══════════╦══════════════════════╦═══════════════════════════╗
║ ║ Short-term (100 hrs) ║ Long-term (3yrs committed)║
║ ║ /per month ║ /per month ║
╠═══════════╬══════════════════════╬═══════════════════════════╣
║ GKE ║ 40$ ║ 125$ ║
║ — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — -║
║ AKS ║ 60$ ║ 150$ ║
║ — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — -║
║ EKS ║ 50$ + 20$* (* master)║ 150$ + 144$* (* master) ║
╚═══════════╩══════════════════════╩═══════════════════════════╝
最後
大手クラウドプロバイダーが Kubernetesマネーマネジメントサービス の領域に参入によって、価格競争、良いサービスを提供します。ユーザーに対し、すごく良いことだと思います。これらのクラスタには、クラスタ管理、高可用性、スケーラビリティ、自動化、および他の多くのプラグインサービスが付属しています。Kubernetes EcoSystemは、このようなプラットフォーム同士が競合し、エンドユーザーに強固な価値を提供することで、大きなスピードで進化しています。
Kubernetesにお問い合わせがあれば、メールへ