「世の中には難しいことが多い!」と感じることが多い私が、様々な用語を、初学者向けにわかりやすく全力で解説します。
今回解説する用語
GKE(Google Kubernetes Engine)について解説します。
GKEはGoogleが提供するクラウドサービスの1つで、コンテナ技術を使用したサービスです。近年のシステム開発において、コンテナ技術を使用する機会が増えています。その分、コンテナを活用したクラウド技術が重要になってきています。
今回はGKEとはどのようなものなのかを図を用いてわかりやすく解説していきます!
公式ドキュメントから抜粋
Google Cloud 公式ドキュメントからの引用文です。
(゜Д゜)?という方はぜひ本記事を読み進めてください。
Google Kubernetes Engine(GKE)は、Google のインフラストラクチャを使用して、コンテナ化されたアプリケーションのデプロイ、管理、スケーリングを行うマネージド環境を提供します。GKE 環境は複数のマシン(具体的には、Compute Engine インスタンス)で構成され、これらのマシンがグループ化されてクラスタを形成します。
https://cloud.google.com/run/docs/overview/what-is-cloud-run?hl=ja#:~:text=Cloud%20Run%20%E3%81%AF%E3%80%81Google%20%E3%81%AE,Run%20%E3%81%AB%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82
GKEとは?
GKEとは、Google Cloudが自動的にコンテナを管理してくれるサービスのことです。GKEを使用することで、コンテナアプリケーションを効率的に運用することが出来ます。
コンテナとは
GKEはコンテナを使用したGoogle Cloudのサービスです。つまりコンテナについての理解が必須になってくるため、コンテナについてかんたんに解説をします。
コンテナとは、コンテナという単位でデータやプログラム(ソフトウェアなど)を管理することが出来る技術のことです。コンテナを使用することでシステム開発環境を簡単に構築出来たり、システムへの負荷分散をすることが出来ます。
コンテナを使用しない場合、データやプログラム(ソフトウェア)はどこに格納されているか明確でなく、ウロウロしています。私たちユーザーも「このソフトウェアはPCのここにある!」と意識したことはありませんよね。
Dockerを使用することで、データやプログラム(ソフトウェア)に個別に部屋を用意することが出来ます。部屋を用意することで、ソフトウェアが隔離され、どこにあるのかが明確になります。この部屋のことをコンテナと呼びます。
以下の図のように、「Webサーバー用のソフトウェアがインストールされたコンテナ」や「メールサーバー用のソフトウェアがインストールされたコンテナ」を作成することが出来ます。
コンテナについてより詳しく知りたい方は以下の記事を読んでみてください。
コンテナはかんたんに負荷分散をすることが出来る
コンテナを使用するとかんたんに負荷を分散させることが出来ます。負荷分散をすることでシステムの可用性を向上させます。
なぜコンテナでかんたんに負荷分散が出来るのでしょうか?これはコンテナの「かんたんに作成、コピー、削除できる」という特性によるものです。
この特性を利用して、システムの負荷が増えてきた場合に、素早く同一の構成のコンテナを複製することで負荷分散をすることが出来るのです。
例えば、「サザエさんのじゃんけん予想アプリケーション」があるとします。これはサザエさんがじゃんけんで出す手を予想してくれます。このアプリケーションのコンテナを作成し、運用することにします。
このアプリケーションは日曜日の夕方になるとアクセスが増加します。アクセスが増えてきた時間帯に同一構成のコンテナを増やすことで負荷分散になり、アプリケーションが重くならずにサクサク動かすことが出来るのです。
GKEを使用することでコンテナの管理が楽になる
便利なコンテナにもデメリットがあります。それは管理がめんどくさいということです。
コンテナの管理には、Kubernetesという技術を使用します。Kubernetesを使用することによって、コンテナの状態を望むべき姿にすることが出来ます。
しかし、複数のコンテナを管理するのはとても大変です。例えば、障害が発生してコンテナが停止した場合には作り直す必要がありますし、メンテナンス時にコンテナを1つ1つをアップデートしていくのも手間がかかります。常にコンテナの状態を監視しなければなりません。
このようなコンテナの管理をGoogleが自動的にやってくれるサービスがGKE(Google Kubernetes Engine)なのです!
「コンテナをこういう感じで管理してね」と記載したファイルをGKEに渡すことで、コンテナをあるべき状態にしてくれるのです。
GKEは設定された要望をもとに、ユーザーからのリクエストが多くなった場合はコンテナを増やし、リクエストが少ない場合はコンテナを減らします。
問題が発生してコンテナが動かなくなった場合も、動かなくなったコンテナを削除して、新しいコンテナを作成してくれます。
GKEを使用することで、限られたリソースを最大限に生かして、効率的にコンテナアプリケーションを運用することが出来ます。
GKEのマネージドの範囲
少し応用的な感じで、GKEが自動的に管理してくれる範囲について説明をします。
クラウドサービスはマネージドの範囲、つまりユーザーは何を管理すればよいのかを理解することが重要になってきます。マネージドとは、クラウド事業者によって自動的に管理してくれるという意味です。
GKEのマネージドの範囲を理解するためにKubernetesについて説明をします。
Kubernetesとは、コンテナの管理をする技術のことです。以下の図が簡略化したKubernetesの構成図です。
Kubernetesはマスターノード(コントロールプレーン)とワーカーノードで構成されています。
ワーカーノードではコンテナが稼働しており、マスターノードではワーカーノード上で稼働しているコンテナの管理を行います。Kubernetesが管理するコンテナの最小単位をPodと呼びます。
GKEのAutopilotモードでは、コントロールプレーンとワーカーノードの管理を自動的に行ってくれます。つまり、Google Cloud利用者が管理するのはPodだけでよいということになります。
よくわからないという方は、「マネージドの範囲が決まってるんだな~」くらいで理解してください。
Kubernetesについてより詳しく知りたい方は以下の記事を読んでみてください。
まとめ
GKEとは、Google Cloudが自動的にコンテナを管理してくれるサービスのことです。GKEを使用することで効率的にコンテナアプリケーションを運用することが出来ます。
本サイトでの注意事項
本サイトではなんとなく理解することを目的としているため正確性に欠ける表現があります。より正確な情報を詳しく知りたい場合は公式ドキュメント等を参照ください。
コメント