0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【保存版】Google Cloudのコンテナ・サーバーレス全解説〜DockerからGKE、Cloud Runまで〜

0
Last updated at Posted at 2025-12-14

この記事は

この記事では、Google Cloudにおけるコンテナ技術とサーバーレスサービスについて解説します。Docker、Kubernetes、GKE、そしてApp Engine、Cloud Functions、Cloud Runなどのサーバーレスサービスを詳しく説明します。

コンテナとは

~アプリケーション単位で仮想化する技術~

コンテナの概念

コンテナは、アプリケーションとその実行に必要な依存関係を1つのパッケージにまとめる技術です。

仮想マシンとコンテナの比較

項目 仮想マシン コンテナ
起動時間 数分 数秒
サイズ GB単位 MB単位
リソース効率
分離レベル 完全分離 プロセス分離
OSオーバーヘッド あり なし

コンテナの利点

利点 説明
ポータビリティ どの環境でも同じように動作
効率性 リソースの有効活用
一貫性 開発・本番で同一の環境
スケーラビリティ 迅速なスケールアップ/ダウン
マイクロサービス サービスの分離と独立デプロイ

Docker

Dockerは、最も広く使われているコンテナプラットフォームです。

主な概念:

  • Dockerfile:コンテナイメージの定義ファイル
  • イメージ:コンテナの設計図
  • コンテナ:イメージの実行インスタンス
  • レジストリ:イメージの保存場所
# Dockerfileの例
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

Artifact Registry

Google Cloud のコンテナイメージを管理するサービス:

# イメージのビルドとプッシュ
docker build -t asia-northeast1-docker.pkg.dev/PROJECT/REPO/IMAGE:tag .
docker push asia-northeast1-docker.pkg.dev/PROJECT/REPO/IMAGE:tag

Kubernetes (K8s)

~コンテナを管理するツール~

Kubernetesとは

Kubernetes (K8s)は、Googleが開発し、現在はCNCFが管理するコンテナオーケストレーションプラットフォームです。詳しくは下記の記事でも解説しています。

Kubernetesの主要概念

概念 説明
Pod 1つ以上のコンテナのグループ
Deployment Podのデプロイと管理
Service Podへのネットワークアクセス
ConfigMap/Secret 設定と機密情報の管理
Namespace リソースの論理的な分離
Ingress 外部からのHTTPアクセス制御

Kubernetesの機能

機能 説明
オートスケーリング 負荷に応じたPod数の自動調整
自己修復 障害発生時の自動再起動
ローリングアップデート ダウンタイムなしの更新
サービスディスカバリ Podの自動検出
ストレージ管理 永続ストレージの自動プロビジョニング

Google Kubernetes Engine (GKE)

~Google Cloudで使えるKubernetes~

GKEとは

Google Kubernetes Engine (GKE)は、Google CloudのマネージドKubernetesサービスです。

GKEの特徴

特徴 説明
マネージド コントロールプレーンはGoogleが管理
自動アップグレード Kubernetesバージョンの自動更新
自動スケーリング クラスタとPodの自動スケール
統合監視 Cloud Monitoringとの連携
セキュリティ Shielded GKEノード、Workload Identity

GKEのモード

モード 説明 管理レベル
Standard ノードを自分で管理
Autopilot ノードもGoogleが管理 低(フルマネージド)

GKE Autopilot

2024年にさらに強化されたAutopilotの特徴:

  • GPUの利用(AI/MLワークロード)
  • バースト可能なPodのサポート
  • リソース設定の柔軟性向上(1m単位)
  • Flexible CUDsの適用

GKEのアーキテクチャ

~コンテナを管理するしくみ~

GKEクラスタの構成

コントロールプレーン

コンポーネント 説明
API Server Kubernetes APIのエントリーポイント
Scheduler Podをノードに配置
Controller Manager クラスタの状態を管理
etcd クラスタの状態を保存

GKEでは、コントロールプレーンはGoogleがマネージドVPC内で運用します。

ノードプール

同じ設定のノードをグループ化:

# ノードプールの追加
gcloud container node-pools create high-memory-pool \
    --cluster=my-cluster \
    --zone=asia-northeast1-a \
    --machine-type=n2-highmem-4 \
    --num-nodes=2

ネットワーキング

オプション 説明
VPCネイティブ Pod IPをVPC IPから割り当て
ClusterIP クラスタ内部のサービス
NodePort ノードのポートで公開
LoadBalancer 外部ロードバランサーで公開
Ingress HTTP(S)ルーティング

2024年のアーキテクチャ更新

  • 最大65,000ノードのクラスタをサポート
  • マルチCPUアーキテクチャ対応(AMD64、Arm64)
  • Google Axion(C4A)プロセッサのサポート
  • Kubernetes 1.32がRapidチャネルで利用可能

GKE/K8sを使うメリット

~GKEとCompute Engineの比較~

GKEを使うメリット

