21.2. 컨테이너 가비지 컬렉션
컨테이너 가비지 컬렉션은 기본적으로 활성화되어 있으며 제거 임계값에 도달하는 데 자동으로 수행됩니다. 노드는 API에서 액세스할 수 있는 모든 포드의 컨테이너를 유지하려고 합니다. pod가 삭제된 경우 컨테이너도 삭제됩니다. pod가 삭제되지 않고 제거 임계 값에 도달하지 않는 한 컨테이너는 보존됩니다. 노드가 디스크 부족 상태에 있으면 컨테이너가 제거되고 oc 로그를
통해 로그에 더 이상 액세스할 수 없습니다.
컨테이너 가비지 컬렉션 정책은 세 개의 노드 설정을 기반으로 합니다.
설정 | 설명 |
---|---|
| 컨테이너가 가비지 컬렉션에 적합한 최소 기간입니다. 기본값은 0입니다. 제한 없이 0 을 사용합니다. 이 설정의 값은 h (시간), m (분), s (초)와 같은 단위 접미사를 사용하여 지정할 수 있습니다. |
| 컨테이너당 유지할 이전 인스턴스 수입니다. 기본값은 1입니다. |
| 노드에서 총 종료된 컨테이너의 최대 수입니다. 기본값은 -1 이며 무제한을 의미합니다. |
충돌이 있는 경우 maximum-dead-containers
설정은 maximum-dead-containers-per-container
설정보다 우선합니다. 예를 들어 maximum-dead-containers-per-container
의 수를 유지하면 총 최대 컨테이너 수가 max-dead-containers보다 큰 경우
제한을 충족하기 위해 가장 오래된 컨테이너가 제거됩니다.
최대-dead-containers
노드가 종료된 컨테이너를 제거하면 해당 컨테이너 내의 모든 파일도 제거됩니다. 노드에서 생성된 컨테이너만 가비지 수집됩니다.
기본 설정을 사용하지 않으려면 적절한 노드 구성 맵 의 kubeletArguments
섹션에 이러한 설정 값을 지정할 수 있습니다. 아직 없는 경우 섹션을 추가합니다.
이러한 매개변수가 노드 구성 맵에 없는 경우 컨테이너 가비지 컬렉션은 기본값을 사용하여 수행됩니다.
컨테이너 가비지 컬렉션 설정
21.2.1. 삭제를 위해 컨테이너 감지 링크 복사링크가 클립보드에 복사되었습니다!
가비지 컬렉터 루프의 각 스핀은 다음 단계를 거칩니다.
- 사용 가능한 컨테이너 목록을 검색합니다.
-
실행 중이거나 활성 상태가
minimum-container-ttl-duration
매개변수보다 길지 않은 모든 컨테이너를 필터링합니다. 활성 상태가 아닌 컨테이너는 exited, dead, exit 상태가 될 수 있습니다. - Pod 및 이미지 이름 멤버십에 따라 나머지 모든 컨테이너를 동등한 클래스로 분류합니다.
- 식별되지 않은 모든 컨테이너(Kletlet에서 관리하지만 이름이 잘못된 형식)를 제거합니다.
-
max
-dead-containers-per-container
매개변수보다 많은 컨테이너가 포함된 각 클래스에 대해 생성 시간별로 클래스의 컨테이너를 정렬합니다. -
max
-dead-containers-per-container
매개 변수가 충족될 때까지 가장 오래된 컨테이너 제거를 시작합니다. -
목록에 max
-dead-containers
매개변수보다 많은 컨테이너가 있는 경우 수집기는 각 클래스에서 컨테이너를 제거하기 때문에 각 클래스의 컨테이너 수가 클래스당 평균 컨테이너 수 또는<all_remaining_containers>/<number_of_classes>
보다 크지 않습니다. -
충분하지 않은 경우 수집기는 목록에 있는 모든 컨테이너를 정렬하고
maximum-dead-containers
표준이 충족될 때까지 가장 오래된 컨테이너 제거를 시작합니다.
요구 사항에 맞게 기본 설정을 업데이트합니다.
가비지 컬렉션은 연결된 Pod가 없는 컨테이너만 제거합니다.