5.2. 컨테이너화된 서비스 문제 해결

오버클라우드 배포 중 또는 이후에 컨테이너화된 서비스가 실패하는 경우 다음 권장 사항을 사용하여 오류의 근본 원인을 확인합니다.

참고

이러한 명령을 실행하기 전에 오버클라우드 노드에 로그인하고 언더클라우드에서 이러한 명령을 실행하지 않았는지 확인합니다.

컨테이너 로그 확인

각 컨테이너는 메인 프로세스의 표준 출력을 유지합니다. 이 출력은 컨테이너 실행 중에 실제로 발생하는 상황을 확인하는 데 도움이 되는 로그 역할을 합니다. 예를 들어 keystone 컨테이너의 로그를 보려면 다음 명령을 사용합니다.

$ sudo podman logs keystone

대부분의 경우 이 로그는 컨테이너 오류의 원인을 제공합니다.

컨테이너 검사

컨테이너 정보를 확인해야 하는 경우가 있습니다. 예를 들어 다음 명령을 사용하여 keystone 컨테이너 데이터를 확인합니다.

$ sudo podman inspect keystone

이는 낮은 수준의 구성 데이터를 포함하는 JSON 오브젝트를 제공합니다. 출력을 jq 명령으로 전달하여 특정 데이터를 구문 분석할 수 있습니다. 예를 들어 keystone 컨테이너에 대한 컨테이너 마운트를 보려면 다음 명령을 실행합니다.

$ sudo podman inspect keystone | jq .[0].Mounts

또한 --format 옵션을 사용하여 단일 행에 대한 데이터를 구문 분석할 수 있으며 이는 컨테이너 데이터 세트에 대해 명령을 실행할 때 유용합니다. 예를 들어 keystone 컨테이너 실행에 사용된 옵션을 재생성하려면 --format 옵션과 함께 다음 inspect 명령을 사용합니다.

$ sudo podman inspect --format='{{range .Config.Env}} -e "{{.}}" {{end}} {{range .Mounts}} -v {{.Source}}:{{.Destination}}{{if .Mode}}:{{.Mode}}{{end}}{{end}} -ti {{.Config.Image}}' keystone
참고

--format 옵션은 쿼리를 생성할 때 Go 구문을 사용합니다.

podman run 명령과 함께 이러한 옵션을 사용하면 문제 해결 목적으로 컨테이너를 재생성할 수 있습니다.

$ OPTIONS=$( sudo podman inspect --format='{{range .Config.Env}} -e "{{.}}" {{end}} {{range .Mounts}} -v {{.Source}}:{{.Destination}}{{if .Mode}}:{{.Mode}}{{end}}{{end}} -ti {{.Config.Image}}' keystone )
$ sudo podman run --rm $OPTIONS /bin/bash

컨테이너에서 명령 실행

특정 Bash 명령을 통해 컨테이너 내부 정보를 가져와야 하는 경우가 있습니다. 이 경우에는 podman 명령을 사용하여 실행 중인 컨테이너 내에서 명령을 실행합니다. 예를 들어 keystone 컨테이너에서 명령을 실행하는 방법은 다음과 같습니다.

$ sudo podman exec -ti keystone <COMMAND>
참고

-ti 옵션은 대화식 가상 터미널(pseudoterminal)에서 명령을 실행합니다.

<COMMAND> 를 원하는 명령으로 바꿉니다. 예를 들어 각 컨테이너에는 서비스 연결을 확인하기 위한 상태 점검 스크립트가 있습니다. 다음 명령을 사용하여 keystone에 대해 상태 점검 스크립트를 실행할 수 있습니다.

$ sudo podman exec -ti keystone /openstack/healthcheck

컨테이너의 쉘에 액세스하려면 /bin/bash 를 명령으로 사용하여 podman exec 를 실행합니다.

$ sudo podman exec -ti keystone /bin/bash

컨테이너 내보내기

컨테이너가 실패하면 파일의 전체 콘텐츠를 확인해야 합니다. 이 경우 컨테이너의 전체 파일 시스템을 tar 아카이브로 내보낼 수 있습니다. 예를 들어 keystone 컨테이너 파일 시스템을 내보내려면 다음 명령을 실행합니다.

$ sudo podman export keystone -o keystone.tar

이 명령은 keystone.tar 아카이브를 생성하여 추출 및 확인할 수 있습니다.