Menu Close

3.3.2. CRI-O 매개 변수를 편집하기 위한 ContainerRuntimeConfig CR 작성

특정 MCP(MCP)와 연결된 노드의 OpenShift Container Platform CRI-O 런타임과 관련된 설정을 변경할 수 있습니다. ContainerRuntimeConfig 사용자 지정 리소스(CR)를 사용하여 구성 값을 설정하고 MCP와 일치하도록 레이블을 추가합니다. 그런 다음 MCO는 업데이트된 값으로 연결된 노드에서 crio.confstorage.conf 구성 파일을 다시 빌드합니다.

참고

ContainerRuntimeConfig CR을 사용하여 구현된 변경 사항을 되돌리려면 CR을 삭제해야 합니다. 머신 구성 풀에서 레이블을 제거해도 변경 사항은 복구되지 않습니다.

ContainerRuntimeConfig CR을 사용하여 다음 설정을 수정할 수 있습니다.

  • PIDs limit: pidsLimit 매개변수는 컨테이너에 허용되는 최대 프로세스 수인 CRI-O pids_limit 매개변수를 설정합니다. 기본값은 1024 (pids_limit = 1024)입니다.
  • Log level: logLevel 매개변수는 로그 메시지의 상세 수준인 CRI-O log_level 매개변수를 설정합니다. 기본값은 info (log_level = info)입니다. 기타 다른 옵션에는 fatal, panic, error, warn, debug, trace가 포함됩니다.
  • Overlay size: overlaySize 매개변수는 컨테이너 이미지의 최대 크기인 CRI-O Overlay 스토리지 드라이버 size 매개 변수를 설정합니다. 기본값은 10 GB (size = "10G")입니다.
  • Maximum log size: logSizeMax 매개변수는 컨테이너 로그 파일에 허용되는 최대 크기인 CRI-O log_size_max 매개변수를 설정합니다. 기본값은 무제한입니다 (log_size_max = -1). 이 값이 양수로 설정되는 경우 ConMon 읽기 버퍼보다 작지 않게하려면 8192 이상으로 해야합니다. ConMon은 단일 컨테이너의 컨테이너 관리자 (예: Podman 또는 CRI-O)와 OCI 런타임 (예: runc 또는 crun) 간의 통신을 모니터링하는 프로그램입니다.

각 머신 구성 풀에 대해 해당 풀에 필요한 모든 구성 변경 사항이 포함된 하나의 ContainerRuntimeConfig CR이 있어야 합니다. 모든 풀에 동일한 콘텐츠를 적용하는 경우 모든 풀에 대해 하나의 ContainerRuntimeConfig CR만 있으면 됩니다.

기존 ContainerRuntimeConfig CR을 편집하여 새 CR을 생성하는 대신 기존 설정을 편집하거나 새 설정을 추가할 수도 있습니다. 새 ContainerRuntimeConfig CR을 생성하여 다른 머신 구성 풀을 수정하거나 임시로 변경하려는 경우에만 변경 사항을 되돌릴 수 있도록 하는 것이 좋습니다.

필요에 따라 여러 ContainerRuntimeConfig CR을 생성할 수 있습니다 (클러스터당 10 개 제한). 첫 번째 ContainerRuntimeConfig CR의 경우 MCO는 containerruntime으로 추가된 머신 구성을 생성합니다. 이후 각 CR을 통해 컨트롤러는 숫자 접미사가 포함된 새 containerruntime 머신 구성을 생성합니다. 예를 들어, -2 접미사가 있는 containerruntime 머신 구성이 있는 경우 다음 containerruntime 머신 구성에 -3이 추가됩니다.

머신 구성을 삭제하려면 제한을 초과하지 않도록 해당 구성을 역순으로 삭제해야 합니다. 예를 들어 containerruntime-2 머신 구성을 삭제하기 전에 containerruntime-3 머신 구성을 삭제해야 합니다.

참고

containerruntime-9 접미사가 있는 머신 구성이 있는 경우, 다음 머신 구성에 ContainerRuntimeConfig CR이 추가되고, containerruntime 머신 구성이 10 개 미만이어도 제한을 초과하여 실패합니다.

여러 ContainerRuntimeConfig CR 표시 예

$ oc get ctrcfg

출력 예

NAME         AGE
ctr-pid      24m
ctr-overlay  15m
ctr-level    5m45s

여러 containerruntime 머신 구성의 예

$ oc get mc | grep container

출력 예

