3.10. 사용자 정의 스케줄러 실행
기본 스케줄러와 함께 여러 사용자 정의 스케줄러를 실행하고 각 Pod에 사용할 스케줄러를 구성할 수 있습니다.
OpenShift Container Platform에서 사용자 정의 스케줄러를 사용하는 것이 지원되지만 Red Hat은 사용자 정의 스케줄러의 기능을 직접 지원하지 않습니다.
기본 스케줄러를 구성하는 방법에 대한 자세한 내용은 Pod 배치를 제어하도록 기본 스케줄러 구성을 참조하십시오.
특정 스케줄러를 사용하여 지정된 Pod를 예약하려면 해당 Pod
사양에서 스케줄러의 이름을 지정합니다.
3.10.1. 사용자 정의 스케줄러 배포
클러스터에 사용자 지정 스케줄러를 포함하려면 배포에 사용자 지정 스케줄러의 이미지를 포함합니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. 스케줄러 바이너리가 있습니다.
참고스케줄러 바이너리 생성 방법에 대한 정보는 이 문서의 범위를 벗어납니다. 예를 들어 Kubernetes 문서 의 다중 스케줄러 구성을 참조하십시오. 사용자 지정 스케줄러의 실제 기능은 Red Hat에서 지원하지 않습니다.
- 스케줄러 바이너리가 포함된 이미지를 생성하여 레지스트리로 푸시했습니다.
절차
사용자 정의 스케줄러의 배포 리소스가 포함된 파일을 생성합니다.
custom-scheduler.yaml
파일의 예apiVersion: v1 kind: ServiceAccount metadata: name: custom-scheduler namespace: kube-system 1 --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: custom-scheduler-as-kube-scheduler subjects: - kind: ServiceAccount name: custom-scheduler namespace: kube-system 2 roleRef: kind: ClusterRole name: system:kube-scheduler apiGroup: rbac.authorization.k8s.io --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: custom-scheduler-as-volume-scheduler subjects: - kind: ServiceAccount name: custom-scheduler namespace: kube-system 3 roleRef: kind: ClusterRole name: system:volume-scheduler apiGroup: rbac.authorization.k8s.io --- apiVersion: apps/v1 kind: Deployment metadata: labels: component: scheduler tier: control-plane name: custom-scheduler namespace: kube-system 4 spec: selector: matchLabels: component: scheduler tier: control-plane replicas: 1 template: metadata: labels: component: scheduler tier: control-plane version: second spec: serviceAccountName: custom-scheduler containers: - command: - /usr/local/bin/kube-scheduler - --address=0.0.0.0 - --leader-elect=false - --scheduler-name=custom-scheduler 5 image: "<namespace>/<image_name>:<tag>" 6 livenessProbe: httpGet: path: /healthz port: 10251 initialDelaySeconds: 15 name: kube-second-scheduler readinessProbe: httpGet: path: /healthz port: 10251 resources: requests: cpu: '0.1' securityContext: privileged: false volumeMounts: [] hostNetwork: false hostPID: false volumes: []
클러스터에 배포 리소스를 생성합니다.
$ oc create -f custom-scheduler.yaml
검증
스케줄러 Pod가 실행 중인지 확인합니다.
$ oc get pods -n kube-system
사용자 정의 스케줄러 Pod는
Running
으로 나열됩니다.NAME READY STATUS RESTARTS AGE custom-scheduler-6cd7c4b8bc-854zb 1/1 Running 0 2m