티스토리 뷰
1. 문제 시나리오 #1 노드 셀렉터
- 특정 어플리케이션이 특정 노드에서만 실행되도록 설정
- 노드 레이블 설정: 노드 중 하나에 disktype=ssd라는 레이블을 추가
- 파드 생성: nginx 이미지의 파드로, disktype=ssd 레이블이 있는 노드에서만 실행되어야 한다.
1) 해결과정
(1) 노드에 레이블 추가
kubectl label nodes <node-name> disktype=ssd
(2) YAML 파일 작성
#nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx
nodeSelector:
disktype: ssd
(3)파드 생성
kubectl apply -f nginx-pod.yaml
2. 문제시나리오 #2
1) 문제시나리오
- 노드 어피니티와 안티 어피니티가 설정된 디플로이먼트 생성
- 어퍼니티 설정: app=frontend 레이블이 있는 노드에서만 실행
- 안티 어피니티 설정: 동일한 노드에 동일한 디플로이먼트의 다른파드가 스케줄링되지 않도록 설정
2) 해결과정
(1) 노드에 레이블추가
kubectl label nodes <node-name> app=frontend
(2) Deployment YAML 파일 작성
#frontend-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend-deployment
spec:
replicas: 3
selector:
matchLabels:
app: frontend
template:
metadata:
labels:
app: frontend
spec:
affinity:
#노드 어피니티
nodeAffinity:
#필수 조건
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
#app 라벨중 frontend를 가진 노드
- matchExpressions:
- key: app
operator: In
values:
- frontend
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app: frontend
topologyKey: "kubernetes.io/hostname"
containers:
- name: nginx
image: nginx
(3) Deployment 생성
kubectl apply -f frontend-deployment.yaml
(4) TopologyKey 개념 설명 :
- 노드 그룹화 기준이며, 어피니티에 직접적인 영향을 주지 않는다.
- 해당 Pod가 Affinity에 따라서 어떤 노드에 배치가 된다면, 그 노드 topologyKey에 따라 그룹화된다.
- 단순히 Pod, 노드간의 관계를 정의할 뿐, 어피니티에 직접 영향을 주지는 않는다.
- Node값을 기준으로 topologyKey이 구성된다. (호스트네임, 가용영역, 지역)
3. 문제시나리오 #3 Taints와 Tolerations
1) 설명:
-특정 노드를 워크로드 전용으로 지정하고, 다른 워크로드가 해당 노드에 스케줄링되지 않도록 설정
- 노드 테인트 추가: 특정 노드에 key=workload-only:NoSchedule라는 테인트 추가
- 파드 톨러레이션 설정: workload-only 테인트를 허용하도록 톨러레이션을 설정한 파드를 생성
2) 해결과정
(1) 노드에 테인트 추가
kubectl taint nodes <node-name> workload-only=true:NoSchedule
(2) YAML 파일 작성
apiVersion: v1
kind: Pod
metadata:
name: toleration-pod
spec:
tolerations:
- key: "workload-only"
operator: "Equal"
value: "true"
effect: "NoSchedule"
containers:
- name: nginx
image: nginx
(3) 파드 생성
kubectl apply -f toleration-pod.yaml
'쿠버네티스' 카테고리의 다른 글
쿠버네티스 기출 문제 정리 Topology Spread Constraints (0) | 2025.01.01 |
---|---|
CKA 기출개념 정리 Job (0) | 2025.01.01 |
CKA 기출개념 정리 리소스 제한 (1) | 2024.12.31 |
CKA 기출개념 정리 ConfigMap과 Secret을 사용하여 어플리케이션 구성 (0) | 2024.12.31 |
CKA 기출개념 정리 rollout (0) | 2024.12.31 |