목록2024/11 (53)
내 잡다한 노트
Stateful 애플리케이션은 데이터를 지속적으로 저장하고, 해당 데이터의 상태에 따라 작동하는 애플리케이션을 의미합니다. 이 애플리케이션은 이전 작업의 상태를 기억해야 하며, 이를 기반으로 다음 작업을 처리합니다. 1. 데이터베이스예시:MySQLPostgreSQLMongoDBRedisCassandra특징:데이터베이스는 클라이언트 요청을 처리하고 데이터를 저장해야 합니다.노드 간 데이터 일관성(consistency)을 유지하는 것이 중요합니다.Kubernetes에서 **Persistent Volume(PV)**을 사용해 데이터를 지속적으로 유지해야 합니다. 2. 메시지 브로커예시:RabbitMQApache KafkaActiveMQ특징:메시지 브로커는 메시지를 큐(queue)에 저장하여 처리하거나 전달해야..
1. 노드가 다운되었을 때 발생하는 문제클러스터에서 **노드(Node)**가 다운되면, 해당 노드에서 실행 중이던 Pod에 접근할 수 없게 됩니다.Pod가 여러 복제본(Replicas)으로 구성된 경우:예: 블루 Pod는 여러 복제본이 있어 다른 노드에서 서비스가 계속 제공되므로 사용자에게 영향이 없음.Pod가 단일 인스턴스로 실행 중인 경우:예: 그린 Pod는 다른 복제본이 없으므로 사용자에게 서비스가 중단됨.2. Kubernetes의 동작 원리노드가 빠르게 복구된 경우:노드가 빠르게 복구되면, kubelet이 다시 시작되어 Pod가 정상적으로 실행됩니다.노드가 5분 이상 다운된 경우:Kubernetes는 기본적으로 5분간 노드 상태를 감시하다가 노드가 복구되지 않으면 Pod을 종료(terminate)..
Kubernetes에서 Multi-Container Pods는 여러 컨테이너를 하나의 Pod에 배치하여 서로 긴밀하게 협력하는 애플리케이션 아키텍처를 구현하는 데 사용됩니다. 이러한 디자인은 컨테이너 간의 데이터 공유, 통신, 라이프사이클 관리를 단순화합니다. Multi-Container Pods는 특정 디자인 패턴에 따라 구성되며, 이를 통해 애플리케이션의 다양한 요구사항을 충족할 수 있습니다. 1. Sidecar Pattern설명Sidecar는 주 컨테이너(Main Application Container)를 지원하기 위해 함께 동작하는 보조 컨테이너입니다.주로 주 컨테이너의 기능을 확장하거나 개선하는 역할을 수행합니다.Sidecar 컨테이너는 주 컨테이너와 동일한 네트워크와 스토리지를 공유하여 밀접하..
Kubernetes에서 **~From**이라는 키워드는 보통 여러 데이터를 한꺼번에 가져와 리소스에 적용할 때 사용됩니다. 이런 키워드는 선언적 방식으로 매니페스트 파일을 작성할 때 유용하며, 대표적으로 envFrom과 같은 키워드가 있습니다. 아래는 Kubernetes 매니페스트에서 자주 사용되는 ~From 유형을 정리한 목록입니다.1. envFromPod의 환경 변수를 ConfigMap 또는 Secret에서 한꺼번에 가져올 때 사용됩니다.대상 리소스에서 정의된 모든 키를 환경 변수로 자동으로 추가합니다.예시apiVersion: v1 kind: Pod metadata: name: app-pod spec: containers: - name: app-container image: ngin..
1. Secrets란 무엇인가?Secrets는 Kubernetes에서 비밀번호, 인증키, API 토큰과 같은 민감한 정보를 저장하고 관리하기 위한 객체입니다.ConfigMap과 유사하지만, 민감한 데이터를 인코딩(Base64) 형식으로 저장한다는 차이점이 있습니다.ConfigMap과의 차이:ConfigMap: 일반적인 환경 설정 데이터를 저장 (평문).Secrets: 비밀번호와 같은 민감한 데이터를 저장 (Base64로 인코딩). 2. Secrets 생성 방법Secrets를 생성하는 두 가지 주요 방법이 있습니다:(1) 명령형(Imperative) 접근 방식kubectl create secret 명령어를 사용하여 Secrets를 생성합니다.예제 1: from-literal 옵션 사용 kubectl cre..
쿠버네티스에서 환경변수를 정의하는 것은 definition file 에서 env를 통해 정의를 한다.하지만 Pod definition file이 많아지면, 환경 변수를 각각의 파일에서 관리하기가 어려워진다. 그래서 ConfigMap 이 존재한다.ConfigMap은 키-값 쌍(Key-Value Pair) 형태로 환경 설정 데이터를 관리할 수 있는 Kubernetes 리소스입니다.ConfigMap을 생성한 뒤, Pod에 주입하여 애플리케이션에서 환경 변수나 파일 형태로 사용할 수 있습니다. ConfigMap은 명령어나 manifest 파일을 작성하여 ConfigMap 리소스를 생성한다.이때, 데이터를 파드에 주입하려면 환경 변수로 주입을 하거나, 파일 형태로 볼륨에 마운트하여 주입한다. ConfigMap 데..
1. Rolling Update (롤링 업데이트)기본 동작:Pod를 점진적으로 교체하면서 새 Pod를 생성합니다.가용성을 유지하며 트래픽이 중단되지 않도록 설계.기존 Pod를 하나씩 종료하고 새 Pod를 하나씩 생성하는 방식.장점:서비스 중단 없이 점진적으로 업데이트 가능.한 번에 교체하는 Pod 수를 제어 가능 (maxUnavailable, maxSurge 설정).설정:strategy:type: RollingUpdate rollingUpdate:maxUnavailable: 1 \# 최대 1개의 Pod만 비가용 상태maxSurge: 1 \# 최대 1개의 Pod 추가 생성k8s에서 Rolling Update가 default 업데이트 전략이다. Recreate (재생성)동작 방식: 기존 Pod를 ..
회사 서버들 프로세스를 정리하다가 LDAP 서버가 있어서 그것에 대해 공부해보기로 마음을 먹어 공부 겸 글을 쓰게 됐다.IT 인프라에서 중요한 역할을 하는 디렉토리 프로토콜로, 사용자 인증, 권한 관리, 자원 관리 등에 널리 사용된다.LDAP네트워크 상에서 디렉토리 정보를 조회하고 수정하기 위한 표준 프로토콜이다.조직 내의 사용자, 그룹, 장비, 애플리케이션 등의 정보를 중앙에서 관리하고 빠르게 검색할 수 있도록 도와준다.여기서, 디렉토리라는게 일반적인 파일 시스템의 디렉토리와는 다른 개념이다.LDAP에서의 디렉토리는 전화번호부나 연락처 목록과 유사한 개념으로, 다양한 attribute를 가진 object들을 계층적으로 관리하는 데이터베이스이다. 그래서, 모든 사용자와 자원 정보를 한 곳에서 관리할 수 ..