Skip to content

문제 해결 / 컨테이너가 정상적으로 실행되지 않음

1. Docker Stack 환경에서 컨테이너가 반복적으로 재시작됩니다

이 문제는 일반적으로 구성, 방화벽, 각종 화이트리스트 구성이 올바르지 않아 발생합니다.

구체적인 증상은 다음과 같습니다.

  1. 브라우저로 페이지를 열 수 없습니다
  2. sudo docker ps -a 명령으로 컨테이너 목록을 확인하면 컨테이너가 계속 재시작되고 있습니다
  3. 배포 서버 로컬에서 curl http://localhost:8088 실행 시 curl: (7) Failed to connect to localhost port 8088: Connection refused 오류가 반환됩니다
  4. 로그 파일에 오류 스택 정보가 계속 출력됩니다

가능한 원인 및 해결 방법:

가능한 원인 해결 방법
구성을 수동으로 수정했지만 구성에 오류가 있음 수정한 구성 파일을 확인하고 YAML 문법, 데이터베이스 연결 정보가 올바른지 확인
구성을 수정하여 외부 서버를 지정했지만 실제로 네트워크가 연결되지 않음 방화벽, Alibaba Cloud 보안 그룹 구성, 데이터베이스 연결 화이트리스트 등 구성을 확인
운영 체제와 호환성 문제가 있음 아래 운영 체제와 호환성 문제 참조
Redis가 현재 시스템의 page size를 지원하지 않음 아래 Redis가 현재 시스템의 page size를 지원하지 않음 참조

운영 체제와 호환성 문제

docker logs {Server 컨테이너 ID}를 사용하여 다음과 같은 오류 또는 유사한 오류가 발견되면:

