DevOps/Kubernetes 11

쿠버네티스 - Pod 리소스 우선순위 관리 (QoS Classes)

Kubernetes에서 QoS(Quality of Service) Classes는 클러스터 내에서  Pod의 리소스 우선순위를 관리하는 데 사용된다. 각 파드는 설정된 리소스 요청과 제한 (메모리 및 CPU)에 따라 특정 QoS 클래스를 할당받으며, 이는 클러스터 리소스가 부족할 때 어떤 파드를 먼저 유지하고, 또 어떤 파드를 먼저 종료할지를 결정하는 중요한 기준이 된다.QoS 클래스 종류1. Guaranteed2. Burstable3. BestEffort1. Guaranteed이 클래스는 가장 높은 우선순위를 가진다. 리소스 요청과 제한이 모든 컨테이너에 동일하게 설정된 파드에 할당된다.Guaranteed 파드는 클러스터에서 다른 파드보다 우선적으로 보호되며, 리소스가 부족해도 가장 마지막에 종료된다...

DevOps/Kubernetes 2024.10.30

쿠버네티스 - (ReadinessProbe, LivenessProbe)

프로브(probe)란? 어떤 상태나 정보를 확인하기 위해 탐색하는 행위 또는 장치를 뜻한다. 마찬가지로, kubernetes에서 프로브는 컨테이너의 상태를 감시하여 컨테이너가 정상인지, 준비가 되었는지를 확인하는 검사 메커니즘을 의미한다. kubernetes의 프로브 유형에는 ReadinessProbe과 LivenessProbe가 있으며, 두 프로브 간에 역할과 차이점은 다음과 같다. ReadinessProbe: 서비스 요청을 받을 준비가 되었는지 검사ReadinessProbe는 컨테이너가 서비스 요청을 받을 준비가 되었는지를 확인한다. 컨테이너가 준비되지 않은 상태에서 트래픽이 전달되면 오류가 발생할 수 있기 때문에, ReadinessProbe는 준비 완료 상태가 될 때까지 트래픽을 차단해 준다. 동작..

DevOps/Kubernetes 2024.10.30

쿠버네티스 - Controller(DaemonSet, Job, CronJob)

1. DaemonSet : 각 노드에 특정 작업을 유지DaemonSet은 모든 노드에 파드를 배포하고, 항상 해당 파드가 유지되도록 관리하는 역할을 한다. 노드 수준에서 작동하는 애플리케이션(예: 로그 수집기, 모니터링 에이전트 등)을 배포할 때 유용하다. 모든 노드에서 동일한 파드를 하나씩 유지하므로, 클러스터에 새로운 노드가 추가되면 DaemonSet이 자동으로 새 노드에도 파드를 생성한다. 주요 특징 노드마다 하나씩 파드 배포: 클러스터 내 모든 노드에 파드가 하나씩 배포되며, 새로운 노드가 추가되면 자동으로 해당 노드에 파드가 생성된다.HostPort와 NodeSelector 활용 가능: 특정 포트나 노드의 OS 족건을 설정하여 특정 조건을 가진 노드에만 파드를 배치할 수 있다.HostPort 설..

DevOps/Kubernetes 2024.10.29

쿠버네티스 - Controller(Deployment)

Deployment는 Pod를 설정한 대로 배포하고, 변경 사항이 있으면 자동으로 새 버전을 적용하면서도 중단 없는 서비스를 유지할 수 있도록 돕는 역할을 한다. 동작 원리Deployment는 ReplicaSet을 생성하여 파드 수를 유지하고, 사용자가 배포한 설정(배포 전략, 버전 등)에 따라 파드를 관리한다. ReplicaSet2024.10.29 - [DevOps] - 쿠버네티스 - Controller(Replication Controller, ReplicaSet) 쿠버네티스 - Controller(Replication Controller, ReplicaSet)Replication Controller와 ReplicaSet은 클러스터 내 특정 수의 파드를 유지하는 데 사용되는 Controller다. 쉽..

DevOps/Kubernetes 2024.10.29

쿠버네티스 - Controller(Replication Controller, ReplicaSet)

Replication Controller와 ReplicaSet은 클러스터 내 특정 수의 파드를 유지하는 데 사용되는 Controller다. 쉽게 말해, Pod를 관리하는 관리자 역할을 하며, 설정된 수의 Pod가 항상 실행되도록 감시하고 관리한다. Replication Controller : (초기) 기본 파드 관리자ReplicationController는 쿠버네티스 초기 버전에서 도입된 파드 관리자이며, 설정된 수(replicas)의 파드가 항상 실행되도록 보장한다.동작 원리replicas 필드를 통해 원하는 파드 수를 설정한다. Replication Controller는 설정된 수의 파드가 실제 클러스터에서 실행되고 있는지 주기적으로 확인한다.파드가 삭제되거나 문제가 생긴 경우, 즉시 새 파드를 생성..

