🎛️
Kubernetes入門
はじめに
Kubernetesは、Dockerなどのコンテナを宣言的に管理・オーケストレーションするOSSです。
マイクロサービス化が進む現代のインフラにおいて、可用性・スケーラビリティ・自己修復をコードで実現できることが最大の魅力です。
本記事はハンズオン形式で進めます。今回は以下を扱います。
- Kubernetesの全体像を俯瞰する
- ローカル環境にシングルノードクラスタを構築する(kind/minikube)
-
kubectlで基本的な操作を試す
Kubernetesとは
- コンテナオーケストレーション
- 複数ノードにまたがるコンテナの配置(スケジューリング)とライフサイクルを自動化
- 宣言的設定
- YAMLで「あるべき姿」を書き、コントローラが実際の状態を継続的に収束させる
- 拡張性
- CRD(CustomResourceDefinition)でAPIを拡張し、独自コントローラを書ける
💡 最新安定版は1.33系(2025年7月時点)です。
4 ヶ月ごとにマイナーリリースが行われ、最新 3 つのバージョンが公式サポートされます。
学習環境の前提
| 項目 | 推奨値 |
|---|---|
| ホスト OS | macOS (Apple Silicon/Intel), Linux, WSL2 |
| 必要ツール | Docker 25.x 以上 / Podman, curl, make |
| メモリ | 8 GB 以上 |
| その他 | インターネット接続 |
※私の環境はMacBook Air M2 arm64 RAMは16GBです。
ローカルクラスタ構築
kind (Kubernetes IN Docker)
インストール
kindは公式Kubernetesプロジェクトがメンテナンスする最速ローカル環境です。
brew install kind
クラスタの作成
kind create cluster --name dev-cluster --image kindest/node:v1.33.2
作成を確認する場合
kubectl cluster-info --context kind-dev-cluster
Kubernetes control plane is running at https://127.0.0.1:64173
CoreDNS is running at https://127.0.0.1:64173/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
dev-cluster-control-plane Ready control-plane 49s v1.33.2 172.26.0.2 <none> Debian GNU/Linux 12 (bookworm) 6.12.5-linuxkit containerd://2.1.3
kubectl基本操作
# Pod の作成(nginx)
kubectl create deployment nginx --image=nginx:1.27
kubectl expose deployment nginx --port=80 --type=NodePort
# 一覧表示
kubectl get pods,svc,deployment
# ログ確認
kubectl logs -f deploy/nginx
ブラウザ確認
kubectl port-forward svc/nginx 8080:80
open http://localhost:8080
YAMLで作成
nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.27
ports:
- containerPort: 80
kubectl apply -f nginx-deploy.yaml
kubectl rollout status deploy/nginx
環境削除
# kind
kind delete cluster --name dev-cluster
参考リンク
- Kubernetes Release History https://kubernetes.io/releases/
- kind GitHub https://github.com/kubernetes-sigs/kind
Discussion