본문 바로가기

Data science/MLOps21

[5분 컷 이해] Docker compose 이해하기 요약 도커 컴포즈는 다수의 컨테이너 어플리케이션을 정의하고(생성), 실행하는 툴을 의미한다. 이 도커 컴포즈는 간단히 하나의 텍스트파일(YAML 형식)을 작성해서, 여러개의 시스템을 실행하고, 종료, 폐기하여 컨테이너를 운용할 수 있는 툴이다[1] Docker-compose vs Dockerfile vs 쿠버네티스 1. 도커 컴포즈(docker-compose)은 다수의 컨테이너의 실행(run), 정지(stop), 삭제(rm)을 한번해 실행 시킬 수 있는 명령어(툴)이다. 또한, 컨테이너와 주변환경, 네트웤, 볼륨까지 한번에 생성할 수 있다. 즉 2. Dockerfile은 이미지를 만들기 위한 것이다. 도커 이미지 내에 여러 서비스를 넣어둘 수 있긴하지만, 동작상태의 컨테이너가 아닌 붕어빵 틀에 해당하는 .. 2022. 11. 4.
Docker: 파일 복사 및 볼륨 마운 요약 볼륨 마운트은 도커가 관리하는 시스템내 영역을 정의/생성해서, 해당 영역을 다른 컨테이너들이 공유할수 있도록 마운트하는 것이며, 이와 다르게 바인드 마운트은 도커가 관리하지 않는 호스트의 파일시스템에 다른 컨테이너들이 공유할 수 있도록 마운트하는 것이다. 바인드 마운트는 일반적인 리눅스의 디스크 마운트를 다른 서버에서도 쓸 수 있도록 1:N으로 마운트하는 것과 동일하다. 파일 복사 컨테이너와의 호스트 간의 파일의 복사는 방향이 중요하다. 도커에서는 컨테이너 -> 호스트, 호스트->컨테이너간의 양방향으로 파일을 복사가 가능하다 (이 때의 호스트는 "도커 엔진을 실행중인 PC을 의미한다). // 호스트 -> 컨테이너 $ docker cp 호스트경로 컨테이너명:컨테이너_내부경로 // 컨테이너 -> 호스트.. 2022. 11. 1.
쿠버네티스 오류 해결: The connection to the server localhost:8080 was refused - did you specify the right host or port 쿠버네티스에서 kubectl get pods 등 여러 명령어를 치더라도 아래와 같이 에러를 반환하는 경우가 있다. The connection to the server localhost:8080 was refused - did you specify the right host or port 원인: 마스터노드에서의 kubectl 관련 config가 설정이 되지 않았기 때문 쿠버네티스 초기화 내 config가 설정이 안되어있는 경우로 생각된다. 실제로 master 노드에서의 config을 확인해보면 아래와 같다. 해결방법1: (마스터노드만) kubeadm을 이용한 마스터노드의 초기화 쿠버네티스 kubeadm을 설치가 안되어있다면 설치가 필요하고, 설치했음에도 에러가 떴다면 초기화 해주는 과정이 필요하다. 설치를.. 2022. 7. 26.
[Kubernetes] Controller 이해하기 쿠버네티스의 컨트롤러는 특정 Pod의 수를 보장해주는 역할을 하는 자원을 의미한다. 아래의 쿠버네티스의 마스터노드(컨트롤플레인)가 어플리케이션을 각 노드에서 실행하고, 이를 각 etcd에서 제대로 수행되고 있는지 모니터링하다가 부족한 Pod은 더 실행해주고, 많은 Pod은 종료시켜주는 역할을 한다. 쿠버네티스의 컨트롤러의 종류 쿠버네티스 컨트롤러는 Replication controller, replicaset, deployment, daemonset등 여러가지가 있어서 헷갈린다. 이 자원들은 모두 다 컨트롤로에 속한다. 다만 각각의 자원들이 쿠버네티스가 발전해나감으로서 생긴 디테일의 차이(대동소이)한 것들이 있어서 몇가지 대표적으로 필요한 것들만 알아보면 좋다. 사용목적에 따른 대표적인 것들은 아래와 같.. 2022. 7. 26.
[Fullstack DP 2021] ML 프로젝트 시 고려사항, 실패하는 이유 의외로 다른 IT 프로젝트와 달리, 특히 AI 프로젝트의 성공율이 15%정도라고 한다. 왜 15%밖에 안되는 것인가? 해당 보고서에는 아래와 같이 설명하고 있다. ML은 아직 리서치 단계(연구단계)의 작업들이다. 따라서, 애초에 프로젝트 시에 무조건 된다는 버려야 한다. 기술적을 불가능한 문제를 푸려고 한다. 프로덕션 단계를 고려하지 않는다. ML 프로젝트의 성공여부가 불분명하다. 팀 관리가 안된다. Lifecycle (생애주기) ML project의 생애주기는 ML 프로젝트에 각각 무엇이 수행될 수 있는지에 관한 내용이다. 크게는 프로젝트 계획하기-> 데이터 수집 및 라벨링 -> 모델 학습 및 디버깅 -> 모델 적용 및 테스트로 구분된다. 이 단계가 무조건 1, 2,3,4의 순차적인 단계로 실행되는 것.. 2022. 7. 25.
Kubernetes: Pod 이해하기 (Init container, livenessProbe, Infra container, static pod) Pod(파드): 여러 컨테이너를 묶어 놓은 논리적인작업 단위이다. 파드 내에는 1개의 컨테이너가 존재할 수 있고, 여러 개의 컨테이너가 존재할 수도 있다. 1개만 존재하면 싱글 컨테이너 파드, 2개 이상 존재하면 멀티 컨테이너파드라고 부른다. 그럼 컨테이너는 무엇인가? 하나의 "어플리케이션"이라고 생각하면 된다. 파드에는 여러 개의 컨테이너가 존재할 수도 있기 때문에, 웹 서버 컨테이너, 로그 수집기, 볼륨(=디스크)을 묶어 하나의 파드로 구성할 수도 있다. 파드 사용하는 방법 파드를 사용하는 방법은 CLI(커멘드 명령의 인터페이스)로 실행시키는 방법이 있고, 아래의 그림과 같이 YAML포맷의 파일을 이용해서 생성하는 방법이 있다. metdata.name: 값에 해당하는 필드 및 필드명은 이 파드의 이름.. 2022. 7. 15.