Infra (9) 썸네일형 리스트형 [k8s] Pod Scheduling - Taint, Tolerations 란? Taint 란?- 특정 Node에 파드가 스케줄되는 것을 제한Tolerations 란?- Pod가 특정 Taint가 적용된 노드에서 실행하는 속성- ex) Platform 속성 pod 배포하기 위해, Service 노드에는 Taint를 설정하여 Tolerations과 Node Affinity(k8s가 pod를 특정 노드에 스케쥴링 하기 위해 사용하는 매커니즘) 설정이 있는 pod만 스케쥴링하고, Platform 노드에는 Taint를 설정하지 않고 일반 pod만 스케쥴링하는 방법 -> Node에는 Taint, Pod에는 Tolerations 설정 Nod Taint 설정- 카펜터 NodePool 설정 추가 - Node 매니페스트 확인 가능 apiVersion: karpenter.sh/v1beta1kind:.. Control groups, Name spaces, Union mount filesystem 컨테이너를 구성하는 3가지 주요 리눅스 기술 Control groups Name spaces Union mount filesystem cgroups(Control Groups) 프로세스들이 사용하는 시스템 자원의 사용 정보를 수집 및 제한 시키는 리눅스 커널 기능 제한 가능한 자원: CPU, Memory, Network, Device, Block I/O 사용 가능한 서브시스템 cpu - 스케줄러를 이용해 cgroup에 속한 프로세스 CPU 사용 시간을 제어 memory - 해당 cgroup에 속한 프로세스의 메모리 사용량에 대한 제어 freezer - cgroup의 작업을 일시 중지하거나 다시 시작 blkio - cgroup에 블록 장치에 대한 입력/출력 제한을 설정 net_cls - Linux 트래픽 .. Kubernetes Objects 정리 Pod란? Pod(파드)는 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위 쿠버네티스는 Pod 단위로 스케줄링, 로드밸런싱, 스케일링 등의 관리 작업을 수행 Pod는 Container 를 감싼 개념 하나의 Pod 은 한 개의 Container 혹은 여러 개의 Container 로 이루어져있을 수 있음 Pod 내부의 여러 Container 는 자원을 공유 Pod는 Stateless 한 특징을 지니고 있으며, 언제든지 삭제될 수 있는 자원 Deployment 란? Deployment(디플로이먼트)는 Pod와 Replicaset에 대한 관리를 제공하는 단위 관리라는 의미는 Self-healing, Scaling, Rollout(무중단 업데이트) 과 같은 기능을 포함 Deploymen.. 우분투 용량 부족 시 확인 및 조치 1. 에러 메세지 확인 $ kubectl get pod -A | egrep 'NAME|^auth|^cert-manager| ^istio-system|^knative-|^kubeflow' I0122 04:59:45.246253 46060 out.go:296] Setting OutFile to fd 1 ... log: exiting because of error: write /tmp/minikube_kubectl_2736ac89d995ade82e4d142 8b014cf1b3229cef7_0.log: no space left on device 2. Filesystem 용량 확인 $ df -hP Filesystem Size Used Avail Use% Mounted on ... /dev/mapper/ubuntu.. 윈도우에서 우분투 가상환경 띄우고 Minikube에서 Kubeflow 설치하는 방법 1. VMware Workstation 설치 2. New Virtual Machine > iso 선택 3. 1 processor / 4 core 4. vm 실행 5. mirror 사이트 변경 - http://mirror.kakao.com/ubuntu 6. ubuntu-lv 용량 변경 - 10.000G -> 18.222G 7. Install OpenSSH Server 체크 8. vm snapshot 만들기 (옵션) 9. 도커 설치 - docker docs 참고 https://docs.docker.com/desktop/install/ubuntu/ 10. minukube 설치 curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-l.. VM과 컨테이너 비교 Virtual Machines Containers 특징 저수준 하드웨어 장치(CPU, Disk, Network)를 가상화 애플리케이션 구동에 필요한 모든 종속성을 포함한 소프트웨어 패키지를 운영체제 위에서 가상화 장점 - 같은 서버에 다양한 운영체제를 실행 - 물리 머신 대비 동일한 자원을 더 효율적으로 사용 - 물리 머신 대비 빠른 서버 프로비저닝 - 컨테이너를 어느 환경에나 배포 가능 - OS를 부팅하거나 라이브러리를 로드할 필요가 없음 - 수 초 이내의 빠른 시작 시간 - 하나의 호스트에 더 많은 어플리케이션 실행 가능 - OS 패치 업데이트 등 유지 관리와 관련된 오버헤드 감소 단점 - OS 이미지, 라이브러리, 어플리케이션 등을 반복적으로 포함 - 컨테이너가 정의된 운영체제에 종속성 참고 Upl.. FastAPI 개발환경 도커에 올리는 방법 프로젝트 구성 파일/디렉토리 구조 . ├── app │ ├── __main__.py │ ├── kubestart.py │ └── main.py ├── Dockerfile ├── start.sh └── requirements.txtrequirements.txt fastapi==0.89.1 pydantic==1.10.4 uvicorn==0.20.0start.sh #!/bin/sh cp ./app/kubestart.py ./app/kubestart.py python -m appmain.py from typing import Optional from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from .kubestart i.. Cloud 클라우드 서비스 (AWS, GCP, Azure) Cloud 서비스를 사용하는 이유 웹, 앱 서비스를 만드는 경우 자신의 컴퓨터(localhost)로 서비스를 만들 수도 있음 IP로 누구나 접근할 수 있게 수정하고, IP를 공유하기 등 그러나 이런 경우 자신의 컴퓨터가 종료되면 웹, 앱 서비스도 종료됨 이런 경우 전통적인 접근 방법 물리적 공간, 확장성을 고려한 서버실을 만들고 운영 IDC(Internet Data Center) - 서버 컴퓨터를 넣을 공간 + 추후 서버를 추가할 때 즉각적으로 확장할 수 있는지 전기, 에어컨 등 서버가 급작스럽게 종료되지 않도록 준비가 필요함 갑자기 트래픽이 몰릴 경우, 컴퓨터 10대를 설치하기 어려움(자재 수급 이슈 등) 반대로 트래픽이 적어서 컴퓨터 10대를 없애기가 수월하지 않음 개발자가 직접 설정해야 했던 작업 .. 이전 1 2 다음