皆様、こんにちは!
アイレット株式会社 DX開発事業部の楊林と申します。
前回の投稿までで、コンテナと Kubernetes について紹介してきました。
今回はいよいよ、Google Cloud のマネージド Kubernetes である Google Kubernetes Engine(GKE) について整理していきます。
Google Kubernetes Engineとは
GKEは、Google Cloud 上で動作する フルマネージドの Kubernetes サービス です。
コンテナ化されたアプリケーションの デプロイ・管理・スケーリング を簡単に扱えるように設計されています。
GKEはクラスタを構成する仮想マシンのプロビジョニングを自動化し、ノードには Google が保守する Container-Optimized OS が利用されます。最小構成で軽量に動作し、スケール時にも高速です。
利用する際は、まず Kubernetes システムである「クラスタ」を作成するところから始まります。
また、GKE には「Autopilot モード」が用意されており、ノード構成・スケーリング・アップグレード・セキュリティ設定などクラスタ運用に必要な作業を Google が肩代わりしてくれます。これにより、ユーザーはアプリの運用に集中できます。
クラスタは常に最新の安定版へと自動アップグレードされ、ノードの状態を監視して異常があれば自動で修復してくれる「ノード自動修復」機能も備えています。
さらに、GKEはスケーリングにも対応しており、Kubernetes の HPA(Horizontal Pod Autoscaler)と連動しながらクラスタ自体も効率的に拡張されます。
GKEは Google Cloud の主要サービスとも深く統合されており、以下のような連携が自然に行えます。
- Artifact Registry:プライベートなコンテナイメージを安全に保存
- Cloud Build:ビルドからデプロイまでの自動化
- IAM:ロールと権限によるアクセス管理
- Cloud Monitoring / Logging:クラスタやワークロードの可視化
- VPC:ロードバランサや Ingress を含むネットワーク基盤
さらに、Google Cloud コンソールには強力な GKE 専用ダッシュボードが用意されており、オープンソース版の Kubernetes Dashboard と違い、セキュアに扱える点も特徴です。
GKE クラスタは、背後では複数の Compute Engine VM によって構成されていますが、ユーザーは Kubernetes の標準的な操作だけで利用できます。
GKEとKubernetesの違い
ユーザー視点で言えば、GKE の方が圧倒的にシンプルです。
なぜなら、GKEはコントロールプレーンを完全に Google が管理してくれるからです。
ユーザーは公開された Kubernetes API エンドポイントに対してリクエストを送るだけでよく、背後のインフラの構築や運用は必要ありません。
利用する運用モードによって、ノードへのアクセス範囲や管理対象が変わります。
GKE運用モード
GKEには Standard と Autopilot の2種類の運用モードがあります。
Autopilot モード
基盤インフラを Google が管理する、よりマネージドな運用モードです。
- ノード構成、スケーリング、アップグレード、セキュリティ設定を自動管理
- 運用オーバーヘッドが非常に小さい
- 構成の自由度は低い
- Pod単位の従量課金で、インフラの無駄がない
Autopilot は本番環境向けに最適化されており、Google が定義したベストプラクティスに沿ったクラスタ構成が自動で行われます。
ノードはロックダウンされているため安全性が高く、セキュリティ設定漏れのリスクも大きく減ります。
また、クラスタ全体のモニタリング・アップデート・最適化は Google が行うため、ユーザーはアプリケーション運用に集中できます。
一方で、Autopilot にはいくつか制限もあります。
- ノードオブジェクトへのアクセス制限
- SSH 不可、権限昇格不可
- ノードアフィニティやホストアクセスの一部制約
- 利用できる構成オプションが Standard より少ない
ただし、特別な設定を必要としない限り、Autopilot のほうが運用効率やコスト効率は高いケースが多いです。
Standard モード
Standard モードでは、インフラ管理の多くをユーザー自身が行います。
- ノード構成・ネットワーク・管理を自由にカスタマイズできる
- オーバーヘッドは増えるが制御性が高い
- インフラはプロビジョニングした分だけ課金
- 特殊な Kubernetes 設定や細かいチューニングが可能
インフラを細かくコントロールしたいユーザーや、特殊な要件でクラスタを設計したい場合に選択されます。
GKEの利用方法
GKEクラスタの作成は、Google Cloud コンソールまたは Cloud SDK の gcloud コマンドで行えます。
クラスタはマシンタイプ、ノード数、ネットワークなどを自由にカスタマイズできます。
作成後は、標準の Kubernetes コマンド kubectl でアプリのデプロイやポリシー設定、状態管理、モニタリングを行います。
クラスタの作成は、シンプルであれば「gcloud container clusters create」の一コマンドで開始できます。
GKEのメリット
GKEを使うことで、以下の Google Cloud 提供の高度なクラスタ管理機能が利用できます。
- Google Cloud のロードバランシング
- ノードプールを用いた柔軟なノード管理
- ノード自動スケーリング
- 自動アップグレード
- 自動修復
- Cloud Monitoring / Logging による可視化と診断
本番環境で求められる信頼性を、可能な限り自動化された形で提供してくれるのが GKE の魅力です。
最後に
GKEは、Google Cloud における重要なコンテナ基盤として、Kubernetes をより扱いやすくしてくれます。
Kubernetesについてさらに深く学びたい方は、弊社の田村による「本気で学ぶKubernetes」シリーズもぜひご覧ください。
次回は App Engine・Cloud Functions・Cloud Run など、GCP のサーバレス系サービスについて整理していきます。
引き続き読んでいただければ嬉しいです!
以前の投稿
【Google Cloud入門】クラウドサービスの特徴とGoogle Cloudの触り方
【Google Cloud入門】リソースマネージメント
【Google Cloud入門】アクセス管理の基本 - IAM
【Google Cloud入門】サービスアカウントとCloud Identity
【Google Cloud入門】Compute Engineの基礎
【Google Cloud入門】コンピューティングオプションとマネージドインスタンスグループ
【Google Cloud入門】GKE入門の前準備-コンテナの基礎
【Google Cloud入門】GKE入門の前準備-Kubernetesの基礎
【Google Cloud入門】GKE入門の前準備-Kubernetesの構成