분류 전체보기

잔디심는 정원사
[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 사용량이나 메모리 사용량 같은 리소스 메트릭을 주기적으로 ..
[LIS] 최장 증가 부분 수열
·CS/Algorithm
최장 증가 부분 수열(LIS, Longest Increasing Subsequence)란?원소가 n개인 배열의 일부 원소를 골라내서 만든 부분 수열 중, 다음 조건을 만족하는 수열이다.각 원소가 이전 원소보다 크다. (증가하고 있다)그 길이가 최대이다 예를 들어, { 6, 2, 5, 1, 7, 4, 8, 3} 이라는 배열이 있을 경우, LIS는 { 2, 5, 7, 8 } 이다. 구현 방법DP를 이용한 방법이분탐색을 이용한 방법 DP를 이용한 방법 알고리즘 설명간단하지만 시간복잡도가 O(n^2)로 이분탐색보다는 큰 알고리즘이다dp[i]:  i번째 인덱스에서 끝나는 최장 증가 부분 수열의 길이라고 한다면,주어진 배열에서 인덱스를 한 칸씩(i+=1) 늘려가면서 확인합니다.내부 반복문으로 i보다 작은 인덱스들을..
[백준] 2225번: 합분해 -JAVA
·ProblemSolve/BOJ
문제 바로 가기 > 2225번: 합분해 다이나믹 프로그래밍을 풀 수 있는 문제이다.알고리즘 풀이만약 입력에 예제처럼 6, 4가 주어졌다면6= 0(3번 더해서 0이 되는 경우) + 66= 1 (3번 더해서 1이 되는 경우) + 56= 2 (3번 더해서 2가 되는 경우) + 46= 3 (3번 더해서 3이 되는 경우) + 36= 4 (3번 더해서 4가 되는 경우) + 26= 5 (3번 더해서 5가 되는 경우) + 16= 6 (3번 더해서 6이 되는 경우) + 0 따라서 dp[K][N]: N이하의 정수를 K번 더해서 합이 N이 되는 경우의 수라고 한다면 위의 경우에는 다음과 같이 표현할 수 있다. dp[4][6]=dp[3][0]+dp[3][1]+dp[3][2]+dp[3][3]+dp[3][4]+dp[3][5]+d..
[백준] 4384번: 공평하게 팀 나누기 -JAVA
·ProblemSolve/BOJ
문제 바로 가기 > 4384번: 공평하게 팀 나누기0/1 냅색 알고리즘으로, DP로 풀 수 있다.이 문제는 '부분집합의 합' 문제의 변형으로 볼 수 있다. 우리의 목표는 전체 무게의 절반에 가장 가까운 부분집합을 찾는 것이다.2차원 boolean 배열 dp를 사용합니다.dp[i][j]는 i명의 사람을 선택하여 정확히 j 무게를 만들 수 있는지 여부를 나타낸다 (true/false)알고리즘1. dp 배열 초기화: dp[0][0] = true (0명으로 0kg을 만들 수 있음)2. 각 참가자에 대해:1명부터 전체 인원의 절반까지 선택하는 경우를 고려가능한 모든 무게 조합을 계산하여 dp 배열 갱신for(int i=0; i0; j--){ for(int k=totalWeight; k>=weights..
[백준] 11000번: 강의실 배정 - JAVA
·ProblemSolve/BOJ
문제 바로가기> 11000번: 강의실 배정 그리디 알고리즘으로, 우선순위 큐를 이용해서 풀 수 있다. 1 ≤ N ≤ 200,000이므로 브루트포스를 돌리면 당연히 시간초과가 난다. 따라서 정렬을 이용한 우선순위 큐를 이용해 그리디 알고리즘으로 풀어야 한다.  정렬 기준그렇다면 어떤 기준으로 정렬을 해야할까?처음에 필자는 종료시각을 기준으로 (빨리 끝나는 시각 순으로 오름차순) 정렬을 해서 틀렸다...시작 시각으로 정렬을 해야 앞에서부터 차곡 차곡 강의 간의 텀을 짧게 해 배정이 가능한 것이었다. 종료 시간을 우선순위 큐에 넣고 비교정렬 자체는 시작 시각을 기준으로 하였지만, 결국 어떤 강의가 들어갈 자리를 찾기 위해서는 종료시각과 비교를 해야 한다.따라서 그러기 위해서는 종료 시각을 담는 우선순위 큐가 ..
[백준] 20055번: 컨베이어 벨트 위의 로봇 - JAVA
·ProblemSolve/BOJ
문제 바로가기 > 20055번: 컨베이어 벨트 위의 로봇 단계마다 이동을 할 때 각 단계마다 다음 두 조건을 반드시 지켜야 한다.1. 로봇은 1번칸인 올리는 위치에서만 올릴 수 있다.2. 로봇은 N번칸인 내리는 위치에 도달하면 언제든지 내려야 한다. 각 단계마다 함수로 구현해준다. Step 1 . 벨트와 로봇 회전각 칸을 이동시켜준다로봇을 이동시켜준다이때, 위에 언급한 조건때문에 robot[N-1] (N칸) 위치와 robot[0] (1번째 칸) 위치를 false로 시켜줘야 한다.robot[N-1]=false: 내리는 위치에 도달하면 언제든 내려야 한다.robot[0]=false: 로봇은 올리는 위치에서 3번째 Step에서만 올릴 수 있지, 로봇이 2N칸에서 1칸으로 이동하면 안된다. public st..
minsu20
'분류 전체보기' 카테고리의 글 목록