본문 바로가기

공부기록/MLOps | Infra

(16)
[k8s] Managing Application Logs Managing Application Logs 컨테이너 오케스트레이터를 사용하는 환경에서 로그를 수집할 때 주의해야할 점 중 하나는 특별한 상황을 제외하고는 로그를 로컬 디스크에 파일로 저장하지 않아야 한다. 전통적인 애플리케이션 운영환경에선 로그를 로컬 디스크에 저장하고 일정 시간 이상 저장하거나 일정 용량이 되면 오래된 로그를 삭제한다. -이런 방식은 지정된 장비에서 실행된다는 것을 가정하므로 문제 발생시 로그를 확인해야한다. 컨테이너 오케스트레이터를 사용하는 시스템이면 컨테이너가 상황에 따라 클러스터 안의 여러 노드를 옮겨다니기 때문에 로그를 일일히 확인하는 것이 어렵다. 따라서 어떤 클러스터의 노드 중 어떤 컨테이너가 실행되었는지를 확인해야 로그를 확인할 수 있다. 파드 로그 확인하기 kubect..
[k8s] Monitor Cluster Components Monitor Cluster Components Monitor 쿠버네티스에서 기본적인 시스템 메트릭인 CPU, Memory 부터 클러스터에 노드 수, 컨테이너 상태 등 많은 것을 모니터링 해야한다. 이런 것들을 모니터링하고 metric을 저장하고 분석하기 위한 솔루션이 필요한데 쿠버네티스는 이 모든것들을 제공하지는 않기 때문에 Prometheus, Metrics-Server, ELK, Datadog, Dynatrace같은 오픈소스 솔루션들이 필요하다. Heapster vs Metric Server Heapster는 kubenetes를 모니터링하기 위한 오리지널 프로젝트였지만 현재는 사용되지 않는다. Metric server는 쿠버네티스 모니터링 아키텍처에서 core metric pipeline을 효율적으..
[k8s] Kubernetes Monitoring Architecture Kubernetes Monitoring Architecture : 클러스터의 상태와 클러스터 안에 실행 중인 파드들을 모니터링 하는 방법에 대해 알아보자. system metrics service metrics core metric pipeline monitoring pipeline system metrics 노드나 컨테이너의 CPU, Memory utilization 같은 시스템 관련 메트릭 1.core metrics 쿠버네티스 내부 컴포넌트들이 사용하는 메트릭 현재 클러스터 안이나 내장 오토스케일링에서 사용할 수 있는 자원이 얼마인지 파악 kubectl top command에서 보여주는 cpu/memory 사용량, pod/container의 disk 사용량 등 2.non-core metrics k8s..
[k8s] Multiple Schedulers Multiple Schedulers node에 pod를 스케줄링하기 전에 custom condition을 체크하는 자체적인 스케줄링 알고리즘을 만들고 싶을 경우 default scheduler에 스케줄 프로그램을 deploy하거나 추가적인 scheduler를 쿠버네티스 클러스터에 추가할 수 있음 애플리케이션 마다 다른 스케줄러를 이용할 수 있다. 예를들어, 다른 app은 default를 사용하게하고, 특정 app은 custom scheduler를 사용할 수 있다. pod를 생성할 때 어떤 스케줄러를 사용할지 정의할 수 있다. Deploy Additional Scheduler kube-scheuler binary를 다운로드 받은 후 옵션과 함께 서비스로 실행한다. additional scheduler를 d..
[k8s] static pod Static pod 스태틱 파드란? kube-apiserver를 통하지 않고 kubelet이 직접 실행하는 파드 kubelet이 직접 관리하고, 이상이 생기면 재시작 지정한 디렉터리에서 yaml파일들을 kubelet이 읽고 파드를 생성하고, 계속 파드가 유지되도록 관리함 파드만 생성할 수 있고, replica나 deployment는 생성 못함 kubelet은 오직 pod level에서만 작동 kubelet이 실행중인 노드에서만 실행되고 다른 노드에서는 실행되지 않음 kube-apiserver는 조회는 할 수 있지만 스태틱파드에 어떤 명령을 실행할 수는 없음 kubectl get pods 명령어로 static pod도 조회 가능 kbuelet이 pod를 생성하면 kube-apiserver가 mirror o..
[kubernetes] 쿠버네티스 클러스터를 구성하는 도구 - Kubeadm, Kuberspray 쿠버네티스 클러스터를 구성하는 도구 Kubeadm 쿠버네티스에서 공식 제공하는 클러스터 생성 관리 도구 초기에는 고가용성을 갖춘 클러스터 구성이 어려워 테스트용으로 사용했지만 최근에는 점점 발전해 고가용성을 제공하는 클러스터 구성 가능 cf) 고가용성 High Availability: 서버와 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 지속적으로 정상 운영이 가능한 성질 Kubeadm에서 제공하는 클러스터 고가용성 구조 Kubespray 상용 서비스에 적합한 보안성과 고가용성이 있는 쿠버네티스 클러스터를 배포하는 오픈 소스 프로젝트 서버 환경 설정 자동화 도구인 앤서블 기반으로 개발 설정에 따라 다양한 형식의 클러스터 구성 가능 -> 온프레미스 환경에서 유용 Kuberspray에서 제공하는 ..
[kubernetes] 쿠버네티스 설치 - Kubespray 사용하기 Kubespray 사용 GCP를 사용하여 실습 환경을 구성하였다. VM인스턴스를 만든다. Compute Engine에 접속하여 VM인스턴스를 누른 후 [인스턴스 만들기]를 선택해 가상머신 인스턴스 5개를 만든다. 3개는 마스터로 사용하고, 2개는 워크노드로 사용하기 위함이다. 가용성을 위해 마스터노드를 보통 3개 정도 사용한다고한다. 1. SSH 키 생성과 배포 - 마스터 노드인 instance - 1 서버에서 다른 원격 접속(SSH)이 가능하도록 설정 인스턴스 목록에서 를 누르면 해당 서버에 SSH로 접속할 수 있다. RSA방식으로 암호화 키를 만들겠다는 옵션을 주면서 SSH키를 생성하는 명령어는 다음과 같다. ssh-keygen -t rsa ls -al .ssh/ .ssh 디렉터리 안에 id_rsa..
AWS ec2 Ubuntu 18.04에서 apache2로 django 프로젝트 배포 1. 경로 확인하기 아래와 같은 경로를 가진 프로젝트가 있다고 생각하고 배포 과정을 정리하려고한다. - Folder Name : /home/ubuntu/Example - Project Name : ExampleProject - Project Path : /home/ubuntu/Example/ExampleProject - Application Name : ExampleApp - Application Path : /home/ubuntu/Example/ExampleProject/ExampleApp - 가상환경 폴더 경로 : /home/ubuntu/Example/venv_ex - wsgi.py 위치 : /home/ubuntu/Example/ExampleProject/wsgi.py 2. settings 파이썬 파..

반응형