04-13 06:40
반응형
250x250
Recent Posts
Recent Comments
Link
Tags
- Fargate
- kubernetesadmin
- Kubernetes
- Certified Solutions Architect
- cloudnative
- kubernetesstudyguide
- DevOps
- kubernetes admission controller
- EKS
- 메일 인증 프로토콜
- dMarc
- nodeaffinity
- containerorchestration
- aws ses
- SAA-CO2
- DKIM
- CKA
- gochannel
- aws
- go
- kubernetesscheduling
- K8S
- kubernetes 클러스터 보안
- SAA-CO3
- SPF
- JVM
- Java
- SMTP
- Lambda
Archives
- Today
- Total
DevOps Tasks
[CKA] Kubernetes nodeAffinity 본문
728x90
반응형
Node Affinity
개념
`nodeAffinity`는 Kubernetes에서 파드가 특정 노드에 스케줄링되기 위한 규칙을 정의하는 메커니즘입니다.
이는 노드의 레이블을 기반으로 파드가 특정 노드에 배치되도록 선호하거나 필수적인 조건을 설정할 수 있습니다.
`nodeAffinity`는 스케줄링 시 파드가 어떤 노드에 배치될지를 더 세밀하게 제어할 수 있도록 도와줍니다.
쉽게 이해하기
`nodeAffinity`는 " 이 파드는 특정 조건을 가진 노드에만 올라가야 해요! "라고 설정하는 방법입니다.
예를 들어, 파드가 고성능 디스크가 있는 노드에만 배치되도록 할 수 있어요.
주요 옵션
`nodeAffinity`는 크게 두 가지 유형으로 나뉩니다
- RequiredDuringSchedulingIgnoredDuringExecution
- PreferredDuringSchedulingIgnoredDuringExecution
RequiredDuringSchedulingIgnoredDuringExecution
- 기능 : 파드가 스케줄링될 때 반드시 만족해야 하는 조건을 정의합니다.
- 이 조건을 만족하는 노드에만 파드가 스케줄링됩니다.
- 설명 : " 이 파드는 반드시 이 조건을 만족하는 노드에만 올라가야 해요. "
- 예시 : 특정 레이블을 가진 노드에만 파드를 배치해야 할 때 사용합니다.
PreferredDuringSchedulingIgnoredDuringExecution
- 기능 : 파드가 스케줄링될 때 우선적으로 만족하면 좋은 조건을 정의합니다.
- 이 조건을 만족하는 노드가 있으면 그 노드에 우선적으로 스케줄링되지만, 필수는 아닙니다.
- 설명 : "이 파드는 이 조건을 만족하는 노드에 우선적으로 올라가면 좋겠어요."
- 예시 : 가능한 특정 지역(zone)에 파드를 배치하고 싶지만, 반드시 그럴 필요는 없을 때 사용합니다.
MatchExpressions
- 기능 : `label selector`를 사용하여 노드를 필터링하는 방법을 정의합니다.
- 여러 조건을 결합하여 복잡한 필터링을 할 수 있습니다.
- 설명 : "이 조건들을 모두 만족하는 노드에 파드를 올려야 해요."
- 예시 : 노드의 특정 레이블이 특정 값과 일치하거나 존재해야 할 때 사용합니다.
예시
Required Node Affinity 예시
# 이 파드는 disktype=ssd 레이블을 가진 노드에만 스케줄링됩니다.
apiVersion: v1
kind: Pod
metadata:
name: required-pod
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: "disktype"
operator: "In"
values:
- "ssd"
containers:
- name: app-container
image: app-image
Preferred Node Affinity 예시
# 이 파드는 가능한 zone=us-west-1 레이블을 가진 노드에 스케줄링되기를 선호하지만, 반드시 그럴 필요는 없습니다.
apiVersion: v1
kind: Pod
metadata:
name: preferred-pod
spec:
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: "zone"
operator: "In"
values:
- "us-west-1"
containers:
- name: app-container
image: app-image
복합 Node Affinity 예시
# 이 파드는 disktype=ssd 레이블을 가진 노드에 반드시 스케줄링되어야 하며 가능하면 zone=us-west-1 레이블을 가진 노드에 우선적으로 스케줄링됩니다.
apiVersion: v1
kind: Pod
metadata:
name: complex-pod
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: "disktype"
operator: "In"
values:
- "ssd"
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 2
preference:
matchExpressions:
- key: "zone"
operator: "In"
values:
- "us-west-1"
containers:
- name: app-container
image: app-image
Digest
`nodeAffinity`는 파드가 특정 노드에 스케줄링되기 위한 규칙을 설정하는 방법입니다.
이를 통해 파드가 노드의 레이블에 기반하여 선호되거나 필수적인 조건을 만족하는 노드에 배치되도록 제어할 수 있습니다.
주요 옵션 상세 설명
RequiredDuringSchedulingIgnoredDuringExecution
- 기능 : 파드가 스케줄링될 때 반드시 만족해야 하는 조건을 정의합니다.
- 설명 : 이 조건을 만족하지 않는 노드에는 파드가 스케줄되지 않습니다.
- 사용 사례 : 고성능 디스크가 있는 노드에만 파드를 배치하고 싶을 때.
PreferredDuringSchedulingIgnoredDuringExecution
- 기능 : 파드가 스케줄링될 때 우선적으로 만족하면 좋은 조건을 정의합니다.
- 설명 : 이 조건을 만족하는 노드가 있으면 그 노드에 스케줄링을 시도하지만, 반드시 그럴 필요는 없습니다.
- 사용 사례 : 특정 지역(zone)에 파드를 배치하고 싶지만, 다른 지역에도 배치할 수 있을 때.
MatchExpressions
- 기능 : `label selector`를 사용하여 노드를 필터링하는 방법을 정의합니다.
- 설명 : 여러 조건을 결합하여 복잡한 필터링을 할 수 있습니다.
- 사용 사례 : 노드의 특정 레이블이 특정 값과 일치하거나 존재해야 할 때.
728x90
반응형
'Certification' 카테고리의 다른 글
[CKA] Kubernetes Taints & Tolerations (0) | 2024.12.27 |
---|---|
[CKA] 쿠버네티스 클러스터 아키텍처 (0) | 2024.12.15 |
AWS Certified Solutions Architect - Associate 스토리지 Part (1) | 2024.01.14 |
AWS Certified Solutions Architect - Associate 보안, 자격 증명 및 규정 준수 Part (1) | 2024.01.14 |
AWS Certified Solutions Architect - Associate Amazon VPC 및 관련 기능 Part (1) | 2024.01.14 |