volcano.sh/volcano@v1.9.0/docs/design/multi-volcano-schedulers.md (about)

     1  # Multi volcano schedulers
     2  
     3  ## Introduction
     4  
     5  Sometimes we may want to the cluster be divided into multi sections for different usage.
     6  
     7  ![multi-scheduler](images/multi-volcano-schedulers.png)
     8  
     9  ### Advantage
    10  - Each section can keep isolated.
    11  - Each section include full scheduling capability.
    12  - Support user monopolizing some nodes.
    13  - System services can be scheduled in specific nodes.
    14  
    15  ### Usage
    16  
    17  #### Specify scheduler
    18  You should name each scheduler, and add `selector` to filter nodes.
    19  
    20  `selector`(label query) supports ':'.(e.g. --node-selector key1:value1,key2:value2)
    21  
    22  ```diff
    23  # Scheduler deployment
    24  ...
    25       spec:
    26         containers:
    27           - args:
    28               - --logtostderr
    29               - --scheduler-conf=/volcano.scheduler/volcano-scheduler.conf
    30  +            - --scheduler-name=gpu
    31  +            - --node-selector=zone:gpu
    32               - -v=3
    33               - 2>&1
    34  ```
    35  
    36  #### Specify controller
    37  
    38  Controller need to specify multi `scheduler-name`s
    39  
    40  ```diff
    41  # Controller deployment
    42  ...
    43       spec:
    44         containers:
    45           - args:
    46               - --logtostderr
    47  +            - --scheduler-name=volcano
    48  +            - --scheduler-name=gpu
    49               - -v=4
    50               - 2>&1
    51  ```
    52  
    53  #### Specify Job
    54  
    55  ```diff
    56   apiVersion: batch.volcano.sh/v1alpha1
    57   kind: Job
    58   metadata:
    59     name: run-gpu
    60   spec:
    61     minAvailable: 3
    62  +  schedulerName: gpu   # need to specify scheduler name
    63   tasks:
    64   - replicas: 3
    65     name: worker
    66     template:
    67       metadata:
    68         name: worker
    69       spec:
    70         containers:
    71         - image: tensorflow/tensorflow:latest-gpu
    72           name: tensorflow
    73           resources:
    74             requests:
    75               cpu: 1
    76               memory: 10Gi
    77               nvidia.com/gpu: 2
    78  ```
    79  
    80  #### Specify Deployments
    81  
    82  User also can use vc-scheduler to deploy system services by changing `schedulerName` from Deployment.
    83  
    84  ```yaml
    85  apiVersion: apps/v1
    86  kind: Deployment
    87  metadata:
    88    name: nginx
    89    labels:
    90      app: nginx
    91  spec:
    92    replicas: 3
    93    selector:
    94      matchLabels:
    95        app: nginx
    96    template:
    97      metadata:
    98        labels:
    99          app: nginx
   100      spec:
   101        schedulerName: volcano
   102        containers:
   103          - name: nginx
   104            image: nginx
   105  ```