Kubernetes入門|コンテナオーケストレーションの基本とハンズオン

はじめに

Dockerでアプリをコンテナ化できるようになると、次に登場するのが
Kubernetes(クバネティス / k8s) です。

  • コンテナの数を自動で増減したい
  • 障害時に自動復旧させたい
  • 本番環境を安全に運用したい

こうした要求を満たすために、Kubernetesは事実上の 標準技術 となっています。

本記事では、

  • Kubernetesとは何か
  • Docker / Docker Composeとの違い
  • Kubernetesの基本概念
  • 実際に動かすハンズオン

初心者でも理解できる形 で解説します。


Kubernetes(k8s)とは?

Kubernetes は、コンテナを自動で管理・運用するためのプラットフォームです。

Dockerが「コンテナを作って動かす」技術だとすると、
Kubernetesは「大量のコンテナを安全に運用するための仕組み」です。


Kubernetesが必要とされる理由

実運用では以下の課題が発生します。

  • コンテナが落ちたら自動で復旧したい
  • アクセス増加時にスケールしたい
  • 複数サーバーにまたがって管理したい

Kubernetesはこれらを 自動化 します。


Docker / Docker Compose / Kubernetesの違い

項目DockerDocker ComposeKubernetes
管理対象単体コンテナ複数コンテナ大規模コンテナ
主用途開発・検証ローカル開発本番運用
スケール手動限定的自動
障害対応手動手動自動復旧

Kubernetesの基本コンポーネント

Pod(ポッド)

  • Kubernetesの最小実行単位
  • 1つ以上のコンテナを含む

Node(ノード)

  • Podが動作するサーバー

Cluster(クラスタ)

  • Nodeの集合体

Deployment

  • Podの数や更新戦略を管理

Service

  • Podへのアクセスを安定させる

Kubernetesを使うメリット

  • 自動スケーリング
  • 自己修復(Self-healing)
  • ローリングアップデート
  • 高可用性

本番環境ではほぼ必須の技術 と言えます。


【ハンズオン】KubernetesでWebアプリを動かしてみよう

今回は ローカル環境でKubernetesを体験 します。


事前準備

以下をインストールしてください。

  • Docker Desktop(Kubernetes有効化)
  • kubectl
kubectl version --client

① Kubernetesを有効化

Docker Desktop → Settings → Kubernetes → Enable Kubernetes


② デプロイ用YAMLを作成

k8s-sample/
├─ deployment.yaml
└─ service.yaml

③ Deploymentを作成

deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: web
          image: nginx:latest
          ports:
            - containerPort: 80

④ Serviceを作成

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: web-service
spec:
  type: NodePort
  selector:
    app: web
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30080

⑤ デプロイ

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

⑥ 状態確認

kubectl get pods
kubectl get svc

⑦ ブラウザで確認

http://localhost:30080

Nginxの画面が表示されれば成功です 🎉


Podをスケールしてみる

kubectl scale deployment web-deployment --replicas=4
kubectl get pods

よく使うkubectlコマンド

kubectl get pods
kubectl describe pod <pod名>
kubectl logs <pod名>
kubectl delete -f deployment.yaml

Kubernetesが活躍する場面

  • 本番Webサービス
  • マイクロサービス構成
  • 高トラフィックなアプリ
  • クラウドネイティブ開発

まとめ

Kubernetesを使うことで、

  • コンテナ運用が自動化される
  • 高可用・スケーラブルな構成が作れる
  • 本番運用に耐える環境が構築できる

Dockerを学んだ次の必須スキル がKubernetesです。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

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