목록DevOps/쿠버네티스 (14)
나의 잡다한 노트 및 메모
https://medium.com/@fengruohang/database-in-kubernetes-is-that-a-good-idea-daf5775b5c1f Database in Kubernetes: Is that a good idea?WeChat Columnmedium.com 요약Kubernetes와 데이터베이스의 성격 차이Kubernetes는 원래 무상태(stateless) 애플리케이션, 즉 컨테이너를 빠르게 배포하고 스케일 아웃하는 데 최적화되어 있습니다.반면, 데이터베이스와 같은 상태(stateful) 애플리케이션은 데이터의 영속성, 안정성, 성능 보장이 핵심이므로 운영 방식과 요구사항이 다릅니다.운영상의 도전 과제데이터 영속성 관리:컨테이너는 기본적으로 일시적인 특성을 가지므로, 데이터베이스의..
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를 ..
1. 클러스터 정보 확인 kubectl cluster-info 클러스터의 기본 정보를 확인할 수 있습니다.2. 노드 목록 조회 kubectl get nodes 클러스터에 연결된 모든 노드의 목록을 확인합니다.3. 파드 목록 조회 kubectl get pods -n 특정 네임스페이스 내의 모든 파드를 확인합니다. 네임스페이스를 지정하지 않으면 기본 네임스페이스를 조회합니다.4. 서비스 목록 조회 kubectl get services -n 클러스터 내 특정 네임스페이스에 생성된 서비스의 목록을 확인합니다.5. 파드 상세 정보 조회 kubectl describe pod -n 특정 파드의 상세 정보를 확인할 수 있습니다. 6. 리소스를 YAML 또는 JSON 형식으로 조회 kubectl get pod ..