Kubernetes

· Kubernetes
1. Overview 쿠버네티스에서 Deployment를 생성하면서 안정적인 서비스 유지를 위해 여러 개의 파드로 구성할 때가 있습니다. 이는 보통 Replicas를 2개 이상으로 설정해 파드를 여러 개 생성하여 하나의 파드가 문제가 생겨도 정상적으로 서비스가 동작할 수 있도록 합니다. 하지만 Deployment Spec에서 Replicas 개수만 늘릴 경우 하나의 노드에서 여러 개의 파드가 생성되는 경우가 있습니다. 그럴 경우 생성된 노드가 다운이 될 경우 서비스에 문제가 생깁니다(다른 노드에 바로 배포가 되지만 배포가 되기까지의 시간이 걸리기 때문에 무중단이 불가). 그렇기 때문에 일반적으로 여러 노드에 파드를 분산하여 배포하도록 설정합니다. 이를 위해 파드 스케줄링 방법과 이를 외부에서 접근하기 위..
· Kubernetes
멀티 클러스터와 많은 서버가 구축되어 있을수록 사용자 접근에 대한 관리가 더욱 어려워집니다. 이에 대하여 효율적인 관리를 위해 Access Management로 Teleport를 사용하기 위해 테스트한 내용을 기록합니다. Teleport는 안정적으로 Infrastructure에 접근하도록 관리해 주는 설루션입니다. Teleport를 이용하여 SSO 인증이나 Two factor 인증을 통해 SSH로 접속하기 위한 Node(서버), Kubernetes Cluster, Database, Web application 등을 관리하며 해당 리소스에 접근할 수 있습니다. 1.Teleport Component Teleport Auth Service: 클러스터 인증기관, 리소스에 접근하기 위해 클라이언트에게 인증서 발급..
· Kubernetes
__ 1. 배경__ 쿠버네티스가 컨테이너 오케스트레이션 도구로 각광을 받은 이유 중 AI 환경에서의 편의성이 높은 점도 있다고 생각합니다. ML Pipeline 환경을 쿠버네티스에서 운영했을 때 학습, 관리, 배포를 모두 운영할 수 있습니다. 이러한 각각의 오픈소스(Notebooks, Katilb 등)를 조합해 플랫폼화 한 것이 Kubeflow입니다. 하지만 Kubeflow는 아직 많은 사례가 없고 사용이 어렵다는 단점이 있습니다(일반적인 AI 엔지니어 입장에서). 또한 Job을 관리하는 기능이 없기 때문에 이번에 Kubernetes를 통해 Job을 생성하는 API를 만드는 작업을 진행하였습니다. 현재 글에서 작성하는 Job은 AI pipeline에서 Model Training 부분에 속합니다. 일반적으..
· Kubernetes
1. 배경 Kubeflow를 설치한 후 생성된 파드를 보면 다양한 컴포넌트들이 존재하는 것을 확인할 수 있습니다. Kubeflow 기반의 플랫폼을 개발하거나 정확하게 Kubeflow를 사용하기 위해서 각 컴포넌트들의 역할과 동작과정에 대한 이해가 필요하다고 느꼈습니다. 이를 위해 순차적으로 컴포넌트들에 대해 공부한 내용을 기록하려 합니다. 2. Notebook 생성 방법 및 구조 일반 사용자가 Kubeflow에서 노트북을 사용하는 방식은 간단합니다. Dashboard에서 노트북 Menu에서 생성하여 접속해 사용할 수 있습니다. 자신의 Namespace에서 할당받은 가용 Resource(Memory, Cpu)를 분할해 사용할 수 있습니다. 노트북이 생성되면 해당 네임스페이스에서 pod가 생성된 것을 확인할..
· Kubernetes
외부접속이 안되는 폐쇄망에서 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 클러스터 구성을 위해 열어줘야 하는 포트..
· Kubernetes
1.Overview Application 개발 환경을 셋업하면서 CI/CD 툴에 대한 고려가 나왔습니다. Jenkins는 가장 유명한 CI/CD 툴 중 하나로 Jenkins를 이용해 이미지 빌드 부터 Kubernetes에 배포까지 할 수 있습니다. Docker, Kubernetes를 위한 버전인 Jenkins X 가 있지만 기본 Jenkins로도 배포는 가능합니다. 그 외에 CD 툴로 Argo CD 를 많이 이용합니다. 쿠버네티스 배포를 위해서 매니페스트를 작성하는데 이 또한 버전 관리가 필요하기 때문에 이를 github 와 연결해 사용합니다. 쿠버네티스와 같은 CNCF에서 관리 되기 때문에 kubernetes config 관리, monitoring 등 호환이 잘 되는 것으로 알려져있습니다. 이번 글에서..
· Kubernetes
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..
· Kubernetes
*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대로..
seokbin
'Kubernetes' 카테고리의 글 목록 (2 Page)