KubernetesのNamespace・ResourceQuota・HPA実践|本番環境での安定稼働のための設定

現場実践|Kubernetes運用
KubernetesのNamespace・ResourceQuota・HPA実践|本番環境での安定稼働のための設定
「Kubernetesを本番で使うにはどんな設定が必要?」——Namespace・ResourceQuota・LimitRange・HPA(水平オートスケーリング)を使ったKubernetes本番環境の安定稼働のための設定を解説します。
💡 Kubernetesは設定次第でリソース枯渇・コスト爆発・ノイジーネイバー問題が発生します。ResourceQuota・LimitRange・HPAの3つを適切に設定することが本番環境の安定稼働の鍵です。
1. Namespaceで環境を分離
# Namespaceの作成
kubectl create namespace production
kubectl create namespace staging
kubectl create namespace development
# Namespaceを指定してPodを確認
kubectl get pods -n production
kubectl get all -n production
# デフォルトNamespaceを変更
kubectl config set-context --current --namespace=production2. ResourceQuotaでリソース上限を設定
apiVersion: v1
kind: ResourceQuota
metadata:
name: production-quota
namespace: production
spec:
hard:
requests.cpu: "10"
requests.memory: 20Gi
limits.cpu: "20"
limits.memory: 40Gi
pods: "50"ResourceQuotaを設定することで、特定のNamespaceが過剰なリソースを消費してクラスター全体に影響を与える「ノイジーネイバー問題」を防ぎます。
3. HPAで水平オートスケーリング
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: web-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: web-deployment
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 704. LimitRangeでPodのデフォルトリソースを設定
LimitRangeはNamespace内のPodにresources.requests・resources.limitsが設定されていない場合のデフォルト値を定義します。設定がないPodはリソース制限なしで動作してしまうため、LimitRangeでデフォルト値を設定することが本番環境の必須設定です。
📌 この記事のポイント
- Namespaceで環境(dev/stg/prod)を分離してリソースとアクセスの境界を明確にする
- ResourceQuotaでNamespaceごとのCPU・メモリ上限を設定してノイジーネイバー問題を防ぐ
- HPAでCPU使用率に応じてPodレプリカを自動スケールアウト・スケールインする
キャリアの疑問、一緒に解決しませんか?
Route Bloomでは、インフラ系ITエンジニアを目指す方への個別サポートを行っています。2026年7月からフリーランス講師として本格始動予定です。
ABOUT ME




