728x90
Multiple Scheduler
- 기본 스케줄러 외에 커스텀 스케줄러를 추가하여 여러 스케줄러가 각기 다른 스케줄링 요구에 따라 Pod를 할당하도록 구성하는 방식
Scheduler 지정 방식
- Pod의 spec.schedulerName 필드에 스케줄러 이름을 설정
커스텀 스케줄러 구성 파일 생성 및 배포
apiVersion: apps/v1
kind: Deployment
metadata:
name: custom-scheduler
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
component: custom-scheduler
template:
metadata:
labels:
component: custom-scheduler
spec:
containers:
- name: custom-scheduler
image: k8s.gcr.io/kube-scheduler:v1.28.1 # 쿠버네티스 버전에 맞게 이미지 지정
command:
- kube-scheduler
- --config=/etc/kubernetes/config/custom-scheduler-config.yaml
- --scheduler-name=custom-scheduler-name # 커스텀 스케줄러 이름 지정
volumeMounts:
- name: config
mountPath: /etc/kubernetes/config
volumes:
- name: config
configMap:
name: custom-scheduler-config
Pod에 커스텀 스케줄러 지정
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
schedulerName: custom-scheduler-name # 커스텀 스케줄러 이름을 지정
containers:
- name: nginx
image: nginx
활용 예시
- 리소스 집약적인 워크로드 분리: 예를 들어 GPU를 사용하는 작업은 별도의 스케줄러가 이를 감지하여 GPU 노드에만 배포하도록 구성할 수 있다.
- 다양한 배포 전략: 일반적인 작업은 기본 스케줄러가 처리하고, 특정 네임스페이스의 워크로드는 특정 스케줄러로 배포하도록 구분 가능하다.
- 스케줄링 규칙 강화: 커스텀 스케줄러를 통해 특정 노드의 부하를 분산하거나, 특정 노드에 워크로드를 집중 배포하는 규칙을 설정할 수 있다.
참고
kubectl get event -o wide
kubectl log [scheduler name] -n [namespace]
kubectl get serviceaccount -n kube-system
kubectl get clusterrolebinding
728x90
반응형
'데브옵스 > Orchestration' 카테고리의 다른 글
[Kubernetes] 22. Monitoring (2) | 2024.11.12 |
---|---|
[Kubernetes] 21. Scheduler Profiles (0) | 2024.11.11 |
[Kubernetes] 19. Static Pod (0) | 2024.11.09 |
[Kubernetes] 18. DaemonSet (0) | 2024.11.08 |
[Kubernetes] 17. Resources, LimitRange (0) | 2024.11.06 |