반응형

2025/06 11

[Python] Greedy Algorithm

배수 관계에 놓여있는 동전이 주어졌을 때에는, 항상 큰 동전부터 이용하는 것이 좋음 -> greedy 알고리즘 동전더하기1. coins 를 큰 수가 앞이 오도록 reverse2. one of coins 으로 k 최대 몇 개 쓸 수 있는지 result에 추가 r += k // i 3. 앞 코인이 k 가져갔으니까 k갱신 k % in, k = map(int, input().split())coins = [int(input()) for _ in range(n)]# Please write your code here.result = 0coins.reverse()for i in coins: result += k // i # 해당 동전 (i) 몇 개 쓸 수 있는지 k = k % i# 남은 금액 갱신(기존 k..

DEV 2025.06.17

Lesson 4. Count 배열

연습count_arr = [0] * 7arr = list(map(int, input().split()))for i in arr: count_arr[i] += 1for i in range(1, 7): cnt = count_arr[i] print(f"숫자 {i} - {cnt}번") 1-9 개수 세기 1. cnt_arr 0으로 초기화, 원소 크기 n 입력받고 그 다음 줄에 arr 원소로 숫자 여러 개 입력 받기2. 입력받은 arr 배열에서 하나씩 1부터 9까지 해당하는 수를 cnt_arr에 넣기3. for문 이용해서 1~10까지 cnt_arr[1,2,3,...,9]를 cnt에 넣으면서 cnt 출력cnt_arr = [0] * 10n = int(input())arr = list(map(int, ..

DEV 2025.06.16

DevOps 스터디 - 포드를 사용하는 다른 오브젝트들 #2

AWS VPC CNI와 aws-node DaemonSet 이해하기 aws-node DaemonSet은 Amazon EKS에서 VPC CNI 플러그인을 설치하면 자동으로 각 노드에 배포되는 컴포넌트다.주요 역할은 Pod와 VPC 간 네트워크를 연결해주는 것이다. 먼저 잠시 Pod의 통신 흐름을 짚고 넘어가겠다. VPC 내부 통신: Pod끼리, 혹은 EC2와의 통신은 AWS의 로컬 라우팅 테이블을 따라 직접 연결된다. NAT나 SNAT 없이 동작한다.VPC 외부 통신: 외부로 나가는 트래픽은 노드에 설정된 iptables 규칙을 따라 Node IP로 SNAT 처리된다. 참고로 aws-node에는 L-IPAM(Local IP Address Management) 기능이 내장되어 있다. 이 기능은 Pod이 생성..

OPS 2025.06.15

DevOps 스터디 - 포드를 사용하는 다른 오브젝트들 #1

13.1 잡(Jobs)job특정 동작 수행하고 종료 해야하는 작업을 위한 오브젝트Completed가 상태가 되는 것을 목표(Pod의 컨테이너가 종료 코드 0 반환)restartPolicy는 명시적으로 Never 또는 OnFailure 지정항상 실행 중인 것을 목표로 하지 않기 때문에 배치, 데이터 가공시에 주로 사용cronJobs잡을 주기적으로 실행하는 오브젝트데이터 백업이나 이메일 전송 등 용도13.2 데몬셋(DaemonSets)DaemonSets모는 노드에 동일한 Pod를 1개씩 생성하는 오브젝트로깅, 모니터링, 네트워킹 용도로 주로 사용13.3 스테이트풀셋(StatefulSets)StatefulSetsDeployment에서 생성된 Pod는 랜덤한 이름이 붙는 반면에,StatefulSets의 경우 P..

OPS 2025.06.15

DevOps 스터디 - 커스텀 리소스와 컨트롤러 #2

Kubernetes는 기본적으로 Pod, Service, Deployment 같은 리소스를 제공하지만,자신만의 리소스 타입(Custom Resource)을 만들고 싶을 때 사용하는 확장 수단이 바로 CRD이다.대표적인 예로서 ArgoCD를 통해 CRD의 원리를 심화적으로 살펴보려 한다.왜 ArgoCD는 CRD를 사용할까?ArgoCD를 설치하면, 다음과 같은 Custom Resource들이 자동으로 생성됩니다:ApplicationAppProjectApplicationSet (옵션)이러한 리소스는 모두 ArgoCD가 정의한 CRD를 기반으로 만들어진 것이다.즉, ArgoCD는 Kubernetes의 선언적 관리 철학을 그대로 따라가며, Git에 선언된 Application CR을 기반으로 애플리케이션을 동기화..

OPS 2025.06.15

DevOps 스터디 - 커스텀 리소스와 컨트롤러 #1

12.1 쿠버네티스 컨트롤러의 개념과 동작 방식컨트롤러: k8s 리소스의 상태 변화를 감지하고 적절한 작업을 수행하도록 구현12.2 커스텀 리소스에 대한 개념커스텀 리소스 생성 단계CRD 리소스 생성CRD에 정의된 데이터에 맞춰 커스텀 리소스 생성1.에서 생성한 컨트롤러: 커스텀 리소스 생성 감지, 커스텀 리소스가 바람직한 상태가 되도록 적절한 작업 수행12.3 커스텀 리소스를 정의하기 위한 CRD(Custom Resource Definition)CRD YAMLCRD의 이름은 spec.names.plural + “.” + spec.group 형태로 지어야 함spec.scope: Cluster 또는 Namespaced 중 선택할 수 있다.$ cat my-crd-example-k8s-latest.yamlap..

OPS 2025.06.15

DevOps 스터디 - 애플리케이션 배포를 위한 고급 설정 #2

쿠버네티스 Pod 재시작 정책(restartPolicy), 어떻게 동작할까? 운영하다 컨테이너가 왜 자꾸 재시작되는지, 반대로 왜 한 번 죽고 나서 끝나는지 궁금할 때가 많았다. 이럴 때 확인해야할 설정이 restartPolicy 이다.쿠버네티스에서 restartPolicy는 "컨테이너가 종료되었을 때 kubelet이 재시작할지 말지"를 결정하는 정책인데, Pod 단위로 설정하며, 그 안에 있는 모든 컨테이너에 동일하게 적용된다. restartPolicy는 Pod 스펙에서 spec.restartPolicy 필드로 설정한다.apiVersion: v1kind: Podmetadata: name: example-podspec: restartPolicy: OnFailure containers: - n..

OPS 2025.06.15

DevOps 스터디 - 애플리케이션 배포를 위한 고급 설정 #1

11장: 애플리케이션 배포를 위한 고급 설정11.1 포드의 자원 사용량 제한클러스터 자원의 활용률을 높이기 위한 Overcommit 사용11.1.1 컨테이너와 포드의 자원 사용량 제한 : LimitLimit: 파드의 컨테이너가 최대로 사용할 수 있는 자원의 상한선cgroup 기술을 이용해 CPU, 메모리의 최대 사용량을 제한할 수 있음자원 할당량을 설정하지 않으면 Pod의 컨테이너가 노드의 물리 자원을 모두 사용할 수 있어 노드 자원이 고갈될 수 있음cpu: 1000m (밀리코어) = 1개의 CPU 뜻함k describe node 명령어Non-terminated Pods: 실행 중인 Pod의 자원 할당량따로 설정하지 않아도 kube-system NS Pod에는 기본적으로 CPU와 메모리가 할당됨각 파드의..

OPS 2025.06.15

Athena 특정 일자 LB 엑세스 로그 조회

개요실무에서 ELB 이슈가 발생할 때 LB 엑세스로그를 꼭 찾아보게 되는데, Athena를 이용하면 자료를 편하게 쿼리할 수 있다. Query editor에 넣을 쿼리문도 아래에 첨부했으니, , 만 각자의 환경에 맞게 치환해서 쓰자.방법Athena 특정일자 LB 엑세스 로그 조회1. Amazon Athena > Query editor > settings 쿼리 결과의 위치 등록 2. Amazon Athena > Query editor 에서 아래 쿼리를 넣고 RunCREATE EXTERNAL TABLE `alb_access_logs`( `type` string COMMENT '', `time` string COMMENT '', `elb` string COMMENT '', `client_ip` s..

OPS 2025.06.15
반응형