목록DevOps/쿠버네티스 (13)
내 잡다한 노트
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 ..
쿠버네티스에서는 오브젝트의 명세(spec)을 명시해줘야 control-plane의 api server와 통신이 원활하다.이때, yaml 파일로 명세를 작성해주고 api server와 통신을 할 때는 json 형식으로 kubectl이 변환을 해주게 된다.적용 명령어는 kubectl apply -f "yaml 파일" 를 사용한다.K8S YAML 파일의 기본 구조apiVersion: kind: metadata: name: namespace: spec: 이와 같이 apiVersion, kind, metadata, spec 이 4가지가 기본적으로 쓰이게 된다.apiVersion은 오브젝트가 속한 쿠버네티스 API의 버전을 지정한다.예시 : apps/v1 , v1 , batch/v1kind는 생성하려는 ..