1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

v1.25 で StableになったLocal Ephemeral Storage ── emptyDir で容量制限? hostPath との違い&設定ポイントを一気に把握!

Last updated at Posted at 2025-06-23

── emptyDir で容量制限? hostPath との違い&設定ポイントを完全整理!

Kubernetes で「一時ファイルを入れ過ぎてノードがパンク!」──そんな事故を防ぐ手段が ephemeral-storage リミット です。

「emptyDir ってただのディレクトリでしょ? 本当に制限かかるの?」

という疑問があるはず。そこで本記事では 仕組み設定の勘所 を最新仕様でアップデートしてまとめます。

1. emptyDir vs hostPath ── “似て非なる” 二つのボリューム

emptyDir (Pod 破棄時に自動削除) hostPath (既存パスをマウント)
実体 /var/lib/kubelet/pods/... に kubelet が生成 ホストの任意パスをそのまま
使用量計測 kubelet が追跡(du 走査または project quota) 追跡対象外
ephemeral-storage リミット 適用される(ソフトリミット) 適用されない
emptyDir.sizeLimit 使える(ソフトリミット)
medium: "Memory" tmpfs としてハード制限 ※リソース種別はメモリ扱い
典型的用途 キャッシュ・一時ファイル・ログ ノード固有ツールの設定など特殊ケース

2. 制限はどうやって効くのか?

  1. YAML でリミットを宣言

    resources:
      limits:
        ephemeral-storage: "4Gi"      # コンテナ合算でソフトリミット
    volumes:
    - name: cache
      emptyDir:
        sizeLimit: 500Mi              # emptyDir 単体のサブリミット
    
  2. kubelet が使用量を計測

    • ext4 / XFS を prjquota 付きでマウントしている場合
      Filesystem Project Quota(現在 α 機能)で正確に計測
    • それ以外の場合
      → 一定間隔で du を走査し、目安値を取得
  3. 超過すると Eviction シグナル

    • ソフトリミットのため、一瞬のバーストは許容され得る
    • Evicted Pod はスケジューラや Deployment/Job コントローラの設定に従って再スケジュールまたは Failed 表示
  4. medium: "Memory" の emptyDir はガチ停止

    • tmpfs -o size=<sizeLimit> でマウントされ、サイズ超過時は物理的に書き込み不能
    • kubelet はこれをメモリ使用量として管理する点に注意

3. ワンポイント

落とし穴 対策
ノード共用ディスクが枯渇 kubelet eviction-hard 有効化を検討 (nodefs.available など)

4. まとめ

  • emptyDir なら ephemeral-storage リミットが効く(ソフトリミット)。hostPath には効かない

  • emptyDir.sizeLimit はサブリミット、medium: "Memory" はハードリミット(ただしメモリ扱い)

  • 計測は kubelet の du 走査

  • Eviction 後の Pod の再起動挙動はコントローラ依存。Failed で止まるケースもあるので要確認

  • 状況によっては CSI EphemeralVolume(ephemeral volume)も選択肢。使える環境・条件であれば Pod 単位で独立したボリュームを動的に確保でき、より柔軟に管理できるため推奨

関連資料

  • KEP-361 Local Ephemeral Storage Capacity Isolation (github.com)
  • KEP-1029 Quotas for Ephemeral Storage (Filesystem quota monitoring) (github.com)
  • KEP-1698 Generic Ephemeral Volumes (CSI-backed inline volumes) (github.com)
  • 公式ドキュメント – Ephemeral Volumes (kubernetes.io)
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?