Infra

잔디심는 정원사
[CKA 준비] Scheduling
·Infra/K8S
Pod를 수동으로 특정 Node에 배치하는 방법이 강의는 스케줄러 없이 Pod를 Node에 배치하는 방법을 설명함.보통 Kubernetes에서는 Scheduler가 어떤 Pod를 어떤 Node에 올릴지 결정함.그런데 다음과 같은 상황이 있을 수 있음.클러스터에 Scheduler가 없음기본 Scheduler를 쓰지 않고직접 Pod를 원하는 Node에 배치하고 싶음이럴 때 사용할 수 있는 방법을 이해하는 것이 이 강의의 핵심임.1. Scheduler는 원래 어떻게 동작하는가먼저 기본 동작부터 보면 이해가 쉬움.Pod 정의 파일에는 nodeName 이라는 필드가 있음. spec: nodeName: ... 그런데 일반적으로는 이 값을 직접 적지 않음.Pod를 생성할 때 보통 비워두고 생성함.왜냐하면 원래는 Sc..
[CKA 준비] Core Concepts - 3
·Infra/K8S
ServicesKubernetes Service란 무엇인가Kubernetes Service는 애플리케이션 내부와 외부의 컴포넌트 간 통신을 가능하게 하는 객체임.즉 Service의 역할은 다음과 같음.애플리케이션과 사용자 간 연결애플리케이션 내부 서비스 간 연결외부 데이터 소스와의 연결예를 들어 애플리케이션이 다음과 같이 구성되어 있다고 가정함.Frontend Pod 그룹 (사용자 요청 처리)Backend Pod 그룹 (비즈니스 로직 처리)외부 데이터베이스 연결이때 각 Pod 그룹 간 연결을 담당하는 것이 Service임.Service는 다음과 같은 역할을 수행함.사용자 → Frontend 연결Frontend → Backend 연결Backend → 외부 데이터 연결이렇게 마이크로서비스 간 느슨한 결합(l..
[CKA 준비] - Core Concepts - 2
·Infra/K8S
Yaml in KubernetsapiVersion:kind:metadata:specKindVersionPodv1Servicev1ReplicSetapps/v1Deploymentapps/v1Pod yaml 구조apiVersion: v1kind: Podmetadata: name: myapp-pod labels: app: myappspec: containers: - name: nginx-container image: nginx Pod 관련 명령어# Pod 목록 보기kubectl get podskubectl get pods -o wide# Pod 상세 보기kubectl describe pod # Pod YAML 초안 만들기kubectl run --image= --dry-run=clien..
[CKA 준비] Core Conecepts - 1
·Infra/K8S
Cluster Architecture아키텍처 구조 개요Kubernetes 클러스터는 크게 두 종류의 노드로 구성된다.Master Node (Control Plane)Worker NodeMaster Node1. etcdetcd와 통신하는 유일한 Kubernetes 컴포넌트는 kube-apiserver이다.고가용성 Key-Value 저장소클러스터의 모든 상태 정보 저장노드 정보Pod 정보설정 데이터메타데이터 등 2. kube-apiserver모든 요청의 진입점외부 사용자, 컨트롤러, kubelet 모두 이 API 서버를 통해 통신클러스터 전체를 오케스트레이션하는 중앙 관리 서버Controller-Manager / kube-scheduler / kubelet ↓ kub..
KEDA 필요성, HPA 와의 차이점
·Infra/K8S
Kubernetes를 운영하면서 가장 큰 장점 중 하나는 트래픽에 따라 파드(Pod)의 수를 자동으로 조절하는 Autoscaling 기능입니다. 우리는 보통 HPA(Horizontal Pod Autoscaler) 를 통해 이를 구현합니다. 하지만, CPU나 메모리 사용량은 낮은데 처리해야 할 작업(이벤트)이 쌓여 서비스가 지연되는 경험을 해보신 적이 있나요? 이번 글에서는 HPA의 한계를 짚어보고, 이를 보완하기 위해 등장한 KEDA(Kubernetes Event-driven Autoscaling)가 왜 필요한지, 그리고 둘의 차이점은 무엇인지 알아보겠습니다.HPA 란? HPA는 쿠버네티스의 기본 리소스 오토스케일러입니다.작동 원리: 주로 CPU 사용량이나 메모리 사용량 같은 리소스 메트릭을 주기적으로 ..
[Docker] Docker 사용하지 않는 도커 이미지 일괄 삭제
·Infra
리눅스 서버에서 볼륨 사용량이 높아지는 주요 원인 중 하나는 도커 이미지의 누적입니다. 불필요한 이미지를 정리함으로써 서버의 공간을 효과적으로 관리할 수 있습니다. 사용하지 않는 도커 이미지를 삭제하는 명령어는 다음과 같습니다 모든 중지된 컨테이너의 이미지 삭제 이 명령어는 모든 중지된 컨테이너에 사용된 이미지를 삭제합니다. 실행 중인 컨테이너의 이미지는 삭제되지 않습니다. docker rmi $(docker ps -a -q) 사용되지 않는 모든 이미지 삭제 이 명령어는 사용되지 않는 모든 이미지를 삭제합니다. -a 또는 --all 플래그는 모든 사용되지 않는 이미지를 포함하라는 의미입니다. docker image prune -a 특정 이미지 삭제 이 명령어는 지정된 이미지 ID에 해당하는 이미지를 삭제..
[Infra] Prometheus & Grafana를 이용해 서버 모니터링 구축하기
·Infra
Node-Exporter란? Node-Exporter는 서버의 하드웨어 및 OS 메트릭을 수집하는 오픈 소스 에이전트입니다. 이는 CPU, 메모리, 디스크 사용량, 네트워크 상태, 시스템 부하 등과 같은 다양한 서버 메트릭을 수집합니다. Node-Exporter는 Prometheus 모니터링 툴과 함께 사용되어 이러한 메트릭을 시각화하고 분석하는 데 도움을 줍니다. Prometheus란? Prometheus는 오픈 소스 모니터링 시스템으로, 시계열 데이터를 수집하여 저장하고, 규칙 기반의 경고와 쿼리를 실행할 수 있습니다. Prometheus는 다양한 소스에서 메트릭을 수집하는 여러 에이전트와 통합할 수 있는 강력한 도구로, 이 데이터를 활용하여 시스템의 건강 상태를 모니터링하고, 잠재적 문제를 신속하게..
[CI/CD] github actions, nginx, docker이용해서 blue-green 무중단 배포하기
·Infra/CI&CD
1. Blue_Green 배포란? 8080 포트로 연결된 컨테이너 8081포트로 다른 다른 버전의 컨테이너 띄우기 nginx.conf 수정후 reload (업스트립 8081 수정) 8080 컨테이너 제거 새로 배포할 때마다 새로운 컨테이너들을 띄우고 nginx 연결(upstream)을 새로 띄운 컨테이너 포트로 연결한 뒤 이전 컨테이너는 내립니다. ❗️뒤에 설명드릴때는 green이 8082, blue가 8081 포트입니다❗️ 2. github actions 작성 name: Deploy on: push: branches: [ master ] jobs: build: runs-on: ubuntu-latest env : working-directory: ./ APPLICATION: ${{ secrets.APPL..
[CI/CD] Github-Actions 할 때 Secrets에 Application 및 Key 파일 넣을 때 주의할 점
·Infra/CI&CD
[CI&CD] Spring boot 프로젝트를 Docker와 Github Action이용해서 자동배포하기 대략적인 그림은 이와 같다. 1. Dockerfile 작성 먼저, Dockerfile을 작성한다. Dockerfile은 Docker이미지를 빌드하기 위한 지시문을 포함한다. FROM openjdk:11-jdk ARG JAR_FILE=./build/libs/dashboardback-0.0.1-SNAPSHOT.jar CO minsu20.tistory.com 지난 게시글에서 나는 Secrets에 application.yml파일을 넣고 Github-Actions시에 그걸 생성해서 build하였다. 이번에도 그렇게 CI/CD를 구성하고 firebase-key.json도 secrets에 넣어서 applicato..
[CI/CD] Spring boot 프로젝트를 Docker와 Github Action이용해서 자동배포하기
·Infra/CI&CD
대략적인 그림은 이와 같다. 1. Dockerfile 작성 먼저, Dockerfile을 작성한다. Dockerfile은 Docker이미지를 빌드하기 위한 지시문을 포함한다. FROM openjdk:11-jdk ARG JAR_FILE=./build/libs/dashboardback-0.0.1-SNAPSHOT.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"] 2. AWS EC2 인스턴스 생성 AWS EC2콘솔에서 새로운 인스턴스를 생성한다. ↓이 블로그 참고 AWS EC2 인스턴스 생성하기 • 안녕하세요~ 이전에 운영하던 블로그 및 GitHub, 공부 내용을 정리하는 Study-GitHub 가 있습니다! • 네이버 블로그 • GitHub ..
minsu20
'Infra' 카테고리의 글 목록