앱 코드에서 컨테이너 종료 처리
그러나 앱, 특히 컨테이너가 종료될 때 정리 코드를 실행하는 것은 간단하지 않습니다. 여기서 Linux Signals을 사용하여 빵 한 조각으로 두 마리의 새를 먹일 수 있습니다.
개인적으로 사용하는 신호는
SIGTERM
입니다. 이는 프로세스를 종료하려는 의도를 나타냅니다. 클라이언트 컨테이너가 종료될 때 운영 서비스에서 이 신호를 보냅니다. 이 신호를 포착하여 종료를 방지할 수 있지만 대부분의 서비스는 일정 시간이 지나면 앱 강제 종료 신호SIGKILL
를 보냅니다. 경우에 따라 구성할 수 있습니다.SIGTERM
를 사용하면 앱에서 다음을 수행할 수 있기 때문에 두 마리의 새에게 먹이를 줍니다.이렇게 하면 앱이 진행 중인 모든 작업을 종료할 시간이 있습니다. 그래서 그것은 어떻게 생겼습니까?
// javascript
process.on('SIGTERM', () => {
console.info('SIGTERM signal received.');
/**
* This is where cleanup code can be run. For example, closing down the http server.
*/
console.log('Closing http server.');
server.close(() => {
console.log('Http server closed.');
});
process.exit(0)
});
이 예제 스니펫은 nodejs 환경에서 실행되며
() => {...}
신호가 발생할 때 익명 함수SIGTERM
를 프로세스에 연결합니다. 정리 코드가 실행되고 이 예제에서는 http 서버이지만 임의의 서비스 시간일 수 있는 server
가 닫히고 process.exit(0)
가 실행됩니다.Note: Exit code
0
means the process exited successfully, any other exit code indicates an error of some type.
추가 자료
Kubernetes best practices: terminating with grace은 기간 확장 및 이러한 신호가 Kubernetes에서 작동하는 방식에 대한 추가 세부 정보와 함께 위의 내용과 많이 겹치는 훌륭한 기사입니다.
Reference
이 문제에 관하여(앱 코드에서 컨테이너 종료 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jonfriesen/handling-container-shutdowns-in-app-code-3e1n텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)