DevOps/Kubernetes 2024.10.29

쿠버네티스 - 환경변수 활용(ConfigMap, Secret)

환경 변수(Environment Variable)는 운영 체제나 애플리케이션이 실행되는 환경에 대한 정보를 담고 있는 변수다.프로그램이 실행될 때, 운영 체제에서 설정된 환경 분수에 접근해서 필요한 설정 값을 읽어들일 수 있다. 이를 통해 애플리케이션은 자신이 실행되고 있는 환경에 따라 동적으로 동작할 수 있다. 이처럼, 쿠버네티스에서도 환경 변수는 애플리케이션이 외부 설정을 쉽게 접근할 수 있도록 해주는 중요한 메커니즘이다. 즉, 컨테이너와 애플리케이션이 배포 환경에 따라 설정값을 다르게 할 수 있도록 하며, 코드를 수정하지 않고도 다양한 환경에서 같은 애플리케이션을 실행할 수 있게 해준다. ConfigMap과 Secret 개요쿠버네티스에서는 애플리케이션의 설정값을 관리하기 위해 ConfigMap과 S..

DevOps/Kubernetes 2024.10.10

쿠버네티스 - Volume

Volume은 쿠버네티스에서 Pod 내의 컨테이너가 파일 데이터를 공유하거나 유지할 수 있도록 지원하는 기능이다. 컨테이너는 일시적이고 재시작되면 데이터가 사라질 수 있지만, Volume을 활용하면 파드 또는 노드의 파일 시스템을 사용하여 데이터를 유지할 수 있다. 다양한 볼륨 유형이 있으며, 그 중 가장 많이 사용되는 것이 emptyDir, hostPath, 그리고 PersistentVolume(PV) / PersistentVolumeClaim (PVC) 이다.  1. emptyDiremptyDir은 파드가 생성될 때 빈 디렉토리를 제공하고, 파드가 삭제될 때 해당 디렉토리도 삭제되는 임시 볼륨이다. 예시 yamlapiVersion: v1kind: Podmetadata: name: pod-volume..

DevOps/Kubernetes 2024.10.08

쿠버네티스 - Service

Kubernetes에서 Service는 클러스터 내부의 Pod들이 외부 혹은 내부에서 네트워크 트래픽을 주고받을 수 있게 하는 리소스이다. 파드들은 IP 주소가 동적으로 할당되기 때문에, 파드가 재시작되면 IP 주소가 바뀌게 된다. 이를 해결하기 위해 Service는 파드의 네트워크 연결을 추상화하고, 파드가 종료되거나 재시작되더라도 클라이언트가 지속적으로 파드에 연결할 수 있게 해주는 역할을 한다. * 네트워크 트래픽이란? 데이터나 요청이 네트워크를 통해 주고받는 흐름을 의미한다. 예를 들어 , 클라이언트가 파드에서 실행중인 애플리케이션에 요청을 보내거나, 파드끼리 데이터를 주고받는 것이 네트워크 트래픽이다.(트래픽이란, 일반적으로 HTTP 요청, 데이터 패킷 전송 등을 포함한다.)* 네트워크 연결을 ..

DevOps/Kubernetes 2024.10.04

쿠버네티스 - kubectl (기본 명령어)

kubectl은 Kubernetes 클러스터와 상호작용하는 명령어 도구로, 클러스터의 리소스를 관리하고 제어하는 데 사용된다. kubectl을 통해 pod, service, node 등의 오브젝트를 생성하고, 상태를 조회하며, 삭제할 수 있다. kubectl 기본 명령어 Create리소스를 생성하는 명령어다. 보통 yaml 파일을 통해 Kubernetes 오브젝트의 정의를 작성하고, kubectl create 명령을  사용해 해당 리소스를 클러스터에 배포한다.이 명령은 한 번만 리소스를 생성한다. 이미 존재하는 리소스를 수정하려면 apply를 사용해야 함kubectl create -f ./pod.yaml # YAML 파일을 사용해 리소스를 생성.예: pod.yaml 파일에 정의된 파드를 클러스터에 생성..

DevOps/Kubernetes 2024.10.04

쿠버네티스 - Label, Label Selector, Node Selector

Label, Label SelectorLabel은 쿠버네티스에서 오브젝트를 식별하고 그룹화하는 키-값 쌍이다. Label Selector는 이러한 label을 사용해 특정 리소스를 선택하는 메커니즘이다. 이를 통해 서비스나 다른 리소스들이 특정 pod를 선택해 트래픽을 전달 할 수 있다.예apiVersion: v1 # API 버전.kind: Pod # 리소스 종류(Pod).metadata: name: pod-2 # 파드 이름. labels: # 파드에 적용할 레이블. type: web # 'type' 레이블 키에 'web' 값을 설정. lo: dev # 'lo' 레이블 키에 'dev' 값을 설정.spec: containers: - name: container # 컨테이너..

DevOps/Kubernetes 2024.10.04