본문 바로가기

K8S15

Taints and Tolerations⭐⭐⭐ 쿠버네티스에서 노드 간의 스케쥴링과 pod의 배치를 제어하는 데에 Taints 와 Tolerations 가 사용됩니다. 이를 통해 특정 노드에서 실행되길 원치 않는 파드를 특정할 수 있습니다. Taint 는 노드에, Toleration은 파드에 설정됩니다. Taints Taint는 노드에 부착되는 레이블과 유사한 메커니즘으로, 다른 점은 반대의 의미를 갖고 있다는 것입니다. 테인트를 설정하면 해당 노드에서 실행되길 원치 않는 pod 를 정의할 수 있습니다. 특정 노드에 특별한 요구사항이 있는 경우, 이 노드에 테인트를 추가하여 다른 파드가 그 노드에 스케쥴링 되는 것을 방지합니다. node affinity와 다른 점은, node affinity는 pod가 특정 노드를 선택하게 하는 속성이었다면 taint.. 2024. 1. 18.
[Scheduling] Pod Scheduling Process, nodeName 파드가 노드에 배포되기까지 스케쥴러는 쿠버네티스 시스템 컴포넌트 중 하나이며, 클러스터 내의 노드 간에 파드를 균등하게 분산시키고 리소스를 효과적으로 활용하기 위해 노력합니다. 또한, 스케쥴러는 사용자가 지정한 제약 조건과 우선순위를 고려하여 파드를 적절한 노드에 배치함으로써 클러스터의 안정성과 효율성을 유지합니다. Pod 생성 요청 스케쥴러는 Api Server를 통해 노드가 할당되지 않은 파드 감지 스케쥴러가 파드를 스케쥴링 큐에 추가 스케쥴러는 파드가 어느 노드에서 실행될지를 결정하기 전에 노드에 대한 우선순위 및 제약 조건을 평가 이러한 우선순위 및 제약 조건은 스케쥴링 알고리즘에 의해 설정될 수 있으며, 예를 들어 리소스 요구 사항, 라벨 선택, 노드의 부하 등이 고려됩니다. 스케쥴러는 파드를 .. 2024. 1. 18.
Labels & Selectors 쿠버네티스에서 Labels 와 Selectors 는 리소스를 효과적으로 그룹화하고 필요한 리소스를 선택하기 위한 도구로 사용됩니다. Labels 1) 역할 레이블은 쿠버네티스 리소스에 부가적인 메타데이터를 추가합니다. 리소스를 특정 속성, 환경, 역할 등으로 식별하고 분류하는 데 활용합니다. 2) 구조 및 예시 레이블은 key-value 쌍으로 이루어져 있습니다. Pod, Replicaset 등의 리소스에 레이블을 부여할 수 있습니다. ex) app: frontend apiVersion: v1 kind: Pod metadata: name: simple-webapp **labels: app: App1 function: Front-end** spec: containers: - name: simple-weba.. 2024. 1. 18.
Imperatvie vs Declarative 쿠버네티스에서 리소스를 관리하는 두 가지 주요 방법은 명령형(Imperative) 방식과 선언형(Declarative) 방식입니다. 1. Imperative - 명령형 방식 명령형 방식은, 말 그대로 리소스를 단계별로 명령어로 직접 지정하고 생성하는 방식입니다. kubectl run, create, expose 명령어가 명령형에 해당합니다. 단일 명령으로 리소스를 빠르게 생성하고 변경할 수 있지만, 변경 내용을 추적하기 어렵다는 단점이 있습니다. 2. Declarative - 선언형 방식 리소스의 상태를 Yaml 파일 같은 선언적인 형식으로 정의하고, 이를 쿠버네티스에 제출하여 원하는 상태로 유지하도록 하는 방식을 선언형 이라고 합니다. 달성해야 할 최종 상태만 쿠버네티스에 전달합니다. kubectl -.. 2024. 1. 18.