Text Only
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
node[9]: ../src/node_platform.cc:61:std::unique_ptr<long unsigned int> node::WorkerThreadsTaskRunner::DelayedTaskScheduler::Start(): Assertion `(0) == (uv_thread_create(t.get(), start_thread, this))' failed.
 1: 0xb57f90 node::Abort() [node]
 2: 0xb5800e  [node]
 3: 0xbc915e  [node]
 4: 0xbc9230 node::NodePlatform::NodePlatform(int, v8::TracingController*, v8::PageAllocator*) [node]
 5: 0xb1b3d1 node::InitializeOncePerProcess(int, char**, node::InitializationSettingsFlags, node::ProcessFlags::Flags) [node]
 6: 0xb1bc89 node::Start(int, char**) [node]
 7: 0x7f2ca389fd90  [/lib/x86_64-linux-gnu/libc.so.6]
 8: 0x7f2ca389fe40 __libc_start_main [/lib/x86_64-linux-gnu/libc.so.6]
 9: 0xa93f0e _start [node]
Aborted (core dumped)

이는 현재 운영 체제 / 구성 요소가 Docker와 호환되지 않기 때문일 수 있습니다 (예: DataFlux Func 2.x에는 Docker 20.10.8이 포함되어 있으며 최신 버전의 운영 체제에서 문제가 발생할 수 있습니다).

다음 방법으로 해결할 수 있습니다.

DataFlux Func를 최신 버전으로 업그레이드하세요. 업그레이드 과정에서 설치 스크립트가 Docker 버전도 함께 업그레이드하도록 허용하세요. 자세한 내용은 배포 및 유지보수 / 업그레이드 및 재시작 / 시스템 업그레이드를 참조하세요.

최신 버전의 DataFlux Func에서도 위 문제가 여전히 발생하는 경우, 사용자가 Docker 공식 바이너리 실행 패키지를 직접 다운로드하여 최신 버전의 Docker로 업그레이드할 수도 있습니다.

다운로드는 Docker 공식 다운로드 https://download.docker.com/linux/static/stable/를 방문하세요.

또는 Alibaba Cloud 미러 사이트 https://mirrors.aliyun.com/docker-ce/linux/static/stable/

예를 들어 Ubuntu에서는 다음 명령으로 운영 체제 구성 요소를 업그레이드할 수 있습니다:

Bash
1
2
3
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade

Redis가 현재 시스템의 page size를 지원하지 않음

공식 Redis 이미지는 일부 ARM 버전 운영 체제에서 시작할 때 <jemalloc>: Unsupported system page size 오류가 발생합니다. 다음을 참조하세요.

2. Docker Stack 환경에서 컨테이너가 존재하지 않음

이 문제는 일반적으로 실행 환경이 올바르지 않아 발생합니다.

구체적인 증상은 다음과 같습니다.

  1. sudo docker stack ls를 실행하면 dataflux-func가 표시됩니다
  2. sudo docker ps -a를 실행해도 해당 컨테이너가 표시되지 않습니다
  3. sudo docker stack ps dataflux-func --no-trunc를 실행하면 컨테이너 상태가 비정상입니다

가능한 원인 및 해결 방법:

가능한 원인 해결 방법
시스템에 설치된 Docker가 Snap 버전인 경우 Snap 버전 Docker를 제거하고, 공식 경로의 Docker를 재설치하거나 스크립트에 포함된 Docker를 사용하십시오
기타 sudo docker stack ps dataflux-func --no-truncERROR 항목으로 확인할 수 있습니다

대표적인 예로 no space left on device는 디스크 공간 부족을 의미합니다

3. k8s 환경에서 컨테이너가 시작되지 않음

이 문제는 일반적으로 호스트 머신 / k8s 클러스터의 문제로 인해 발생합니다.

k8s에서 다음과 같은 오류가 발생할 수 있습니다:

Text Only
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Events:
  Type     Reason   Age                   From     Message
  ----     ------   ----                  ----     -------
  Warning  Failed   36m                   kubelet  Error: failed to start container "func-server": Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: process_linux.go:495: container init caused: rootfs_linux.go:60: mounting "/home/cce/kubelet/pods/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/volume-subpaths/user-config/func-server/1" to rootfs at "/home/cce/docker/overlay2/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/merged/data/user-config-template.yaml" caused: no such file or directory: unknown
  Warning  Failed   36m                   kubelet  Error: failed to start container "func-server": Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: process_linux.go:495: container init caused: rootfs_linux.go:60: mounting "/home/cce/kubelet/pods/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/volume-subpaths/user-config/func-server/1" to rootfs at "/home/cce/docker/overlay2/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/merged/data/user-config-template.yaml" caused: no such file or directory: unknown
  Warning  Failed   36m                   kubelet  Error: failed to start container "func-server": Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: process_linux.go:495: container init caused: rootfs_linux.go:60: mounting "/home/cce/kubelet/pods/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/volume-subpaths/user-config/func-server/1" to rootfs at "/home/cce/docker/overlay2/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/merged/data/user-config-template.yaml" caused: no such file or directory: unknown
  Normal   Created  35m (x5 over 118d)    kubelet  Created container func-server
  Warning  Failed   35m                   kubelet  Error: failed to start container "func-server": Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: process_linux.go:495: container init caused: rootfs_linux.go:60: mounting "/home/cce/kubelet/pods/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/volume-subpaths/user-config/func-server/1" to rootfs at "/home/cce/docker/overlay2/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/merged/data/user-config-template.yaml" caused: no such file or directory: unknown
  Normal   Pulled   33m (x6 over 118d)    kubelet  Container image "dataflux-func.com/dataflux-func:2.7.0" already present on machine
  Warning  BackOff  2m8s (x157 over 36m)  kubelet  Back-off restarting failed container

특정 Func 서비스에서 다음과 같은 오류가 발생할 수 있습니다:

Text Only
1
2
3
4
5
6
Traceback (most recent call last):
File "get-config.py", line 11, in <module>
CONFIG = yaml_resource.load_config(os.path.join(BASE_PATH, './config.yaml'))
File "/usr/src/app/worker/utils/yaml_resources.py", line 83, in load_config
user_config_content = _f.read()
OSError: [Errno 5] Input/output error

이것은 DataFlux Func의 문제가 아닙니다, 호스트 머신 / k8s 클러스터를 확인하시고, NAS 사용과 관련된 경우 NAS에 문제가 있는지도 확인하십시오.