メリット 説明
運用負担の軽減 コントロールプレーンの管理不要
自動スケーリング Pod/ノードの自動スケール
自己修復 障害時の自動復旧
宣言的設定 マニフェストでインフラを定義
ポータビリティ 他のKubernetes環境への移行が容易

Compute Engineとの比較

項目 Compute Engine GKE
抽象化レベル 低(VM直接管理) 高(コンテナ)
スケーリング 手動/スクリプト 自動
デプロイ 手動/構成管理ツール kubectl/マニフェスト
可搬性
学習コスト 中〜高
適したワークロード レガシーアプリ、特殊要件 マイクロサービス

選択の基準

適切なサービスの選択

要件 推奨サービス
完全なVM制御が必要 Compute Engine
Kubernetes機能が必要 GKE
シンプルなコンテナ実行 Cloud Run
イベント駆動関数 Cloud Functions
Webアプリ(簡単) App Engine

サーバーレスサービス

~サーバーを意識する必要がないしくみ~

サーバーレスとは

サーバーレスは、インフラストラクチャの管理をクラウドプロバイダーに任せ、コードの実行に集中できるコンピューティングモデルです。

サーバーレスの特徴

特徴 説明
ゼロ運用 サーバーのプロビジョニング・管理不要
自動スケーリング 需要に応じて自動的にスケール
従量課金 使用した分だけ支払い
イベント駆動 イベントに応じて実行

Google Cloudのサーバーレスサービス

サービス 説明 用途
App Engine フルマネージドWebアプリ Webアプリ、API
Cloud Functions イベント駆動関数 軽量処理、トリガー
Cloud Run コンテナベース 柔軟性が必要な場合

2024年の重要な変更

2024年8月、Cloud FunctionsはCloud Runに統合され、「Cloud Run functions」として提供されるようになりました。

これにより:

  • Cloud Functionsのイベント駆動モデルとCloud Runの柔軟性が統合
  • GPU機能がCloud Run functionsで利用可能に
  • より詳細なサービス設定のコントロールが可能に

App Engine

~Webアプリケーション開発のサービス~

App Engineとは

App Engineは、Webアプリケーションやモバイルバックエンドを簡単にデプロイできるフルマネージドPaaSです。

App Engineの環境

環境 特徴 用途
スタンダード 高速スケーリング、ゼロスケール 一般的なWebアプリ
フレキシブル Dockerコンテナ、カスタムランタイム カスタム要件

スタンダード環境

特徴 説明
スケーリング ミリ秒単位で0から自動スケール
料金 インスタンス時間で課金
ランタイム Python, Java, Node.js, Go, PHP, Ruby
制限 リクエストタイムアウトあり

Cloud Functions(レガシーサービス)

~関数を実行できるサーバーレスサービス~

Cloud Functionsとは

Cloud Functions(現:Cloud Run functions)は、イベント駆動型のサーバーレスコンピューティングサービスです。

サポートするランタイム

言語 バージョン
Node.js 18, 20
Python 3.9, 3.10, 3.11, 3.12
Go 1.20, 1.21, 1.22
Java 11, 17, 21
.NET 6, 8
Ruby 3.0, 3.2
PHP 8.1, 8.2

Cloud Run

~コンテナを動かせるサーバーレスサービス~

Cloud Runとは

Cloud Runは、コンテナベースのサーバーレスプラットフォームです。任意の言語・フレームワークで構築したコンテナを実行できます。

Cloud Runの特徴

特徴 説明
任意のコンテナ Dockerイメージを実行
ゼロスケール リクエストがなければ0にスケール
自動HTTPS マネージドSSL証明書
カスタムドメイン 独自ドメインの設定可能
VPC接続 VPCリソースへのアクセス

Cloud Run services vs Cloud Run jobs

タイプ 用途
services HTTPリクエストを処理
jobs バッチ処理、スケジュールタスク

2024年の機能強化

  • デプロイされたイメージの自動セキュリティ更新
  • Cloud Run jobsでのGPU利用(プレビュー)
  • Cloud Run functions(Cloud Functionsの統合)

Cloud Build

~テストやビルドを自動化~

Cloud Buildとは

Cloud Buildは、Google Cloud上でCI/CDパイプラインを実行するマネージドサービスです。

Cloud Buildの特徴

特徴 説明
マネージド インフラ管理不要
高速 並列ビルドで高速化
統合 GKE、Cloud Run、App Engineと連携
セキュリティ VPC Service Controlsサポート

まとめ

この記事では、コンテナとサーバーレスサービスについて以下の内容を学びました:

  • コンテナはアプリケーションを軽量・ポータブルにパッケージ化する技術
  • KubernetesはGoogleが開発したコンテナオーケストレーション
  • GKEはマネージドKubernetesで、特にAutopilotは運用負担を大幅に軽減
  • サーバーレスは運用を最小化するコンピューティングモデル
  • App Engineは最もシンプルなWebアプリデプロイ
  • Cloud Functions(Cloud Run functions)はイベント駆動の軽量処理
  • Cloud Runはコンテナベースの柔軟なサーバーレス
  • Cloud Buildで CI/CD を自動化

参考リンク

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?