4.13.3. 컨테이너 및 이미지의 가비지 컬렉션 구성

관리자는 각 machine config pool마다 kubeletConfig 오브젝트를 생성하여 OpenShift Container Platform이 가비지 컬렉션을 수행하는 방법을 구성할 수 있습니다.

참고

OpenShift Container Platform은 각 머신 구성 풀에 대해 하나의 kubeletConfig 오브젝트만 지원합니다.

다음 중 하나의 조합을 구성할 수 있습니다.

  • 소프트 컨테이너 제거
  • 하드 컨테이너 제거
  • 이미지 제거

사전 요구 사항

  1. 구성하려는 노드 유형의 정적 MachineConfigPool CRD와 연관된 라벨을 가져옵니다. 다음 중 하나를 실행합니다.

    1. Machine config pool을 표시합니다.

      $ oc describe machineconfigpool <name>

      예를 들면 다음과 같습니다.

      $ oc describe machineconfigpool worker

      출력 예

      Name:         worker
      Namespace:
      Labels:       custom-kubelet=small-pods 1

      1
      레이블이 추가되면 Labels 아래에 표시됩니다.
    2. 라벨이 없으면 키/값 쌍을 추가합니다.

      $ oc label machineconfigpool worker custom-kubelet=small-pods

프로세스

  1. 구성 변경을 위한 사용자 정의 리소스 (CR)를 만듭니다.

    중요

    하나의 파일 시스템이 있거나 /var/lib/kubelet/var/lib/containers/ 가 동일한 파일 시스템에 있는 경우 값이 가장 높은 설정이 먼저 충족되므로 제거를 트리거합니다. 파일 시스템이 제거를 트리거합니다.

    컨테이너 가비지 컬렉션 CR의 설정 예:

    apiVersion: machineconfiguration.openshift.io/v1
    kind: KubeletConfig
    metadata:
      name: worker-kubeconfig 1
    spec:
      machineConfigPoolSelector:
        matchLabels:
          custom-kubelet: small-pods 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: 0s 7
        imageMinimumGCAge: 5m 8
        imageGCHighThresholdPercent: 80 9
        imageGCLowThresholdPercent: 75 10

    1
    오브젝트의 이름입니다.
    2
    선택기 라벨입니다.
    3
    제거 유형: evictionSoft 또는 evictionHard.
    4
    특정 제거 트리거 신호에 따른 제거 임계값입니다.
    5
    소프트 제거의 유예 기간입니다. 이 매개변수는 eviction-hard에는 적용되지 않습니다.
    6
    특정 제거 트리거 신호에 따른 제거 임계값입니다. evictionHard 의 경우 이러한 모든 매개변수를 지정해야 합니다. 모든 매개변수를 지정하지 않으면 지정된 매개변수만 적용되고 가비지 컬렉션이 제대로 작동하지 않습니다.
    7
    제거 부족 상태에서 전환하기 전에 대기하는 시간입니다.
    8
    가비지 컬렉션에 의해 이미지가 제거되기 전에 사용되지 않은 이미지의 최소 보존 기간입니다.
    9
    이미지 가비지 컬렉션을 트리거하는 디스크 사용량의 백분율 (정수로 표시)입니다.
    10
    이미지 가비지 컬렉션이 해제하려고 하는 디스크 사용량의 백분율 (정수로 표시)입니다.
  2. 오브젝트를 생성합니다.

    $ oc create -f <file-name>.yaml

    예를 들면 다음과 같습니다.

    $ oc create -f gc-container.yaml

    출력 예

    kubeletconfig.machineconfiguration.openshift.io/gc-container created

  3. 가비지 컬렉션이 활성화되어 있는지 확인합니다. 사용자 지정 리소스에 지정한 Machine Config Pool은 변경 사항이 완전히 구현될 때까지 UPDATING과 함께 'true'로 표시됩니다.

    $ oc get machineconfigpool

    출력 예

    NAME     CONFIG                                   UPDATED   UPDATING
    master   rendered-master-546383f80705bd5aeaba93   True      False
    worker   rendered-worker-b4c51bb33ccaae6fc4a6a5   False     True