안녕하세요, 오늘은 베스핀글로벌 DevOps실 구연수 님이 작성해 주신 ‘Pod 에 복잡한 정기 이벤트 관리가 필요할 때 – Multiple Scheduler’에 대해 알아보겠습니다.
Multiple Scheduler
- Kubernetes에서는 Node에 Pod를 위치 시킬 때 스케줄링 알고리즘을 결정하고, 추가 조건까지 설정할 수 있다 커스텀 스케줄러 시스템을 작성하고 패키징, 기본 스케줄러로 배포까지 가능하다.
- Kubernetes는 다수의 스케줄러를 가질 수 있고 Pod, Deployment를 생성할 때 특정 스케줄러가 관리하도록 지정할 수 있다 kube scheduler 내부 설정 파일에서 스케줄러 고유 이름을 설정할 수 있고 이름을 통해 구분이 된다.
scheduler config yaml 파일 설정
my-scheduler-config.yaml
작성
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
- schedulerName: {스케줄러 고유 이름}
leaderElection:
leaderElect: true
resourceNamespace: kube-system
resourceName: lock-object-my-scheduler
- 같은 스케쥴러가 다수로 복제되어 각자 다른 노드에 운영되고 있다면 동 시간대에 한 개의 스케줄러만 활성화 가능하다.
- 활성화될 스케줄러를 선별하는 작업이 바로 leaderElection 옵션
Pod에 스케줄러 설정
apiVersion: v1
kind: Pod
metadata:
name: pod-with-custom-scheduler
namespace: kube-system
spec:
containers:
- command:
- kube-scheduler
- --address=127.0.0.1
- --kubeconfig=/etc/kubernetes/scheduler.conf
- --config=/etc/kubernetes/my-scheduler-config.yaml # 설정 파일 안에 고유이름을 보고 구분
image: k8s.gcr.io/kube-scheduler-amd64:v1.11.2
name: kube-scheduler
Scheduling Event 확인하는 법
kubectl get events -o wide
- 해당 namespace에서 진행된 모든 이벤트를 나열할 수 있다
REASON
:Scheduled
SOURCE
:스케줄러 고유 이름
MESSAGE
: 관련 내용
Scheduling Log 확인
kubectl logs {고유이름} --name-space=kube-system
notionvc: d82c5fba-f839-41f3-b4ed-e302441bad2e
Written by 구 연수 / Yeonsoo koo
Software Engineer