SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

KubernetesによるスケーラブルなWebアプリ環境の構築

Google Container EngineによるKubernetesクラスタの作成

KubernetesによるスケーラブルなWebアプリ環境の構築 第1回


Kubernetesについて

 Kubernetesには、さまざまな概念や専門用語が登場します。この先の説明を理解するには概念や専門用語の理解が必須になるので、ここで簡単に触れておきます。

クラスタ

 クラスタはKubernetesの概念です。Kubernetesは必ず1つ以上のクラスタで構成され、クラスタは1つ以上のNodeとMasterで構成されています。

Master

 Masterはクラスタ全体を参照することが可能で、Masterが公開しているエンドポイントを通して、クラスタを操作することができます。また、MasterではKubernetes APIサーバーが実行されており、RESTリクエストに応じて各リソース(Pod、Serviceなど)の作成や編集、削除などの各種操作を提供します。

Node

 Nodeは1つ以上で構成され、Masterに管理されています。NodeはDockerコンテナをサポートしており、デプロイされたコンテナはNode上で動作します。

 Nodeは同じスペックのマシンで構成されていますが、Google Container Engineでは独自の機能としてノードプールという機能があり、スペックが異なるNode群をノードプールとしてクラスタ上に複数持たせることができます。

kubectl

 Kubernetesクラスタに対して、コマンドを実行するためのコマンドラインインターフェイスです。kubectlのコマンドをクライアントのマシンから実行することで、各リソース(Pod、Serviceなど)の作成、編集、削除などの操作が行えます。

図2 クラスタの構成図
図2 クラスタの構成図

Pod

 Podはアプリケーションを構成するDockerコンテナのグループで、Dockerイメージを複数指定することができます。自由なメタ情報を持たせることが可能で、本連載ではversionというメタ情報を持たせて、そのメタ情報をServiceのselectorで指定するようにします。

Replica Set

 Podの複製を保持する機能を提供します。指定した複製数に応じてPodが作成され、その数が維持されます。

Deployment

 PodとReplica Setの設定をまとめたもので、アプリケーションをデプロイするときは、PodとReplica Setの設定をまとめて記述した、1つのDeploymentをデプロイする形が多いです。

図3 Pod、Replica Set、Deploymentの対応関係
図3 Pod、Replica Set、Deploymentの対応関係

Service

 アプリケーション(Pod)を外部に公開するためのエンドポイントで、ClusterIPやNodePort、LoadBalancerなど、さまざまな種類があります。

 また、selectorという機能でどのPodを公開するかを指定できます。

 Serviceだけでもアプリケーションを外部に公開することができますが、次に紹介するIngressのほうが多機能なので、ServiceとIngressを併用して使うのがおすすめです。

Ingress

 アプリケーションを外部に公開するためのリソースで、Serviceでは提供されていないURLマップやTLS対応など、さまざまな機能を提供します。

 Ingressにはいくつか種類があります。Nginx Ingressと本記事で使うGKE(GCE)Ingressなどがあり、それぞれのIngressで使える機能が異なります。

 IngressはService(NodePort)を指定して使うので、Ingressを使う場合は必ずServiceが必要です。

 GKEであれば、GKE Ingressは特別なセットアップなしで使うことができるため、本連載ではこのIngressを使用します。

図4 ネットワークの流れ
図4 ネットワークの流れ

次のページ
Webアプリケーションのデプロイ

この記事は参考になりましたか?

KubernetesによるスケーラブルなWebアプリ環境の構築連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 吉海 将太(ヨシカイ ショウタ)

 株式会社カブクのサーバーサイドエンジニアです。APIの開発(Python,GO,AppEngine)とKubernetesによるインフラ環境の構築を担当しています。好きな獣はチベットスナギツネです。 Twitter: @yoshikai_ Facebook WINGSプロジェクト について>有限会社 WINGSプロジェクト が運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での 登録メンバ は約50名で、現在も執筆メンバを 募集中 。興味のある方は、どしどし応募頂きたい。 著書 記事 多数。 RSS X: @WingsPro_info (公式)、 @WingsPro_info/wings (メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/10420 2018/01/22 00:12

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー