Kubernetes入門:基本概念から実践まで
Kubernetes
インフラ
DevOps
Kubernetesの基本概念を理解し、実際にアプリケーションをデプロイするまでの流れを解説します。
はじめに
コンテナオーケストレーションのデファクトスタンダードとなったKubernetes。 この記事では、基本概念から実際のデプロイまでを解説します。
Kubernetesとは
Kubernetesは、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するためのオープンソースプラットフォームです。
主な特徴
- 自動スケーリング: 負荷に応じてPod数を自動調整
- 自己修復: 障害時に自動でコンテナを再起動
- ローリングアップデート: ダウンタイムなしでのデプロイ
- サービスディスカバリ: DNSベースの名前解決
基本概念
Pod
Kubernetesの最小デプロイ単位です。1つ以上のコンテナをグループ化します。
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80Deployment
Podのレプリカ数を管理し、ローリングアップデートを提供します。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21
ports:
- containerPort: 80Service
Podへのネットワークアクセスを提供します。
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- port: 80
targetPort: 80
type: LoadBalancer実践:アプリケーションのデプロイ
1. kubectlのセットアップ
# macOS
brew install kubectl
# 設定確認
kubectl cluster-info2. Deploymentの作成
kubectl apply -f deployment.yaml3. Serviceの作成
kubectl apply -f service.yaml4. 確認
# Pod一覧
kubectl get pods
# Service一覧
kubectl get services
# ログ確認
kubectl logs <pod-name>スケーリング
# レプリカ数を5に変更
kubectl scale deployment nginx-deployment --replicas=5
# オートスケーリングの設定
kubectl autoscale deployment nginx-deployment \
--min=3 --max=10 --cpu-percent=80まとめ
Kubernetesは学習曲線が急ですが、一度理解すれば非常に強力なツールです。 まずは小規模な環境(minikubeやkind)で試してみることをお勧めします。
ノート参考リソース