...
01-master-container-runtime                        b5c5119de007945b6fe6fb215db3b8e2ceb12511   3.2.0             57m
...
01-worker-container-runtime                        b5c5119de007945b6fe6fb215db3b8e2ceb12511   3.2.0             57m
...
99-worker-generated-containerruntime               b5c5119de007945b6fe6fb215db3b8e2ceb12511   3.2.0             26m
99-worker-generated-containerruntime-1             b5c5119de007945b6fe6fb215db3b8e2ceb12511   3.2.0             17m
99-worker-generated-containerruntime-2             b5c5119de007945b6fe6fb215db3b8e2ceb12511   3.2.0             7m26s
...

다음 예제에서는 pids_limit를 2048로, log_leveldebug로 설정하고, overlay 크기를 8GB 로 설정하고, log_size_max를 무제한으로 설정합니다.

ContainerRuntimeConfig CR 예

apiVersion: machineconfiguration.openshift.io/v1
kind: ContainerRuntimeConfig
metadata:
 name: overlay-size
spec:
 machineConfigPoolSelector:
   matchLabels:
     pools.operator.machineconfiguration.openshift.io/worker: '' 1
 containerRuntimeConfig:
   pidsLimit: 2048 2
   logLevel: debug 3
   overlaySize: 8G 4
   logSizeMax: "-1" 5

1
머신 구성 풀 레이블을 지정합니다.
2
선택 사항: 컨테이너에 허용되는 최대 프로세스 수를 설정합니다.
3
선택 사항: 로그 메시지의 상세 수준을 설정합니다.
4
선택 사항: 컨테이너 이미지의 최대 크기를 지정합니다.
5
선택 사항: 컨테이너 로그 파일에 허용되는 최대 크기를 설정합니다. 양수로 설정하는 경우 8192 이상이어야 합니다.

절차

ContainerRuntimeConfig CR을 사용하여 CRI-O 설정을 변경합니다.

  1. ContainerRuntimeConfig CR의 YAML 파일을 생성합니다.

    apiVersion: machineconfiguration.openshift.io/v1
    kind: ContainerRuntimeConfig
    metadata:
     name: overlay-size
    spec:
     machineConfigPoolSelector:
       matchLabels:
         pools.operator.machineconfiguration.openshift.io/worker: '' 1
     containerRuntimeConfig: 2
       pidsLimit: 2048
       logLevel: debug
       overlaySize: 8G
       logSizeMax: "-1"
    1
    수정할 머신 구성 풀의 레이블을 지정합니다.
    2
    필요에 따라 매개변수를 설정합니다.
  2. ContainerRuntimeConfig CR을 생성합니다.

    $ oc create -f <file_name>.yaml
  3. CR이 생성되었는지 확인합니다.

    $ oc get ContainerRuntimeConfig

    출력 예

    NAME           AGE
    overlay-size   3m19s

  4. containerruntime 머신 구성이 생성되었는지 확인합니다.

    $ oc get machineconfigs | grep containerrun

    출력 예

    99-worker-generated-containerruntime   2c9371fbb673b97a6fe8b1c52691999ed3a1bfc2  3.2.0  31s

  5. 모두 준비 상태로 표시될 때까지 머신 구성 풀을 모니터링합니다.

    $ oc get mcp worker

    출력 예

    NAME    CONFIG               UPDATED  UPDATING  DEGRADED  MACHINECOUNT  READYMACHINECOUNT  UPDATEDMACHINECOUNT  DEGRADEDMACHINECOUNT  AGE
    worker  rendered-worker-169  False    True      False     3             1                  1                    0                     9h

  6. 설정이 CRI-O에 적용되었는지 확인하려면 다음을 실행합니다.

    1. 머신 구성 풀의 노드에 oc debug 세션을 열고 chroot /host를 실행합니다.

      $ oc debug node/<node_name>
      sh-4.4# chroot /host
    2. crio.conf 파일의 변경 사항을 확인합니다.

      sh-4.4# crio config | egrep 'log_level|pids_limit|log_size_max'

      출력 예

      pids_limit = 2048
      log_size_max = -1
      log_level = "debug"

    3. 'storage.conf' 파일의 변경 사항을 확인합니다.

      sh-4.4# head -n 7 /etc/containers/storage.conf

      출력 예

      [storage]
        driver = "overlay"
        runroot = "/var/run/containers/storage"
        graphroot = "/var/lib/containers/storage"
        [storage.options]
          additionalimagestores = []
          size = "8G"