Kubernetesとは

Kubernetes(K8s)はコンテナ化されたアプリケーションの自動デプロイ・スケーリング・管理を行うオープンソースシステムです。Googleが開発しCNCFに寄贈しました。

Dockerとの関係

DockerがコンテナのビルドとローカルRunを担当するのに対し、Kubernetesは本番環境での大量コンテナの「指揮者(オーケストレーター)」の役割を果たします。

Kubernetesの主要コンポーネント

コンポーネント 役割
Pod 最小デプロイ単位(1〜複数コンテナ)
Node Podが動作するマシン(VM・物理サーバー)
Cluster 複数NodeをまとめたK8sの基本単位
Deployment Podの数・更新方法を管理
Service PodへのL4ロードバランサ
Ingress HTTP/HTTPSルーティング
ConfigMap/Secret 設定・機密情報の注入

基本的なDeploymentのYAML

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-app:latest
        ports:
        - containerPort: 8080

Kubernetesが解決する課題

  • 自動スケーリング:負荷に応じてPod数を自動調整(HPA)
  • セルフヒーリング:クラッシュしたPodを自動再起動
  • ローリングアップデート:ダウンタイムなしで新バージョンをデプロイ
  • リソース管理:CPU・メモリの制限と保証を設定

マネージドK8s(GKE・EKS・AKS)を使うことで、コントロールプレーンの管理が不要になり、本番運用のハードルが大きく下がります。