Kubernetes: Pod Evicted
Kubernetesでリソース不足によりPodが退避されるエラーの原因と解決策
概要
ノードのリソース(メモリ、ディスク)が不足した際にPodが強制的に退避されるエラーです。
エラーメッセージ
``` Status: Failed Reason: Evicted Message: The node was low on resource: memory. Container app was using 2048Mi, which exceeds its request of 512Mi. ```
原因
- ノードのメモリ不足: memory.available < 100Mi
- ノードのディスク不足: nodefs.available < 10%
- Pod数過多: ノードのPod上限超過
- ephemeral-storageの超過
解決策
1. 退避の原因を確認
```bash kubectl describe node | grep -A5 Conditions kubectl get events –field-selector reason=Evicted ```
2. リソース要求を適切に設定
```yaml resources: requests: memory: “256Mi” ephemeral-storage: “1Gi” limits: memory: “512Mi” ephemeral-storage: “2Gi” ```
3. PriorityClassで重要なPodを保護
```yaml apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: high-priority value: 1000000 globalDefault: false description: “Critical pods”
apiVersion: v1 kind: Pod spec: priorityClassName: high-priority ```
4. eviction閾値を調整
```yaml
kubelet設定
evictionHard: memory.available: “200Mi” nodefs.available: “15%” evictionSoft: memory.available: “500Mi” evictionSoftGracePeriod: memory.available: “1m” ```
よくある間違い
- requests未設定でBestEffort QoS
- ログを大量出力してディスク圧迫
- 退避されたPodを手動削除しない
関連エラー
関連エラー
Kubernetes の他のエラー
この記事は役に立ちましたか?