728x90

분류 전체보기 362

[ElasticSearch] 인덱스, 샤드, 세그먼트, 타입, 매핑

인덱스인덱스는 데이터를 저장하는 가장 큰 논리적 단위로, 각 인덱스는 샤드로 나누어져 저장됩니다. 인덱스는 관계형 데이터베이스의 테이블과 유사하게, 각 인덱스는 특정 유형의 데이터를 저장하며 여러 문서 (document)의 집합으로 이루어져 있습니다. 각 문서는 JSON 형식으로 저장됩니다.인덱스의 구조와 설정인덱스는 클러스터 내에서 유일해야 하며, 중복된 이름의 인덱스를 생성할 수 없습니다. 이는 데이터 관리와 검색의 효율성을 높이기 위한 것입니다.만일 nginx의 액세스 로그를 수집한다면 nginx-access-log-YYYY.MM.DD 식의 이름을 사용하는 것을 추천합니다.타입과거 엘라스틱서치에서는 하나의 인덱스에 여러 타입 (Type)을 정의할 수 있었습니다. 타입은 서로 다른 데이터 유형을 하나..

[K8S] 테인트와 톨러레이션

테인트(Taints)테인트는 특정 노드에 파드가 스케줄링되지 않도록 노드 자체에 부여하는 속성입니다. 테인트는 일반적인 파드가 해당 노드에 스케줄링되는 것을 방지합니다. 테인트는 다음과 같은 세 가지 속성으로 구성됩니다:Key: 테인트의 키를 지정합니다.Value: 테인트의 값을 지정합니다.Effect: 테인트가 파드 스케줄링에 미치는 영향을 정의합니다.Effect는 다음 중 하나일 수 있습니다:NoSchedule: 톨러레이션이 없는 파드는 해당 노드에 스케줄링되지 않습니다.PreferNoSchedule: 가능하면 해당 노드에 스케줄링하지 않지만, 불가피할 경우 스케줄링됩니다.NoExecute: 해당 노드에 이미 스케줄 된 파드는 즉시 퇴거되며, 톨러레이션이 없는 새로운 파드는 스케줄 되지 않습니다.톨러..

DevOps/K8S 2024.10.14

[K8S] StatefulSet

StatefulSet은 Kubernetes에서 상태가 있는 애플리케이션을 관리하기 위한 리소스이다. StatefulSet은 각 파드가 고유한 네트워크 ID와 영구적인 스토리지를 유지하도록 보장하며, 파드의 생성 및 삭제 순서를 관리한다. 이는 데이터베이스, 분산 파일 시스템, 캐시 시스템 등과 같은 애플리케이션에 매우 유용하다.주요 특징고유한 네트워크 ID: 각 파드는 고유한 DNS 이름을 가지며, 이는 재시작 후에도 유지된다. 예를 들어, StatefulSet 이름이 mysql이고 replicas가 3인 경우, 파드 이름은 mysql-0, mysql-1, mysql-2로 고정된다.고유한 영구 스토리지: 각 파드에 대해 고유한 PersistentVolumeClaim을 생성하여, 파드가 삭제되거나 재시작되..

DevOps/K8S 2024.10.10

[K8S] Metric Server

Metrics Server는 Kubernetes 클러스터 내에서 자원 사용량을 집계하는 경량화된 서비스이다.  CPU나 메모리 사용량에 기반하여 파드의 수를 자동으로 조절하고 노드와 파드의 자원 사용량을 확인할 수 있다. Prometheus와 같은 복잡한 모니터링 솔루션과 달리, Metrics Server는 오토스케일링에 필요한 단기적인 메트릭 수집에 특화되어 있다.Metric Server 설치Metrics Server는 여러 가지 방법으로 설치할 수 있다. 가장 일반적인 설치 방법은 kubectl을 사용한 매니페스트 적용과 Helm 차트를 사용하는 방법이다.kubectl 사용kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/relea..

DevOps/K8S 2024.10.10

[K8S] MetalLB

