DevOps/K8S 16

[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

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

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

DevOps/K8S 2024.10.08

[k8s] DNS

쿠버네티스에서 DNS(Domain Name System)는 클러스터 내 서비스와 파드 간의 통신을 간소화하는 중요한 구성 요소이다. 클러스터를 생성하면 기본적으로 DNS 서비스가 자동으로 설정되며, 최근의 쿠버네티스 클러스터에서는 CoreDNS가 기본 DNS 서비스로 사용된다. CoreDNS는 유연한 플러그인 아키텍처를 제공하여 클러스터 DNS뿐만 아니라 다른 네임서버와의 통합도 가능하게 한다. DNS 이름 형식쿠버네티스는 각 서비스에 대해 자동으로 DNS 이름을 생성하며, 그 형식은 다음과 같다:..svc.cluster.local예를 들어, default 네임스페이스에 있는 my-service라는 서비스의 DNS 이름은 my-service.default.svc.cluster.local이 된다. 이를 사..

DevOps/K8S 2024.09.02

[k8s] Volume

쿠버네티스(Kubernetes)는 애플리케이션이 실행되는 동안 데이터를 저장하고 관리할 수 있는 다양한 스토리지 옵션을 제공한다. Persistent Volume (PV)와 Persistent Volume Claim (PVC)은 상태 저장 애플리케이션을 위한 스토리지를 제공하는 개념으로, 이 두 가지를 통해 쿠버네티스는 다양한 스토리지 백엔드와 독립적으로 상태 저장 애플리케이션을 지원할 수 있다.Persistent Volume (PV)Persistent Volume(PV)은 쿠버네티스 클러스터 내에서 스토리지 리소스를 추상화한 객체이다. PV는 클러스터 관리자가 직접 프로비저닝 하거나 쿠버네티스가 동적으로 생성할 수 있으며, 클러스터의 다른 리소스와 독립적으로 존재한다. PV는 특정 사용자를 위한 것이 ..

DevOps/K8S 2024.09.02

[k8s] 클러스터의 주요 구성 요소와 문제 발생 시 영향

Kubernetes 클러스터는 제어 평면(Control Plane)과 워커 노드(Worker Node)로 구성되어 있으며, 각 노드는 클러스터의 안정적 운영을 위해 중요한 역할을 수행한다. 클러스터의 주요 구성 요소로는 Kubelet, ContainerD, 스케줄러(Scheduler), 그리고 제어 평면의 각 요소가 있다. 다음은 시스템 서비스로 실행되며 systemctl로 관리되기 때문에 문제 발생 시 영향을 미칠 수 있는 요소들이다 제어 평면(Control Plane)제어 평면은 마스터 노드에서 실행되며 클러스터의 상태를 관리하고 조정하는 역할을 한다. 제어 평면의 주요 구성 요소는 다음과 같다.API 서버 (kube-apiserver)역할: 클러스터의 모든 요청을 처리하고, 클러스터 상태를 저장하는..

DevOps/K8S 2024.08.29

[k8s] Deployment

Deployment는 애플리케이션을 관리하고 자동으로 배포하는 객체로, 주로 애플리케이션의 상태를 선언적으로 정의하는 데 사용된다. Deployment는 애플리케이션의 여러 인스턴스를 안정적으로 운영하고, 롤링 업데이트, 롤백, 확장과 같은 작업을 간단하게 수행할 수 있도록 해 준다. Deployment의 구성 요소Pod: 각 Deployment는 여러 개의 Pod를 관리한다.ReplicaSet: Deployment가 관리하는 Pod의 복제본을 유지하는 역할을 하며, 특정 수의 Pod가 항상 실행 중인지 보장한다.Label Selector: Deployment는 Label을 사용하여 어떤 Pod가 관리 대상인지를 지정한다. Deployment의 주요 기능애플리케이션 배포 및 관리:Deployment를 사..

DevOps/K8S 2024.08.29
728x90