지니데비 기록 자세히보기

데브옵스/Orchestration

[Kubernetes] 20. Multiple Scheduler

지니데비 2024. 11. 10. 20:05
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