こんにちは、クラウドエース編集部です。インターネット上のサービスは、24 時間 365 日いつでも利用できることが期待されています。 そのためには、サービスを停止せずに、頻繁にアップデートを行っていくことが必要となります。そこで注目されているのが Kubernetes(クバネティス/クバネテス)です。 ここでは、Kubernetes の概要と主要なパブリッククラウド環境で利用できるマネージド Kubernetes サービスをご紹介します。目次 ToggleKubernetes とはKubernetes を使用するメリットマネージド Kubernetes を利用するメリット三大マネージド Kubernetes サービス比較まとめKubernetes とはKubernetes とは、多数のサーバーで構成される大規模システムにおけるコンテナの運用管理と自動化の仕組みです。 その仕組みを「コンテナオーケストレーション」と呼びます。Google が自社で使っていた Kubernetes を 2014 年にオープンソース化しました。つまり Kubernetes は、Google の大規模システムの実績から生まれたコンテナオーケストレーションのツールであり、現在はオープンソースのコミュニティで育てられています。現在 Kubernetes は、コンテナオーケストレーションのデファクトスタンダードとなっています。 また、Kubernetes はオンプレミスでもクラウドでも利用することができます。コンテナ化とはコンテナ化とは、複数のアプリケーションでシステムリソースを共有しながら、アプリケーション稼働環境を分離させるための仮想化技術の一つです。コンテナ化以前の仮想化技術では、複数 OS で物理サーバーを共有し、仮想マシン(VM: Virtual Machine)毎にアプリケーションの稼働環境を分離します。(図中央 Virtualized Deployment の赤枠が仮想マシン) 一方コンテナ化では、物理サーバーと OS を共有し、「コンテナ」でアプリケーション環境を分離します。(図右 Container Deployment の赤枠がコンテナ) 仮想化技術の変遷 ( Kubernetes 「Kubermetesとは何か? より参照)コンテナ化は仮想化とよく似ていますが、コンテナでは OS を共有できるため、仮想化よりも軽量化、高速化のメリットがあります。DockerとはDocker とは、アプリケーションのコンテナ化を実装するソフトウェアです。 Docker 社が開発し、2013 年にオープンソースとして公開されました。Docker はクラウドプラットフォームでも広く採用されており、コンテナ化ソフトウェアのデファクトスタンダードとなっています。Docker はアプリケーションのコンテナ化する仕組み、Kubernetes はそのコンテナを有効に運用管理する仕組みであり、両方を組み合わせて利用することができます。Kubernetes を使用するメリットここでは、コンテナオーケストレーションとして Kubernetes を使用するメリットを説明します。多数のコンテナを管理できるアプリケーションの増加に伴いコンテナが増加すると、構成や設定変更、スケーリングなどのコンテナ管理は煩雑になってきます。 コンテナオーケストレーションの Kubernetes を使うことで、コンテナ管理を一元化し自動化がすることができ、手動運用では困難な多数のコンテナも管理できるようになります。開発やアプリケーションのリリースが高速化するKubernetes では、OS やミドルウェアを複数のアプリケーションが格納されたコンテナで共有していることから、従来の仮想マシンよりも高速にアプリケーションの起動ができます。またアプリケーションのデプロイの際のコンテナ作成・削除作業を自動化できるため、頻繁なアプリケーションの変更や本番リリースにも対応できます。継続稼働が可能になるコンテナへのトラフィックが多い場合に負荷分散を行い、トラフィックを自動で振り分けることができます。 これにより、アクセスが集中している際にも、安定したデプロイが可能となります。さらに Kubernetes の自己修復機能により、コンテナに障害が発生しても、そのコンテナを自動再起動させたり、別の場所でコンテナを起動させて、処理を継続させることもできます。マネージド Kubernetes を利用するメリットここでは「マネージド」のサービスとして の Kubernetes を利用するメリットに着目します。サーバーの管理運用をクラウド事業者に任せられるマネージドとは、運用管理を他社に任せられるものを言います。 ツールを買って自社で運用管理しながら使うのではなく、ツールと運用管理サービスも買って(ツール提供者にアウトソースして)、自社はツールを「使うだけ」に専念できるタイプのサービスです。煩雑なコンテナの運用管理については、コンテナオーケストレーションである Kubernetes が自動化してくれます。 しかし、Kubernetes そのものが稼働するサーバーのバージョンアップセキュリティアップデート死活監視などについての運用管理は必要です。Kubernetes サーバーの運用管理部分もマネージドサービスとして他社に任せることで、貴重な自社要員をより戦略的な領域へと割り当てることができます。サーバーインフラを持つ必要がないマネージド Kubernetes を利用する場合、自社でサーバーインフラを持つ必要がありません。 これはマネージドのメリットというよりもクラウドのメリットですが、マネージド Kubernetes を使う場合はクラウドサービスとして利用することになるため、必然的にこのメリットも享受できることになります。三大マネージド Kubernetes サービス比較ここでは、主要パブリッククラウド事業者が提供するマネージド Kubernetes サービスAmazon Web Services (AWS) の Amazon Elastic Kubernetes Service (EKS)Microsoft の Azure Kubernetes Service (AKS)Google の Google Kubernetes Engine (GKE)を取り上げて、各社のマネージド Kubernets サービスの違いを比較してみましょう。ここで、マネージド Kubernetes サービス比較の前提として、簡単にKubernetes の構成を確認しておきましょう。 Kubernetes ではコントロールプレーン:ワーカーノードを制御する司令塔複数のワーカーノード:アプリケーションが稼働する場所から構成されるクラスターを作ります。 マネージド Kubernetes では、クラウド事業者がコントロールプレーンを管理します。利用者からはワーカーノードだけが見えており、コントロールプレーンを制御することはできません。Amazon Web Services|Amazon Elastic Kubernetes Service(EKS)EKS(Elastic Kubernetes Service)は、AWS(Amazon Web Servic)の マネージド Kubernetes です。EKS では、コンテナを稼働させるサーバーとして、EC2、Fargateが選択できます。AWSユーザーにとって、AWS上で Kubernetes のコンテナオーケストレーションが利用できる上に、既存のAWSサービス(IAM、KMSなど)と統合できる点がメリットと言えます。EKS のコストEKS クラスター毎に 0.10 USD / 時間 + EKS ワーカーノード(EC2またはFargate)の利用料金*その他関連サービス:S3、KMS(暗号化)、ECR(コンテナレジストリ)などを利用する場合は利用料金がかかります。[3]Microsoft|Azure Kubernetes Service(AKS)AKS(Azure Kubernetes Service)は、Microsoft の マネージド Kubermetes です。AKS では、Microsoft 365などの Microsoft 基盤を Azure Active Directory でそのまま引き継ぐことができ、Windows Server コンテナの実行も可能など、既存 Microsoft 環境が活用できるメリットがあります。 特に AzureDevOps や VisualStudio を利用する開発者にとって、AKS は開発効率向上に寄与してくれる環境です。AKS のコストAKS ワーカーノードの利用料金のみ (仮想マシンと関連するストレージ、ネットワークリソース使用分)*AKSでは、クラスター毎の料金(コントロールプレーンの料金)はかかりません。ただし、アップタイムSLAとして99.9%の稼働率を保証するオプションを付加する場合は、1クラスター当たり 0.10 USD / 時間かかります。[4]Google|Google Kubernetes Engine(GKE)GKE は Google Cloudにおける マネージド Kubernetes です。 Kubernetes が Google から誕生したことから考えると、Kubernetes 実績がもっとも多く信頼性の高いベンダーは、現時点では Google だと言えるでしょう。 GKEは他の Kubernetes サービスよりもクラスター構築が数倍高速とされており、特に頻繁にクラスター作成する際の生産性に大きく貢献します。 さらに Autopilot モードで Kubernetes クラスターを作成することで、セキュリティを強化することもできます。GKE のコストGKE クラスター毎に 0.10 USD / 時間(毎月の無料枠使用後) + GKE ワーカーノードの利用料金*返金制度を備えた SLA(サービスレベル契約)が含まれており、コントロールプレーンで99.95%(ゾーンクラスタの場合99.5% )の稼働率を保証しています。[5]マネージド Kubernetes のコスト詳細は、各社サイトにて最新情報や条件をご確認ください。まとめ主要なパブリッククラウドで、Kubernetes が運用管理はおまかせのマネージドとして使えるようになってきたことから、サービスを停止せずに高い頻度でアプリケーション変更を行ったり、障害に強いシステム環境を作るためのハードルが低くなってきたと言えます。 すでにお使いの、あるいはこれから使っていきたいクラウド環境を念頭におきつつ、合わせて Kubernetes の活用も検討していきませんか。クラウドエースは、 Google Cloud マネージドサービスパートナーとして、マネージド Kubernetes 環境の導入実績を多数を持っております。 Kubernetes 導入をご検討の際には、ぜひご相談ください。参照元Kubernetes 「Kubermetesとは何か?Wikipedia “Kubernetes”AWS “Amazon EKSの料金”Microsoft “Azure Kubernetes Service (AKS) の価格”Google Cloud “Google Kubernetes Engine の料金”