전체 글 203

Resource Requests/Limits

Request pod를 생성할 때 필요한 Resource 최소치 Limits Pod가 사용할 수 있는 Resource 최대치 Throttling cpu가 과도할 때, 강제로 down 시킴 CPU Limit 넘어서는 경우, throttling 발생 우려 Memory Limit 넘어서는 경우, Pod 종료 apiVersion: v1 kind: Pod metadata: name: sample-pod labels: sample: app spec: containers: - name: sample-webapp-color image: simple-webapp-color ports: - containerPort: 8080 resources: requests: cpu: 1 memory: "1Gi" limits: cpu:..

Kubernetes 2024.02.13

서비스 API 카테고리(ExternalName)

서비스 API 카테고리 컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스 - 서비스 - ClusterIP - ExternalIP (ClusterIP의 한 종류) - NodePort - LoadBalancer - 그 외 서비스 기능 - Headless (None) - ExternalName - None-Selector - 인그레스 ExternalName 서비스 서비스명의 이름 해석에 있어 외부 도메인으로 CNAME을 반환한다. 사용 용도를 살펴보면, 다른 이름을 설정하고 싶은 경우 클러스터 내부에서의 엔드포인트를 쉽게 변경하고 싶을 경우에 사용한다. apiVersion: v1 kind: Service metadata: name: sample-externalname namespace: default s..

Kubernetes 2024.02.11

서비스 API 카테고리(Headless)

서비스 API 카테고리 컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스 - 서비스 - ClusterIP - ExternalIP (ClusterIP의 한 종류) - NodePort - LoadBalancer - 그 외 서비스 기능 - Headless (None) - ExternalName - None-Selector - 인그레스 Headless (None) 클라이언트가 Pod 1개가 아니라 모든 Pod 들과 통신해야 한다면요? 만약 같은 서비스 아래에 있는 Pod A 와 Pod B 가 서로 통신해야 한다면요? 다행히도, Kubernetes 는 클라이언트에게 Pod IP 리스트를 알려주는 방법을 DNS Lookup 을 통해 제공합니다. 보통의 서비스: Service의 DNS Lookup은 IP 주소 ..

Kubernetes 2024.02.11

서비스 API 카테고리(세션 어피니티)

서비스 API 카테고리 컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스 - 서비스 - ClusterIP - ExternalIP (ClusterIP의 한 종류) - NodePort - LoadBalancer - 그 외 서비스 기능 - Headless (None) - ExternalName - None-Selector - 인그레스 Session Affinity 서비스에서 세션 어피니티(세션 선호도)를 활성화할 수 있다. 예를 들어, ClusterIP 서비스에서 활성화한 경우, 파드에서 ClusterIP로 보내진 트래픽은 서비스에 연결된 어느 하나의 파드에 전송된 후 다음 트래픽도 계속 같은 파드에 보내진다. 상태(STATE) - 사용자가 로그인했는가? 그럼 해당 서비스를 이용할 수 있는 권한이 있다...

Kubernetes 2024.02.11

DocumentDB mongo셸로 DB 접근 및 Fail-over(장애 조치)

Mongo 셸 통해 DB 접근 참고 문서: https://docs.aws.amazon.com/ko_kr/documentdb/latest/developerguide/connect-ec2.html#connect-ec2.connect Amazon Linux에서 mongo 셸 설치 리포지토리 파일 생성 echo -e "[mongodb-org-5.0] \nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/amazon/2/mongodb-org/5.0/x86_64/\ngpgcheck=1 \nenabled=1 \ngpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc" | sudo tee /etc/yum.repo..

AWS/Project 2024.02.09

AWS Backup

AWS Backup 백업 계획 백업 시간과 백업 대상 리소스 등을 정의하는 정책 표현식이다. AWS Backup은 자동으로 백업 계획에 따라 자동으로 백업을 작성하고 유지한다. 유의할 점은 Daily 백업과 Monthly 백업을 함께 지정할 경우, Monthly 백업은 실행되지 않고, Daily 백업만 실행된다. 백업 볼트 백업에 대한 메타 데이터 저장소이다. 정상적인 백업 내역을 확인할 수 있는 부분이다. 유의할 점은 백업 계획당 백업 볼트 하나만 지정할 수 있으므로 백업 대상 리소스가 1개 초과일 경우에는 리소스별 백업 계획 및 백업 볼트를 각각 구성하는 것을 권장한다. 운영팀 입장에서, 모든 리소스에 대한 백업 내역을 한 대시보드로 관리하기는 어렵기 때문이다. 리소스 할당 IAM 기본 역할로 백업 ..

AWS/Service 2024.02.09

EC2의 user data를 사용해 Init Script 작성

참고 블로그: https://velog.io/@_woogie/EC2%EC%8B%9C%EC%9E%91%ED%95%A0-%EB%95%8C-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%9E%90%EB%8F%99%EC%8B%A4%ED%96%89%ED%95%98%EC%97%AC-%EC%84%9C%EB%B2%84-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0feat.-pm2 https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/user-data.html서버 재부팅시 자동으로 서비스 올라가는 스크립트를 작성할 것이다. ssh password 로그인 활성화#!/bin/bashsudo -ised -i 's/PasswordA..

Script/Bash 2024.02.09

Security Group(보안그룹)

공통 Source IP들을 대상으로 여러 포트를 Open해야할 경우, Source IP들을 리스트로 만들면 보안그룹을 만들때마다 일일이 지정하지 않고 한 번에 지정할 수 있어 편리하다. 이는 SG in SG 으로는 불가하고, Prefix List 를 생성하여 지정해야 했다. Managed Prefix List(관리형 접두사 목록) 접두사 목록의 최대 항목이 30인데, 처음에 생성될 때 접두사 목록을 2개만 작성해도 최대 사이즈인 30으로 잡히므로 접두사 목록 크기 조정으로 조정이 필요하다. 접두사 목록이 5개 항목이 있다고 가정할 경우, 단점은 보안그룹을 생성할 때, 규칙 하나에 포트와 접두사 목록을 연결한다면 규칙이 5개 (포트* 접두사 항목 수)로 카운팅 된다는 것이다. 그래서 보안그룹 내 규칙 갯수..

AWS/Service 2024.02.09

AWS ALB (Application LoadBalancer)

ALB 규칙을 사용해 http를 https로 리다이렉션다음은 ALB 리스너 및 규칙이다.크게 HTTP:80과 HTTPS:443으로 리스너를 구성하였다http로 들어온 트래픽은 https로 리다이렉션하기 위해 http:80으로 들어온 트래픽은 https로 리다이렉션한다. 다음은 HTTPS:443 리스너 규칙이다.기본값은 고정 응답 코드 200을 반환하도록 구성한다.400으로 구성할 경우, ALB HealthCheck할 때 정상적으로 확인이 안되므로 유의한다. ALB TargetGroup HealthCheck보통 개발자들에게 healthcheck 용 더미(웹페이지)를 제공 받는다.상태 검사 경로는 상대경로이다.서버 내 해당 트래픽 포트로 돌고 있는 응용 프로그램의 루트 경로에서부터 healthcheck 페이..

AWS/Service 2024.02.09