【2026年版】Kubernetes(k8s)完全入門ガイド|Pod・Deployment・Service・HPA実践解説

Kubernetes(クバネティス/k8s)は、Googleが開発しオープンソース化したコンテナオーケストレーションシステムです。Dockerコンテナを大規模に運用・管理するためのプラットフォームとして、現代のクラウドネイティブ開発に欠かせない技術となっています。本記事では、Kubernetesの基礎から実践的な運用まで徹底解説します。

Kubernetesとは?なぜ必要なのか

Dockerコンテナは単体のアプリケーション実行環境としては優れていますが、複数のコンテナを大規模に管理する場合には課題が生まれます。Kubernetesはそうした課題を解決するオーケストレーションツールです。

Kubernetesが解決する課題

  • コンテナの自動スケーリング:トラフィックに応じてコンテナ数を自動調整
  • 自己修復機能:障害が発生したコンテナを自動的に再起動
  • ローリングアップデート:ダウンタイムなしでアプリケーションを更新
  • サービスディスカバリ:コンテナ間の通信を自動管理
  • 設定・機密情報管理:ConfigMapとSecretで環境設定を一元管理

Kubernetesの主要コンポーネント

Pod(ポッド)

PodはKubernetesの最小デプロイ単位です。1つ以上のコンテナをグループとして管理し、同じネットワーク空間を共有します。

apiVersion: v1
kind: Pod
metadata:
  name: my-app
  labels:
    app: my-app
spec:
  containers:
  - name: app
    image: nginx:latest
    ports:
    - containerPort: 80
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"

Deployment(デプロイメント)

Deploymentは複数のPodのレプリカを管理し、ローリングアップデートやロールバックを可能にします。

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: app
        image: my-app:v1.2.0
        ports:
        - containerPort: 8080
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0

Service(サービス)

ServiceはPodへのアクセスを管理する抽象化レイヤーです。PodのIPアドレスが変わっても常に同じエンドポイントでアクセス可能にします。

apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  selector:
    app: my-app
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080
  type: LoadBalancer

ConfigMapとSecretによる設定管理

ConfigMap(コンフィグマップ)

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  DATABASE_HOST: "db.example.com"
  DATABASE_PORT: "5432"
  APP_ENV: "production"

Secret(シークレット)

apiVersion: v1
kind: Secret
metadata:
  name: app-secret
type: Opaque
data:
  DATABASE_PASSWORD: BASE64ENCODED_PASSWORD
  API_KEY: BASE64ENCODED_KEY

Horizontal Pod Autoscaler(HPA)による自動スケーリング

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: my-app-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70

便利なkubectlコマンド一覧

コマンド説明
kubectl get podsPod一覧を表示
kubectl get deploymentsDeployment一覧を表示
kubectl describe pod POD_NAMEPodの詳細情報を表示
kubectl logs POD_NAMEPodのログを表示
kubectl exec -it POD_NAME -- bashPodにシェル接続
kubectl apply -f manifest.yamlマニフェストを適用
kubectl rollout history deployment/NAMEデプロイ履歴を表示
kubectl rollout undo deployment/NAME前のバージョンにロールバック

まとめ

Kubernetesは初学者には学習コストが高く感じられますが、Pod・Deployment・Serviceの3つの基本コンセプトを理解すれば、実践的な運用が可能になります。本記事で紹介したYAMLマニフェストを参考に、ローカル環境(minikube、kind等)で試してみることをおすすめします。

投稿者 kasata

IT企業でエンジニアとして勤務後、テクノロジー情報メディア「Tech Athletes(テック・アスリート)」を運営。プログラミング、クラウドインフラ(AWS/GCP/Azure)、AI活用、Webサービス開発を専門とする。エンジニア・ビジネスパーソン向けに、実際に使ってみた経験をもとに信頼できる技術情報を発信中。資格:AWS認定ソリューションアーキテクト、Python 3 エンジニア認定試験合格。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です