Skip to content

Jak zrobić własny Scheduler w Kubernetes?

Można uruchomić własny Scheduler poprzez uruchomienie procesu Schedulera (np. z użyciem systemd). Należy także przypiąć oddzielny plik konfiguracyjny.

Lepiej jednak będzie zrobić to z użyciem komponentu Pod lub Deployment.

Definicja Poda własnego Schedulera

apiVersion: v1
kind: Pod
metadata:
    name: <pod_name>
spec:
    containers:
        - command:
              - kube-scheduler
              - --address=127.0.0.1
              - --kubeconfig=/etc/kubernetes/scheduler.conf
              - --config=/etc/kubernetes/<scheduler_config>.yaml
                image: k8s.gcr.io/kube-scheduler-amd64:v1.XX.X
                name: kube-scheduler

i konfiguracja Schedulera (<scheduler_config>.yaml):

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
    - schedulerName: <scheduler_name>
leaderElection:
    leaderElect: true
    resourceNamespace: kube-system
    resourceName: lock-object-<scheduler_name>

Sekcja leaderElection jest wykorzystywana, gdy w klastrze mamy więcej niż jeden Scheduler tego samego typu (np. gdy chcemy mieć HA). Selektorem leaderElection.leaderElect oznaczamy, czy będzie wybierany jeden lider spośród wielu (true).

Użycie przez Poda (innego niż default) Schedulera

Definicja manifestu z innym niż default Schedulerem:

apiVersion: v1
kind: Pod
metadata:
    name: <pod_name>
spec:
    containers:
        - name: <container_name
          image: <image_name>
    schedulerName: <scheduler_name>