본문 바로가기

About

(221)
AWS RDS 배포 옵션 정리 - (Multi-AZ Clusters vs Multi-AZ DB Instances vs Single DB Instance) AWS에서 RDS 상품을 신청할 때 위 사진과 같이 가용성 및 내구성 필드에서 배포 옵션을 설정해야합니다. 다중 AZ DB 클러스터 다중 AZ DB 인스턴스 단일 DB 인스턴스 이 세 가지 옵션에 대하여 어떤 차이가 있는지 간단하게 알아보겠습니다. 다중 AZ 클러스터(Multi-AZ Clusters) 특징 >공식문서 다중 AZ 클러스터 방식은 두 개의 Reader DB Instance(읽기 전용 인스턴스)와 한 개의 Writer DB Instance(기존 단일 인스턴스)로 구성되어 있습니다. 각각의 인스턴스를 세 개의 서로 다른 Availability Zone에 배치되어 있습니다. 데이터는 Writer DB Instance로 부터 다른 Reader DB Instance에 반동기식으로 복제됩니다. (공식 ..
[k8s] 쿠버네티스 파드 CPU 및 메모리 체크 방법 쿠버네티스 파드 CPU 및 메모리 체크 방법 소개 쿠버네티스(Kubernetes)는 대규모 컨테이너 관리 플랫폼으로, 파드(Pod)는 쿠버네티스에서 가장 작은 배포 단위입니다. 파드는 하나 이상의 컨테이너를 포함하고, 동일한 호스트에서 실행될 수 있습니다. 이 때문에 파드의 CPU 및 메모리 상태를 모니터링하는 것은 매우 중요합니다. 이번에는 파드의 CPU 및 메모리 상태를 체크하는 방법에 대해서 알아보겠습니다. 방법 1. kubectl top 명령어 kubectl top 명령어를 사용하면 쿠버네티스 클러스터에서 실행 중인 파드의 CPU 및 메모리 사용량을 쉽게 확인할 수 있습니다. # 파드의 CPU 및 메모리 사용량 확인 kubectl top pod # 파드가 실행되는 노드의 CPU 및 메모리 사용량 ..
[Docker] Docker 컨테이너 내에서 cron job 실행하는 방법 Docker 컨테이너 내에서 cron job 실행하는 방법 이 글에서는 Docker 컨테이너 내에서 cron job을 실행하는 방법에 대해 알아보겠습니다. 방법 Docker 컨테이너 내에서 cron job을 실행하는 방법은 크게 두 가지로 나뉩니다. 1. Dockerfile에서 cron 설정하기 Dockerfile에 cron 설정을 추가하여 이미지를 빌드하는 방법입니다. 이 방법은 이미지를 빌드할 때 cron job을 설정하여, 컨테이너가 시작될 때 cron이 실행되도록 할 수 있습니다. 다음은 Dockerfile에서 cron 설정 예시입니다. 1 2 3 4 5 FROM ubuntu RUN apt-get update && apt-get install -y cron COPY cronfile /etc/cro..
[Docker] Docker 빌드 컨텍스트 외부 파일 포함 방법 Docker 빌드 컨텍스트 외부 파일 포함 방법 Docker 빌드 컨텍스트란? Docker는 컨테이너 기반 가상화 기술을 사용하는 소프트웨어입니다. Docker를 사용하면 이미지를 만들고 이를 기반으로 컨테이너를 실행할 수 있습니다. Docker 이미지는 Dockerfile이라는 파일에 정의된 내용에 따라 빌드됩니다. Dockerfile은 Docker 이미지를 빌드하기 위한 스크립트 파일입니다. 이 파일 안에는 Docker 이미지를 빌드하는 데 필요한 모든 명령어와 파일이 포함되어 있습니다. Dockerfile을 빌드할 때, Docker는 현재 디렉토리를 빌드 컨텍스트로 사용합니다. 빌드 컨텍스트란 Dockerfile을 빌드하기 위해 필요한 파일들이 위치한 디렉토리를 의미합니다. 하지만 때로는 Docke..
[Docker] 이미지를 깨끗하게 재빌드하는 방법 도커 이미지를 깨끗하게 재빌드하려면 다음과 같은 단계를 따르면 됩니다. 1. 컨테이너 및 이미지 삭제 우선 해당 이미지를 사용하는 모든 컨테이너를 중지하고 삭제해야합니다. 이는 다음 명령을 통해 수행할 수 있습니다. docker stop [container_name] docker rm [container_name] 이미지를 직접 삭제하려면 다음과 같이 입력합니다. docker rmi [image_name] 2. 캐시된 빌드 삭제 이전 빌드에서 캐시가 사용될 가능성이 있으므로 빌드 캐시를 삭제해야합니다. 다음 명령을 사용하여 모든 캐시를 삭제할 수 있습니다. docker builder prune 3. 새로운 이미지 빌드 모든 이전 이미지 및 캐시가 제거되었으므로 새 이미지를 빌드할 수 있습니다. 다음 명령..
[백준 18119] 단어 암기 (C) https://www.acmicpc.net/problem/18119 18119번: 단어 암기 준석이는 영어 단어를 외우려고 한다. 사전에는 N가지 단어가 적혀 있다. 모든 단어는 소문자이다. 단어 안에 있는 모든 알파벳을 알 때, 그 단어를 완전히 안다고 한다. 다음과 같은 쿼리들이 주 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 #include #define MAX_N 10001 #define MAX_LEN 1001 int N, M; int arr[MAX_N] = { 0, }; int remember ..
[백준 2309] 일곱 난쟁이 (c++) https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 이 문제는 아홉 난쟁이들 중 7명을 뽑아(조합)하여 키의 합이 100인 경우를 찾는 문제입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 #include #include #include #include using namespace..
[Terraform] for_each 문법 및 사용 예시(Meta Argument) 이전 포스팅에서 Terraform의 count 문법에 대하여 알아보았습니다. 2022.06.11 - [About/DevOps] - [Terraform] Meta-Agument - count 테라폼에서 여러 리소스를 한 번에 생성하는 방법으로는 count와 for_each가 있는데 이번 포스팅에서 for_each에 대하여 다루어 보도록 하겠습니다. 자세한 정보는 Terraform 공식 문서에서 확인할 수 있습니다. https://www.terraform.io/language/meta-arguments/for_each The for_each Meta-Argument - Configuration Language | Terraform by HashiCorp The for_each meta-argument al..
[k8s][Error] Arm-AMD CPU 사이 문제 해결 - 파드 생성 시 CrashLoopBackOff, exec user process caused: exec format error 문제 에러 상황 Docker를 이용해서 개발한 서비스를 컨테이너로 빌드하였고, 레포지토리에도 push하였습니다. 이 이미지를 이용해서 쿠버네티스로 Deployment를 배포하였고 계속해서 CrashLoopBackOff -> Error -> CrashLoopBackOff 가 반복되는 상황 파드의 로그를 확인해보면 다음과 같습니다. standard_init_linux.go:228: exec user process caused: exec format error exec format error? 보통은 Dockerfile의 ENTRYPOINT, CMD 가 잘못 선언되었거나, 실행할 스크립트의 권한이 없는 등 도커 이미지를 컨테이너로 실행할 때 잘못 설정해서 생기는 문제라고 합니다. 하지만 local에서 해당 이미지를..
[Terraform] count 문법 (Meta-Agument) Terraform을 사용하면서 여러 개의 리소스를 생성해야하는 경우가 있습니다. 예를 들어 3개의 IAM User를 생성해야하는 경우 다음과 같이 Terraform 코드를 작성할 수 있다. provider "aws" { region = "ap-northeast-2" } resource "aws_iam_user" "user_1" { name = "user-1" } resource "aws_iam_user" "user_2" { name = "user-2" } resource "aws_iam_user" "user_3" { name = "user-3" } 하지만 생성해야하는 리소스의 수가 100, 1000개 등으로 많아질 경우에 Terraform 코드가 너무 길어질 수 있으며 소스코드가 복잡해지고 수정이 어려워..