Kubernetes

コンテナのデプロイ、スケーリング、管理を自動化するオープンソースのオーケストレーションプラットフォーム

コンテナインフラ

Kubernetes とは

Kubernetes (K8s) は、Google が Borg の知見をもとに開発したコンテナオーケストレーションプラットフォームである。CNCF がホスト。AWS では EKS (Elastic Kubernetes Service) で利用する。

主要なリソース

Kubernetes はいくつかのリソースを組み合わせてアプリケーションを管理する。Pod がコンテナの最小実行単位で、Deployment が Pod のレプリカ数管理とローリングアップデートを担う。Service が Pod へのネットワークアクセスを提供し、Ingress が外部からの HTTP ルーティングを制御する。設定データは ConfigMap、秘密情報は Secret で管理し、HPA (Horizontal Pod Autoscaler) が負荷に応じて Pod 数を自動調整する。

Deployment の定義

apiVersion: apps/v1
kind: Deployment
metadata:
  name: api
spec:
  replicas: 3
  selector:
    matchLabels: { app: api }
  template:
    metadata:
      labels: { app: api }
    spec:
      containers:
        - name: api
          image: my-app:latest
          ports: [{ containerPort: 8080 }]
          resources:
            requests: { cpu: 100m, memory: 128Mi }
            limits: { cpu: 500m, memory: 512Mi }

EKS vs ECS vs Lambda

観点 EKS ECS Fargate Lambda
管理負荷 高い 低い 最低
K8s エコシステム
コスト (アイドル) クラスタ費用 タスク数 ゼロ
実行時間 無制限 無制限 最大 15 分
用途 K8s が必要な場合 コンテナ イベント駆動

いつ Kubernetes を使うか

ケース 推奨
K8s エコシステムが必要 EKS
シンプルなコンテナ実行 ECS Fargate
イベント駆動、短時間処理 Lambda
コストゼロを目指す Lambda

実務での活用方法は関連書籍にも詳しい。

関連用語