EKS-Pods mit temporärem Speicher werden ständig verdrängt

EKS-Pods mit temporärem Speicher werden ständig verdrängt

Ich arbeite an EKS v1.20.11-eks-f17b81 und habe ein Problem mit einem Java-Container auf Alpine-Basis. Grundsätzlich hat meine Bereitstellung die Grenzen des flüchtigen Speichers für die Anfragen und auch die Grenzen wie diese.

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

Die Pods werden nach ein paar Stunden alle im Status „Evicted“ sein, und ich verstehe nicht, warum, wenn ich mir den Ordner /var/lib auf den Knoten anschaue, dort viel Platz ist, auch wenn ich zu einem Pod gehe mitkubectl exec -ti POD -- shund ich mache so etwas wie „du -sch/“. Ich habe nie festgestellt, dass mehr als 300 MB verwendet werden. Was kann da passieren?

Antwort1

TLDR: Verwenden Sie entweder ephemeral-storageüberhaupt keine Limits oder verwenden Sie sie für alle Container im Pod.


Ich schätze, Sie haben keine ephemeral-storageGrenzen gesetzt füralle Containerin diesem bestimmten Pod. Der Eviction Manager summiert alle Grenzen der Container und setzt sie als Obergrenzeauf Pod-Ebene.

Das ist tatsächlichCode-Auszug:

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
}

Wie Sie sehen, werden sowohl podEphemeralStorageLimitEvictionals auch containerEphemeralStorageLimitEvictionzur Räumung verwendet. Zum Zeitpunkt des Schreibens verstehe ich nicht, „warum“ beide verwendet werden (und nicht nur Container 1).

verwandte Informationen