はじめに
Dockerでアプリをコンテナ化できるようになると、次に登場するのが
Kubernetes(クバネティス / k8s) です。
- コンテナの数を自動で増減したい
- 障害時に自動復旧させたい
- 本番環境を安全に運用したい
こうした要求を満たすために、Kubernetesは事実上の 標準技術 となっています。
本記事では、
- Kubernetesとは何か
- Docker / Docker Composeとの違い
- Kubernetesの基本概念
- 実際に動かすハンズオン
を 初心者でも理解できる形 で解説します。
Kubernetes(k8s)とは?
Kubernetes は、コンテナを自動で管理・運用するためのプラットフォームです。
Dockerが「コンテナを作って動かす」技術だとすると、
Kubernetesは「大量のコンテナを安全に運用するための仕組み」です。
Kubernetesが必要とされる理由
実運用では以下の課題が発生します。
- コンテナが落ちたら自動で復旧したい
- アクセス増加時にスケールしたい
- 複数サーバーにまたがって管理したい
Kubernetesはこれらを 自動化 します。
Docker / Docker Compose / Kubernetesの違い
| 項目 | Docker | Docker Compose | Kubernetes |
|---|---|---|---|
| 管理対象 | 単体コンテナ | 複数コンテナ | 大規模コンテナ |
| 主用途 | 開発・検証 | ローカル開発 | 本番運用 |
| スケール | 手動 | 限定的 | 自動 |
| 障害対応 | 手動 | 手動 | 自動復旧 |
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です。
コメントを残す