一時ストレージを備えた EKS ポッドが頻繁に排除される

一時ストレージを備えた EKS ポッドが頻繁に排除される

私は EKS v1.20.11-eks-f17b81 で作業していますが、Alpine ベースの Java コンテナで問題が発生しています。基本的に、私のデプロイメントにはリクエストの一時ストレージの制限があり、次のような制限もあります。

- containerPort: 8080
  protocol: TCP
resources:
  limits:
    cpu: 2048m
    ephemeral-storage: 1300Mi
    memory: 4096M
  requests:
    cpu: 500m
    memory: 1024M
    ephemeral-storage: 1000Mi

数時間後にはポッドはすべてEvicted状態になりますが、その理由がわかりません。ノードの/var/libフォルダを見ると十分なスペースがあり、また、kubectl exec -ti POD -- shそして、私は du -sch / のようなことをしましたが、300MB 以上が使用されていることは一度もありませんでした。何が起こっているのでしょうか?

答え1

TLDR: 制限をまったく使用しないかephemeral-storage、ポッド内のすべてのコンテナで制限を使用します。


ephemeral-storage制限を設けていないようですすべてのコンテナその特定のポッドで。エビクションマネージャはコンテナのすべての制限を合計し、それを上限として設定しますポッドレベル

これは実際コードスニペット:

func (m *managerImpl) localStorageEviction(pods []*v1.Pod, statsFunc statsFunc) []*v1.Pod {
    evicted := []*v1.Pod{}
    for _, pod := range pods {
        podStats, ok := statsFunc(pod)
        if !ok {
            continue
        }

        if m.emptyDirLimitEviction(podStats, pod) {
            evicted = append(evicted, pod)
            continue
        }

        if m.podEphemeralStorageLimitEviction(podStats, pod) {
            evicted = append(evicted, pod)
            continue
        }

        if m.containerEphemeralStorageLimitEviction(podStats, pod) {
            evicted = append(evicted, pod)
        }
    }

    return evicted
}

ご覧のとおり、podEphemeralStorageLimitEvictionと は両方ともcontainerEphemeralStorageLimitEviction削除に使用されます。執筆時点では、なぜ両方が使用されるのか (コンテナ 1 だけではなく) がわかりません。

関連情報