__ 1. 배경__ 쿠버네티스가 컨테이너 오케스트레이션 도구로 각광을 받은 이유 중 AI 환경에서의 편의성이 높은 점도 있다고 생각합니다. ML Pipeline 환경을 쿠버네티스에서 운영했을 때 학습, 관리, 배포를 모두 운영할 수 있습니다. 이러한 각각의 오픈소스(Notebooks, Katilb 등)를 조합해 플랫폼화 한 것이 Kubeflow입니다. 하지만 Kubeflow는 아직 많은 사례가 없고 사용이 어렵다는 단점이 있습니다(일반적인 AI 엔지니어 입장에서). 또한 Job을 관리하는 기능이 없기 때문에 이번에 Kubernetes를 통해 Job을 생성하는 API를 만드는 작업을 진행하였습니다. 현재 글에서 작성하는 Job은 AI pipeline에서 Model Training 부분에 속합니다. 일반적으..
분류 전체보기
1. 배경 Kubeflow를 설치한 후 생성된 파드를 보면 다양한 컴포넌트들이 존재하는 것을 확인할 수 있습니다. Kubeflow 기반의 플랫폼을 개발하거나 정확하게 Kubeflow를 사용하기 위해서 각 컴포넌트들의 역할과 동작과정에 대한 이해가 필요하다고 느꼈습니다. 이를 위해 순차적으로 컴포넌트들에 대해 공부한 내용을 기록하려 합니다. 2. Notebook 생성 방법 및 구조 일반 사용자가 Kubeflow에서 노트북을 사용하는 방식은 간단합니다. Dashboard에서 노트북 Menu에서 생성하여 접속해 사용할 수 있습니다. 자신의 Namespace에서 할당받은 가용 Resource(Memory, Cpu)를 분할해 사용할 수 있습니다. 노트북이 생성되면 해당 네임스페이스에서 pod가 생성된 것을 확인할..
외부접속이 안되는 폐쇄망에서 Kubernetes 클러스터 구성해야하는 작업이 생겨서 이를 위한 테스트를 진행하였습니다. 이를 위한 과정을 기록합니다. 이를 위해 EC2를 사용하여 클러스터를 구성하고 폐쇠망 환경을 구현하기 위해 아웃바운드 정책으로 80, 443를 제외하였습니다. 전체적인 설치 과정을 다음과 같습니다. Docker 설치 Kube-system 에 설치 되는 파드 이미지 load Kubeadm, Kubelet, Kubctl 설치 마스터 노드 join 워커 노드 Join 설치 환경은 다음과 같습니다. sudo 권한을 가진 Non-root user OS rhel 7.9 offline 환경 master 3대 worker 3대 kubernetes v1.21.9 클러스터 구성을 위해 열어줘야 하는 포트..
1.Overview Application 개발 환경을 셋업하면서 CI/CD 툴에 대한 고려가 나왔습니다. Jenkins는 가장 유명한 CI/CD 툴 중 하나로 Jenkins를 이용해 이미지 빌드 부터 Kubernetes에 배포까지 할 수 있습니다. Docker, Kubernetes를 위한 버전인 Jenkins X 가 있지만 기본 Jenkins로도 배포는 가능합니다. 그 외에 CD 툴로 Argo CD 를 많이 이용합니다. 쿠버네티스 배포를 위해서 매니페스트를 작성하는데 이 또한 버전 관리가 필요하기 때문에 이를 github 와 연결해 사용합니다. 쿠버네티스와 같은 CNCF에서 관리 되기 때문에 kubernetes config 관리, monitoring 등 호환이 잘 되는 것으로 알려져있습니다. 이번 글에서..
1. Kubeflow 설치 kubeflow의 경우 kubeflow manifest github를 통해 손쉽게 설치 할 수 있습니다. 우선 kubernetes cluster는 구성되어있다고 가정하고 kustomize를 설치해야됩니다. #kubeflow 1.4의 경우 kustomzie 4.x 버전에 호환이 안됩니다. wget https://github.com/kubernetes-sigs/kustomize/releases/download/v3.2.0/kustomize_3.2.0_linux_amd64 gmv kustomize_3.2.0_linux_amd64 /usr/local/bin/kustomize 이후 프로젝트를 clone 한 후 매니페스트를 적용하면 됩니다. 기본적으로 multi-user 기반 pipeli..
*1. Overview * 쿠버네티스 기반 AI Platform 개발을 마치고 운영하던 도중 kube-apiserver의 메모리 사용량이 지속적으로 증가하면서 Master node가 down 되는 현상이 반복되었습니다. 문제를 해결하기 위해 시도한 내용을 기록합니다. 회사 보안 상 문제 화면을 외부로 가져오지 못해 비슷하게 구현해 본 글에서 보이는 그림은 정확하지 않을 수 있습니다. 현재 클러스터의 버전 정보는 다음과 같습니다. kubernetes - v1.18.16 kube-apiserver,kube-scheduler,kube-proy - v1.18.16 etcd - v3.4.3 CoreDNS v1.6.7 kubeflow v1.2 물리적인 구성은 Master Node 3대, Worker Node 3대로..