6.8.3. 컨테이너 및 이미지의 가비지 컬렉션 구성
관리자는 각 machine config pool마다 kubeletConfig 오브젝트를 생성하여 OpenShift Container Platform이 가비지 컬렉션을 수행하는 방법을 구성할 수 있습니다.
OpenShift Container Platform은 각 머신 구성 풀에 대해 하나의 kubeletConfig 오브젝트만 지원합니다.
다음 중 하나의 조합을 구성할 수 있습니다.
- 컨테이너 소프트 제거
- 하드 컨테이너 제거
- 이미지 제거
컨테이너 가비지 컬렉션은 종료된 컨테이너를 제거합니다. 이미지 가비지 컬렉션은 실행 중인 Pod에서 참조하지 않는 이미지를 제거합니다.
사전 요구 사항
다음 명령을 입력하여 구성할 노드 유형의 정적
MachineConfigPoolCRD와 연결된 라벨을 가져옵니다.$ oc edit machineconfigpool <name>예를 들면 다음과 같습니다.
$ oc edit machineconfigpool worker출력 예
apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfigPool metadata: creationTimestamp: "2022-11-16T15:34:25Z" generation: 4 labels: pools.operator.machineconfiguration.openshift.io/worker: ""1 name: worker #...- 1
- 레이블은 Labels 아래에 표시됩니다.
작은 정보라벨이 없으면 다음과 같은 키/값 쌍을 추가합니다.
$ oc label machineconfigpool worker custom-kubelet=small-pods
프로세스
구성 변경을 위한 사용자 정의 리소스 (CR)를 만듭니다.
중요파일 시스템이 한 개 있거나
/var/lib/kubelet및/var/lib/containers/가 동일한 파일 시스템에 있는 경우 가장 높은 값이 있는 설정은 먼저 충족되므로 제거가 트리거됩니다. 파일 시스템이 제거를 트리거합니다.컨테이너 가비지 컬렉션 CR의 설정 예:
apiVersion: machineconfiguration.openshift.io/v1 kind: KubeletConfig metadata: name: worker-kubeconfig1 spec: machineConfigPoolSelector: matchLabels: pools.operator.machineconfiguration.openshift.io/worker: ""2 kubeletConfig: evictionSoft:3 memory.available: "500Mi"4 nodefs.available: "10%" nodefs.inodesFree: "5%" imagefs.available: "15%" imagefs.inodesFree: "10%" evictionSoftGracePeriod:5 memory.available: "1m30s" nodefs.available: "1m30s" nodefs.inodesFree: "1m30s" imagefs.available: "1m30s" imagefs.inodesFree: "1m30s" evictionHard:6 memory.available: "200Mi" nodefs.available: "5%" nodefs.inodesFree: "4%" imagefs.available: "10%" imagefs.inodesFree: "5%" evictionPressureTransitionPeriod: 3m7 imageMinimumGCAge: 5m8 imageGCHighThresholdPercent: 809 imageGCLowThresholdPercent: 7510 #...- 1
- 오브젝트의 이름입니다.
- 2
- 머신 구성 풀에서 라벨을 지정합니다.
- 3
- 컨테이너 가비지 수집의 경우: 제거 유형:
evictionSoft또는evictionHard. - 4
- 컨테이너 가비지 수집의 경우: 특정 제거 트리거 신호를 기반으로 하여 임계값을 제거합니다.
- 5
- 컨테이너 가비지 컬렉션의 경우: 소프트 제거의 기간입니다. 이 매개변수는
eviction-hard에는 적용되지 않습니다. - 6
- 컨테이너 가비지 수집의 경우: 특정 제거 트리거 신호를 기반으로 하여 임계값을 제거합니다.
evictionHard의 경우 이러한 매개변수를 모두 지정해야 합니다. 모든 매개변수를 지정하지 않으면 지정된 매개변수만 적용되고 가비지 컬렉션이 제대로 작동하지 않습니다. - 7
- 컨테이너 가비지 수집의 경우: 제거 부족 상태에서 전환되기 전에 대기하는 시간입니다.
evictionPressureTransitionPeriod매개변수를0으로 설정하면 기본값인 5분이 구성됩니다. - 8
- 이미지 가비지 컬렉션의 경우: 가비지 수집에서 이미지를 제거하기 전에 사용되지 않는 이미지의 최소 사용 기간입니다.
- 9
- 이미지 가비지 컬렉션의 경우 이미지 가비지 수집은 디스크 사용량의 지정된 백분율로 트리거됩니다(정수로 표시됨). 이 값은
imageGCLowThresholdPercent값보다 커야 합니다. - 10
- 이미지 가비지 수집의 경우 이미지 가비지 수집은 디스크 사용량의 지정된 백분율(정수로 표시됨)에 리소스를 해제하려고 시도합니다. 이 값은
imageGCHighThresholdPercent값보다 작아야 합니다.
다음 명령을 실행하여 CR을 생성합니다.
$ oc create -f <file_name>.yaml예를 들면 다음과 같습니다.
$ oc create -f gc-container.yaml출력 예
kubeletconfig.machineconfiguration.openshift.io/gc-container created
검증
다음 명령을 입력하여 가비지 컬렉션이 활성화되었는지 확인합니다. 사용자 지정 리소스에 지정한 Machine Config Pool은 변경 사항이 완전히 구현될 때까지
UPDATING과 함께 'true'로 표시됩니다.$ oc get machineconfigpool출력 예
NAME CONFIG UPDATED UPDATING master rendered-master-546383f80705bd5aeaba93 True False worker rendered-worker-b4c51bb33ccaae6fc4a6a5 False True