Menu Close

3.10. 사용자 정의 스케줄러 실행

기본 스케줄러와 함께 여러 사용자 정의 스케줄러를 실행하고 각 Pod에 사용할 스케줄러를 구성할 수 있습니다.

중요

OpenShift Container Platform에서 사용자 정의 스케줄러를 사용하는 것이 지원되지만 Red Hat은 사용자 정의 스케줄러의 기능을 직접 지원하지 않습니다.

기본 스케줄러를 구성하는 방법에 대한 자세한 내용은 Pod 배치를 제어하도록 기본 스케줄러 구성을 참조하십시오.

특정 스케줄러를 사용하여 지정된 Pod를 예약하려면 해당 Pod 사양에서 스케줄러의 이름을 지정합니다.

3.10.1. 사용자 정의 스케줄러 배포

클러스터에 사용자 지정 스케줄러를 포함하려면 배포에 사용자 지정 스케줄러의 이미지를 포함합니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
  • 스케줄러 바이너리가 있습니다.

    참고

    스케줄러 바이너리 생성 방법에 대한 정보는 이 문서의 범위를 벗어납니다. 예를 들어 Kubernetes 문서 의 다중 스케줄러 구성을 참조하십시오. 사용자 지정 스케줄러의 실제 기능은 Red Hat에서 지원하지 않습니다.

  • 스케줄러 바이너리가 포함된 이미지를 생성하여 레지스트리로 푸시했습니다.

절차

  1. 사용자 정의 스케줄러의 배포 리소스가 포함된 파일을 생성합니다.

    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: []

    1 2 3 4
    이 절차에서는 kube-system 네임스페이스를 사용하지만 선택한 네임스페이스를 사용할 수 있습니다.
    5
    사용자 지정 스케줄러의 명령에는 다른 인수가 필요할 수 있습니다. 예를 들어 --config 인수를 사용하여 마운트된 볼륨으로 구성을 전달할 수 있습니다.
    6
    사용자 정의 스케줄러에 대해 생성한 컨테이너 이미지를 지정합니다.
  2. 클러스터에 배포 리소스를 생성합니다.

    $ 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