7.4. 운영 체제 문제 해결

OpenShift Container Platform은 RHCOS에서 실행됩니다. 다음 절차에 따라 운영 체제와 관련된 문제를 해결할 수 있습니다.

7.4.1. 커널 크래시 조사

kexec-tools에 포함된 kdump 서비스는 크래시 덤프 메커니즘을 제공합니다. 이 서비스를 사용하여 이후 분석을 위해 시스템 메모리의 컨텐츠를 저장할 수 있습니다.

kdump 서비스는 기술 프리뷰 기능으로만 사용할 수 있습니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 https://access.redhat.com/support/offerings/techpreview/를 참조하십시오.

/ 모듈은 다음 어셈블리에 포함되어 있습니다.

7.4.1.1. kdump 활성화

RHCOS는 kexec-tools 패키지와 함께 제공되지만 kdump 서비스를 활성화하려면 수동 구성이 필요합니다.

절차

다음 단계를 수행하여 RHCOS에서 kdump 를 활성화합니다.

  1. 첫 번째 커널 부팅 중에 크래시 커널의 메모리를 예약하려면 다음 명령을 입력하여 커널 인수를 제공합니다.

    # rpm-ostree kargs --append='crashkernel=256M'
  2. 선택 사항: 크래시 덤프를 기본 로컬 /var/crash 위치가 아닌 다른 위치로 작성하려면 /etc/ kdump.conf 구성 파일을 편집합니다.

    참고

    LUKS를 사용할 때 네트워크 덤프가 필요합니다. kdump 는 LUKS 암호화 장치에서 로컬 크래시 덤프를 지원하지 않습니다.

    kdump 서비스 구성에 대한 자세한 내용은n /etc/sysconfig/kdump, /etc/kdump.conf, kdump.conf 메뉴얼 페이지의 주석을 참조하십시오. 덤프 대상 구성에 대한 자세한 내용은 RHEL kdump 문서를 참조하십시오.

  3. kdump systemd 서비스를 활성화합니다.

    # systemctl enable kdump.service
  4. 시스템을 재부팅합니다.

    # systemctl reboot
  5. kdump.service가 성공적으로 시작 및 종료하고 cat /sys/kernel/kexec_crash_loaded1을 출력하는 것을 확인하여 kdump가 크래시 커널을 로드하는지 확인합니다.

7.4.1.2. Day-1에 kdump 활성화

kdump 서비스는 노드별로 커널 문제를 디버그하도록 사용하도록 설정되어 있습니다. kdump를 활성화하는 데 드는 비용이 있고 추가 kdump 지원 노드마다 비용이 누적되므로 필요에 따라 kdump를 각 노드에서만 사용하도록 설정하는 것이 좋습니다. 각 노드에서 kdump를 활성화할 수 있는 비용은 다음과 같습니다.

  • 크래시 커널에 대해 예약된 메모리로 인해 사용 가능한 RAM이 줄어듭니다.
  • 커널이 코어를 덤프하는 동안 노드를 사용할 수 없습니다.
  • 크래시 덤프를 저장하는 데 추가 스토리지 공간이 사용됩니다.
  • kdump 서비스가 기술 프리뷰에 있기 때문에 프로덕션에 준비가 되지 않습니다.

kdump 서비스 활성화의 단점 및 장단점을 알고 있는 경우 클러스터 전체에서 kdump를 활성화할 수 있습니다. 시스템별 머신 구성은 아직 지원되지 않지만 MachineConfig 개체의 systemd 단위를 통해 이전 단계를 day-1에 수행하고 클러스터의 모든 노드에서 kdump를 사용하도록 설정할 수 있습니다. MachineConfig 개체를 생성하고 해당 개체를 클러스터 설정 중에 Ignition에서 사용하는 매니페스트 파일 세트에 삽입할 수 있습니다. Ignition 구성 사용 방법에 대한 자세한 내용은 설치 → 설치 구성 섹션의 " 노드 정의"를 참조하십시오.

절차

클러스터 전체 구성을 위한 MachineConfig 오브젝트를 생성합니다.

  1. 선택 사항: /etc/kdump.conf 구성을 기본값에서 변경하는 경우 MachineConfig 오브젝트에 콘텐츠를 포함하도록 base64 형식으로 인코딩할 수 있습니다.

    $ cat << EOF | base64
    path /var/crash
    core_collector makedumpfile -l --message-level 7 -d 31
    EOF
  2. 선택 사항: 구성을 기본값에서 변경하는 경우 /etc/sysconfig/kdump 파일의 내용을 작성하고 base64로 인코딩합니다.

    $ cat << EOF | base64
    KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug quiet log_buf_len swiotlb"
    KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory mce=off numa=off udev.children-max=2 panic=10 rootflags=nofail acpi_no_memhotplug transparent_hugepage=never nokaslr novmcoredd hest_disable"
    KEXEC_ARGS="-s"
    KDUMP_IMG="vmlinuz"
    EOF
  3. MachineConfig 오브젝트 파일을 생성합니다.

    $ cat << EOF > ./99-master-kdump-configuration.yaml
    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      labels:
        machineconfiguration.openshift.io/role: master 1
      name: 99-master-kdump-configuration
    spec:
      kernelArguments:
        - 'crashkernel=256M' 2
      config:
        ignition:
          version: 3.2.0
        storage:
          files:
            - contents:
                source: data:text/plain;charset=utf-8;base64,ICAgIHBhdGggL3Zhci9jcmFzaAogICAgY2...  3
              mode: 420
              overwrite: true
              path: /etc/kdump.conf
            - contents:
                source: data:text/plain;charset=utf-8;base64,S0RVTVBfQ09NTUFORExJTkVfUkVNT1ZFPS...  4
              mode: 420
              overwrite: true
              path: /etc/sysconfig/kdump
        systemd:
          units:
            - enabled: true
              name: kdump.service
    EOF
    1
    작업자 역할에 대한 MachineConfig 오브젝트를 생성하기 위해 master작업자 로 교체합니다.
    2
    크래시 커널용 메모리를 예약하기 위해 커널 인수를 제공합니다. 필요한 경우 다른 커널 인수를 추가할 수 있습니다.
    3
    base64 콘텐츠를 /etc/kdump.conf 용으로 만든 콘텐츠로 바꿉니다.
    4
    base64 콘텐츠를 /etc/sysconfig/kdump 용으로 만든 콘텐츠로 바꿉니다.
  4. 클러스터 설정 중에 YAML 파일을 매니페스트에 배치합니다. YAML 파일을 사용하여 클러스터 설정 후 이 MachineConfig 오브젝트를 생성할 수도 있습니다.

    $ oc create -f ./99-master-kdump-configuration.yaml

7.4.1.3. kdump 설정 테스트

kdump 내용은 RHEL 문서의 kdump 설정 테스트 섹션을 참조하십시오.

7.4.1.4. 코어 덤프 분석

kdump에 대한 내용은 RHEL 문서의 코어 덤프 분석 섹션을 참조하십시오.

참고

별도의 RHEL 시스템에서 vmcore 분석을 수행하는 것이 좋습니다.

추가 리소스