Kubernetes(クバネティス、k8sとも呼ばれる)は、Googleが開発しCNCFに寄贈したコンテナオーケストレーションプラットフォームです。2026年現在、AWSのEKS・Google CloudのGKE・AzureのAKSなど主要クラウドで標準サービスとして提供されており、インフラエンジニア・SREの必須スキルとなっています。
本記事では、Dockerの基礎知識がある方を対象に、Kubernetesの概念から実際のクラスター操作まで体系的に解説します。
Kubernetesとは?コンテナオーケストレーションの必要性
Dockerだけでは複数のコンテナを管理するのが困難です。Kubernetesは以下の課題を解決します。
- スケーリング:トラフィックに応じてコンテナを自動増減
- 自己修復:コンテナが落ちたら自動で再起動
- ローリングアップデート:無停止でアプリをデプロイ
- サービスディスカバリ:コンテナ間の通信を自動管理
- 設定管理:ConfigMap/Secretで設定・秘密情報を管理
Kubernetesの主要コンポーネント
Pod(ポッド)
PodはKubernetesの最小デプロイ単位です。1つ以上のコンテナをまとめたもので、同じPod内のコンテナはIPアドレスとボリュームを共有します。
Deployment(デプロイメント)
Podのレプリカ管理とアップデートを担当します。「このコンテナを3つ起動し続けろ」という宣言的な設定が書けます。
Service(サービス)
Podへのネットワークアクセスを提供します。ClusterIP・NodePort・LoadBalancerの3種類があります。
Namespace(ネームスペース)
クラスター内のリソースを論理的に分離します。開発・テスト・本番環境を同一クラスター内で分けることができます。
ローカル環境のセットアップ:minikube
# minikubeのインストール(macOS)
brew install minikube
# クラスターの起動
minikube start
# kubectlのインストール
brew install kubectl
# クラスターの状態確認
kubectl cluster-info
kubectl get nodes
マニフェストファイルの書き方
Deployment マニフェスト例
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: production
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:1.0.0
ports:
- containerPort: 3000
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 3000
initialDelaySeconds: 10
periodSeconds: 10
Service マニフェスト例
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 3000
type: LoadBalancer
基本的なkubectlコマンド
# リソースの作成・更新
kubectl apply -f deployment.yaml
# リソースの確認
kubectl get pods
kubectl get deployments
kubectl get services
# ログの確認
kubectl logs pod-name-xxxxx
kubectl logs -f pod-name-xxxxx # ストリーミング
# Pod内でのコマンド実行
kubectl exec -it pod-name-xxxxx -- /bin/sh
# リソースの削除
kubectl delete -f deployment.yaml
# デプロイのスケーリング
kubectl scale deployment my-app --replicas=5
# ローリングアップデート
kubectl set image deployment/my-app my-app=my-app:2.0.0
# ロールバック
kubectl rollout undo deployment/my-app
Helm:Kubernetesのパッケージマネージャー
HelmはKubernetesのパッケージマネージャーで、複雑なアプリケーションのデプロイを簡単にします。
# Helmのインストール
brew install helm
# リポジトリの追加
helm repo add stable https://charts.helm.sh/stable
# Nginxのインストール例
helm install my-nginx stable/nginx-ingress
# インストール済みチャートの確認
helm list
まとめ:Kubernetesで次世代インフラを構築しよう
Kubernetesは学習曲線が急ですが、習得することでスケーラブル・信頼性の高いシステム構築スキルが身につきます。インフラエンジニア・SRE・バックエンドエンジニアにとって、今やKubernetes経験は必須の市場価値です。
まずはminikubeでローカル環境を構築し、実際にPodをデプロイして動かすことから始めてみてください。