MetalLB는 Kubernetes 클러스터에서 외부 트래픽을 서비스로 라우팅 하기 위한 로드 밸런서를 제공한다. 클라우드 환경에서는 클라우드 제공업체의 로드 밸런서 서비스를 활용할 수 있지만, 온프레미스나 베어메탈 환경에서는 이러한 서비스가 제공되지 않는다. 이때 MetalLB가 중요한 역할을 한다.MetalLB가 하는 일외부 IP 할당:MetalLB는 Kubernetes 서비스에 LoadBalancer 타입의 외부 IP를 할당한다. 이를 통해 외부 사용자가 클러스터 내의 서비스를 접근할 수 있도록 한다.트래픽 라우팅: 할당된 외부 IP로 들어오는 트래픽을 적절한 Kubernetes 노드 및 파드로 라우팅 한다. 이는 ARP(Address Resolution Protocol) 또는 NDP(Neighbo..

DevOps/K8S 2024.10.10

[Container] 호스트 디렉토리 마운트 시 Linux과 Mac 환경의 차이점

Docker는 다양한 운영체제에서 애플리케이션의 개발 및 배포를 용이하게 하는 강력한 도구다. 그러나 Linux과 Mac 환경에서 Docker가 호스트 디렉토리를 컨테이너에 마운트 할 때의 동작 방식에는 중요한 차이점이 존재한다. Linux에서는 호스트의 파일 시스템과 직접적으로 통합되어 높은 성능과 일관된 권한 관리가 가능하다. 반면, Mac에서는 가상 머신과 파일 시스템 매핑을 통해 이러한 권한 문제를 완화하지만, 파일 접근 속도에서 약간의 성능 저하가 있을 수 있다.Linux 환경에서의 DockerLinux는 Docker가 처음 개발된 플랫폼으로, Docker의 핵심 기능들이 가장 잘 지원된다. Linux에서 Docker는 호스트의 커널을 직접 사용하여 컨테이너를 실행한다. 이는 Docker가 매우..

DevOps/Container 2024.10.08

[K8S] 인그레스와 관련 리소스

정리인그레스 컨트롤러의 서비스를 붙여 노드포트로 오픈인그레스는 인그레스 컨트롤러의 설정 정보인그레스 컨트롤러가 라우팅 규칙을 따라 서비스들로 라우팅1. 인그레스인그레스(Ingress)는 Kubernetes에서 클러스터 외부와 내부 서비스를 연결하는 설정이다. 이는 사용자가 클러스터 내부의 서비스에 접근할 수 있도록 HTTP 요청의 라우팅 규칙을 정의한다. 인그레스는 단순한 설정일 뿐 실제로 요청을 처리하는 것은 인그레스 컨트롤러이다.1.1 인그레스의 주요 기능HTTP 경로 기반 라우팅: 특정 URL 경로에 대한 요청을 내부 서비스로 라우팅 할 수 있다.도메인 기반 라우팅: 여러 도메인에 대해 각각의 요청을 다른 서비스로 분산할 수 있다.TLS 종료: HTTPS 요청을 처리하고, TLS 인증서를 관리할 수..

DevOps/K8S 2024.10.08

[Linux] NAT를 설정하는 방법

설정 요약IP 포워딩 활성화: 시스템이 내부 네트워크(eth0)와 외부 네트워크(eth1) 간에 패킷을 전달할 수 있도록 설정한다.마스커레이딩(Masquerading) 활성화: public 존(eth1 인터페이스)에서 마스커레이딩을 설정하여 내부 네트워크의 IP 주소를 외부 인터페이스의 공인 IP로 변환한다.네트워크 존 구성: 내부 인터페이스(eth0)를 internal 존으로 할당하고, 필요한 서비스(SSH, HTTP)를 허용한다.네트워크 인터페이스 확인내부 네트워크와 외부 네트워크에 연결된 인터페이스를 식별해야 한다. 다음 명령어로 현재 시스템의 네트워크 인터페이스를 확인할 수 있다:ip addr# 예시 출력:2: eth0: mtu 1500 ... inet 192.168.1.1/24 brd 1..

CS/Linux 2024.10.05

[Linux] Firewalld vs Iptables

CentOS 7부터 방화벽 관리 도구가 iptables에서 firewalld로 변경되었다.CentOS 6: 방화벽 기능과 설정 도구 모두 iptables를 사용한다.CentOS 7: 방화벽 기능은 iptables로 제공되지만, 설정 도구로는 firewalld를 사용한다. 명령어는 firewall-cmd이다.CentOS 8 이후: 방화벽 기능은 nftables로 제공되며, 설정 도구는 여전히 firewalld를 사용한다.Firewalld를 사용하는 이유동적 설정: firewalld는 실시간으로 방화벽 설정을 변경할 수 있어 서비스 중단 없이 보안 설정을 조정할 수 있다.유연한 관리: 존(Zone) 개념을 통해 네트워크 인터페이스별로 다른 보안 정책을 적용할 수 있어 관리가 용이하다.추상화된 인터페이스: f..

CS/Linux 2024.10.05
728x90