1P by chcv0313 1달전 | ★ favorite | 댓글 9개

수십명이 공용으로 사용하는 서버가 있습니다.

각자 컨테이너로 프로젝트를 서빙하고 있는데,

서버의 재부팅 등의 이슈가 발생했을 때, 이 컨테이너들을 관리자가 어떻게 대응하기가 곤란합니다.

일일히 평소에 도커 컨테이너 실행 커맨드를 제출하라 해서 그걸 실행해 주어야 할지,
아니면 도커 컴포즈로 만들어서 일일히 프로젝트마다 폴더로 찾아 들어가서 컴포즈 업을 해주어야 할지 등등

관리자로서 여러 컨테이너를 어떻게 관리하는지 조언 부탁 드립니다.

저도 tujuc 님과 비슷한 생각인데, 숙련자 없이 혼자 k8s 를 도입해서 사고 없이 안정적으로 운영하는것은 리스크가 꽤 있다고 생각됩니다.

그런데 4개의 서버를 수십명이 공용으로 사용하는 상황이라고 하셔서 애매하긴 하지만,
연관 인원 수를 기준으로 하기보단, 서버 프로그램의 수가 너무 많고 복잡한 상황이라면 k8s 학습을 고려해보시는게 좋긴 하겠습니다..

만약 제가 작성자님과 같은 상황이라면 아래의 단계 별로 환경을 개선해 나갔을듯 합니다.

  1. 서버 프로그램들이 언제 꺼져도 문제가 없을수 있도록 조치 => graceful shutdown 구현, stateless 로 동작하도록 리팩토링 등의 내용이 포함. (또는 엔지니어들에게 요청)
  2. 서버 프로그램 컨테이너화 및 일반화 => 각 서비스 별 Dockerfile 및 docker compose 파일을 작성해서 동일한 명령어로 실행했을때 반드시 켜질수 있도록 강제합니다.
  3. 관리자 제외하고 다른 엔지니어가 서버에 접속 할 필요가 없도록 관리 => Jenkins/GitHub Actions/AWS CodePipeline 등 원하시는 CI/CD 플랫폼을 이용하여 GitOps 유사하게 구축이 가능합니다. 이정도만 달성해도 엔지니어들은 재배포/재부팅은 파이프라인을 다시 실행하는 수준에서 충분히 제어가 가능합니다.
  4. 이후 다른분들이 말씀하신것처럼 고도화(K8s 및 ArgoCD 등 도입)

답변 주신 모든 분들께 감사 드립니다. 올해 목표는 쿠버네티스 도입으로 잡아야겠습니다.

컨테이너를 데모나이즈 하여 OS 기동 시 컨테이너도 실행 되게 하는 것이 가장 간편합니다.

  • 재시작 전에 하나씩 정상 종료도 되고요.

EL (Enterprise Linux, RHEL 계열을 통칭) 계열이라면 컨테이너를 systemd 서비스 등록할 수 있습니다. Quadlet 이라고 하더라고요.

질문만 보면 depend on ,restart always 나 unless stoped 로 해결 가능해 보이는데 질문에 포함안된 어려운 상황이 있을것 같네요. 근데 수십명 정도면 결국 쿠버네티스로 가셔야 할듯 합니다

질문 그대로 AI에 물어도 답을 찾으실수 있을겁니다

  1. 인프라를 어디에 두셨나요? AWS? 직접 or 서버호스팅? Azure?
  2. 혼자서 관리하시나요?
  3. 지금은 어떤 상태로 작업하셨고, 어디까지 아시나요?

위의 내용이 있다면 더 쉽게 이야기가 기능할꺼같습니다.

단순히 말씀해주신것을 기준으로 답변드리다면....

컨테이너 실행 커멘드가 왜 필요한지 모르겠습니다. 컴포즈 파일을 만들어달라고 하시고, 그것을 기준으로 전부 동일한 커멘드(컴포즈 커멘드)로 띄울 수 있도록 구성하시는게 가장 좋습니다.

:) 관리자시니 그렇게 만들어달라고 하시면 다른 분들이 해주실꺼니 밀어붙이세요 :)

저는 k8s는 혼자서 관리하는 환경에서는 부담이 큰 솔루션이라 생각해서 별로 추천하지 않습니다.
언제든 인프라는 단순하게 구성하시는게 가장 좋다고 생각하고 있습니다.

온프레미스 서버 4대 입니다.
혼자 합니다.
보안 통과되어 회사에 도커가 도입된 지 이제 4개월째이고, k8s 는 개념만 압니다. 도커를 위한 HARBOR 도입은 곧 제가 수행해야 하고, 하버 도입되고 나면 도커허브는 차단될 예정입니다. 아마 저만 도커허브 열어놓고, 요청 들어오면 저만 도커허브에서 이미지 받아오고 사내
하버에 올리는 형식이 될 거 같습니다.

컴포즈 커맨드로 밀어붙이는 것, 프로젝트별로 폴더 찾아가서 일일히 컴포즈 업을 해주는 것이 비현실적이라 생각해서 하지 않았고, 대신 도커 커맨드를 절대경로로 달라고 했지만 최근들어 잘못된 접근법이라는 생각을 지울 수가 없습니다.

도커 재시작 옵션을 부여하면 되지 않나요?

이런 경우는 쿠버네티스 쓰시고 사용자마다 context 할당해주는게 좋습니다.
유저별로 해당 context만 사용 가능하게 권한 제한도 가능하고요

k8s를 사용합니다.