임시 스토리지가 있는 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뿐만 아니라) 이해하지 못합니다.

관련 정보