Kubernetes(k8s)はコンテナを大規模に管理・自動化するためのオーケストレーションツールです。クラウドネイティブ開発では必須のスキルです。
Kubernetesとは?
DockerなどのコンテナをGoogleが開発した自動化・スケーリング・管理するシステムです。
- 自動スケーリング:アクセス増加時にコンテナを自動で増やす
- 自己回復:コンテナが落ちたら自動で再起動
- ローリングデプロイ:無停止でアプリを更新
- ロードバランシング:複数コンテナへのリクエスト分散
基本概念(リソース)
| リソース | 説明 |
|---|---|
| Pod | 最小デプロイ単位(1つ以上のコンテナ) |
| Node | Podが動くサーバー(VM/物理サーバー) |
| Cluster | 複数NodeをまとめたKubernetes環境 |
| Deployment | Podのレプリカ数・更新方法を定義 |
| Service | Podへのネットワークアクセスを提供 |
| Namespace | リソースの論理的な区切り |
| ConfigMap | 設定値を外部化するオブジェクト |
| Secret | パスワード等の機密情報を管理 |
kubectlの基本コマンド
# リソース一覧表示
kubectl get pods
kubectl get deployments
kubectl get services
kubectl get nodes
# 詳細情報
kubectl describe pod my-pod
kubectl logs my-pod
# Podに接続
kubectl exec -it my-pod -- /bin/bash
# Deploymentのスケール変更
kubectl scale deployment my-app --replicas=3
# YAMLファイルを適用
kubectl apply -f deployment.yaml
kubectl delete -f deployment.yaml
Deployment YAMLの例
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3 # 3つのPodを起動
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:1.0
ports:
- containerPort: 3000
resources:
limits:
cpu: "500m"
memory: "128Mi"
マネージドKubernetesサービス
- EKS(AWS):AWSのマネージドKubernetes
- GKE(Google Cloud):Google CloudのKubernetes
- AKS(Azure):MicrosoftのKubernetes
- クラスターの管理をクラウドが代行してくれる
Kubernetesをエンジニアキャリアに活かす
CKA(Certified Kubernetes Administrator)やCKAD(Certified Kubernetes Application Developer)の資格がクラウドエンジニア・DevOpsエンジニアとして評価されます。
まとめ
KubernetesはDockerの次に学ぶべきインフラ技術です。EKS・GKEなどのマネージドサービスから始め、CKA資格取得でキャリアアップを目指しましょう。
📚 プログラミング初心者におすすめの本