DevOps

이전에는 프로메테우스에 대해서 살펴보았다. 이번에는 node-exporter를 사용해서 리눅스 기반 운영체제를 모니터링 대시보드를 구축하는 방법에 대해서 살펴볼 것이다. 위 사진에 따라 exporter -> prometheus -> grafana의 순서대로 데이터가 흘러가는 구조를 설계할 예정이다. docker-compose 환경을 사용해서 대시보드를 띄울 것이다. 일반적으로 쿠버네티스를 사용하는 환경이라면 좀 더 다양한 exporter를 사용할 수 있겠지만, 이번 포스팅에서는 node-exporter를 이용해서 본인의 컴퓨터를 모니터링하는 대시보드를 소개하고자 한다. 더 나아가서 node-exporter이기 때문에, 다른 노드들을 추가할 수 있는 방법까지 다뤄보고자 한다. 본론먼저 전체 소스 코드의 링..
서버 개발자로서 꽤나 긴 시간동안 코딩을 하면서 지내고 있을 무렵, CPU 및 GPU 등 다양한 데이터를 수집하는 아키텍처를 구현해야할 일이 생겼다. slurm이라는 리눅스 노드들을 클러스터링하는 툴을 쓰고 있는 상황이었고, 어떻게 모니터링 할 수 있을 지 고민하기 시작했다. HPC managing하는 과정에서 결국 시계열 데이터를 수집하는 방법을 쓰기로 했고 그러한 과정에서 프로메테우스를 열심히 공부하기 시작했다. 마스터 노드가 셋, 워커 노드가 백 개에 달하는 시스템에서 CPU 및 GPU를 모니터링하는 작업을 수행하는 아키텍처를 구현하고 있을 때, 가장 먼저 떠오른 것은 뭔가 queue를 두고 node에서 데이터들을 쏘아보내는 곳이 있어야 하지 않을까? 하는 고민이었다. 메시지 큐를 써야 하나 생각하..
학교에서 HPC(High Performance Computer)를 관리하는 일을 하면서, 여러 난관에 봉착하게 되었다. 가장 신경 쓰였던 점은 사용자들에게 리눅스 기반의 접근을 제공하는데, 모든 사용자들을 커버할 수 없다는 점이다. 예를 들어 pytorch나 tensorflow 기반 사용자들을 고려하여 관련 모듈은 내부적으로 설치가 끝난 상황이지만, 다른 프로그램을 돌리는 사람이 몇몇 있다! 그러한 케이스의 사용자들을 커버하기 위해서 추가한 것은 바로 이 enroot라는 명령어이다. 이는 NVIDA에서 만든 툴로써 권한이 없는 상황에서도 docker image를 기반으로 컨테이너 혹은 OS를 만드는 데, 도움을 주는 sandbox 툴이다. 무엇보다 이름 그대로 enroot 즉, root를 만들어 준다는 ..
앞의 포스팅을 통해 라즈베리파이의 운영체제 설치 및 쿠버네티스 클러스터 환경 세팅이 끝났다. 이제 배포 지점이 될 클러스터의 세팅을 끝내고 본격적으로 CI/CD를 구현할 차례이다. 이번 포스팅에서는 깃허브에서 제공하는 Github Actions를 쓸 예정이다. 중간에 도커라이징하는 부분이 들어가는데, Dockerfile을 작성하는 방법에 대해서는 이번 포스팅에서 다루지 않는다. 관련하여 포스팅을 작성한 부분을 참고 링크로 달아두기만 하겠다. 참고 : https://marsboy.tistory.com/5 본론CI/CD란?CI/CD (Continuous Intergration/Continuous Delivery)는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법을 ..
저번 포스팅에서는 라즈베리파이에 OS를 깔고 기본적인 네트워크 세팅을 마쳤다. ssh를 통해서 다양한 호스트에 접속할 수 있게 되었을 것이다. 이번 포스팅에서는 각 라즈베리파이 호스트에 K8s의 경량화 버전인 K3s를 설치한다. 노드로 쓸 컴퓨터의 스펙은 라즈베리파이 4 4GB이다.  이번 포스팅에서는 K3s의 설치 과정에 대해서 마스터 노드와 워커 노드를 구분하여 포스팅할 예정이다. 본론Lightweight Kubernetes. Easy to install, half the memory, all in a binary of less than 100MB K3s는 쿠버네티스와 완전히 호환되며 결과적으로 가볍게 쿠버네티스를 사용할 수 있게 하기 위해 만들어졌다. Kubernetes가 10글자이기 때문에 절반으..
AWS를 통해 다양한 인프라 서비스를 접한 지 거의 일 년이 다 되어 간다. 프리티어 기간도 슬슬 끝나가고 있고, 이번 기회에 인프라에 대해서 좀 더 폭넓게 공부해 보고자 라즈베리파이로 쿠버네티스 클러스터를 구축하려고 계획 중이다. 또, 지금은 학사에 거주하고 있어 공과금을 내지 않기 때문에 라즈베리파이만 있다면 무료로 온프레미즈 환경을 구축할 수 있다! K8s homeserver 구축 시리즈는 통해서 집에서 라즈베리파이를 통해서 직접 K8s 환경 CI/CD를 구현하는 과정을 포스팅 할 예정이다. 라즈베리파이 설정부터 시작하여 점차 다양한 CI/CD 툴을 사용하여 인프라를 관리할 수 있게 하는 방법에 대해서 포스팅할 시리즈이다.  본론 인프라 구조 (0.1v)이번 포스팅에서는 가정용 공유기를 통해서 위와..
인프라에 대해서 공부하다보면 docker라는 기술을 많이 사용하는 것을 알 수 있는데, 과연 어떠한 이점이 있기에 도커를 사용하는 것일까? 다양한 장점이 있지만 어떤 프로그램을 다운로드하는 과정을 간단하게 만들기 위해서라고 생각한다. 물론 이 외에도 굉장히 많은 장점이 있다. 본론docker가 어떻게 다운로드 하는 과정을 간단하게 만들어 줘요?도커가 없다면 우리는 프로그램을 어떻게 다운로드할까? redis를 다운로드한다고 생각해보자. redis 인스톨러 다운로드인스톨러 실행프로그램 설치 완료 및 구동이러한 방식을 통해서 프로그램의 설치가 이루어진다. 실제로 redis를 설치하려고 한다면, redis.io 사이트 방문을 통해 인스톨러를 다운로드 하거나, homebrew라는 CLI 패키지 매니저를 사용해서 ..
본 포스팅은 어떻게 dockerfile을 작성할 것인지에 대해 실습하는 과정을 중점적으로 포스팅하였기 때문에, docker의 구조 및 자세한 설명은 생략한다. docker의 다운로드 등은 다른 포스팅을 참고하는 것을 권장합니다. What is a container?docker의 공식 문서에 따르면 컨테이너의 정의는 아래와 같다. A container is a sandboxed process running on a host machine that is isolated from all other processes running on that host machine. That isolation leverages kernel namespaces and cgroup features that have been in..
marsboy
'DevOps' 카테고리의 글 목록 (3 Page)