Achilleas Tzenetopoulos 9ef8956670 minor 5 år sedan
..
README.md 9ef8956670 minor 5 år sedan
create_scheduler.sh aca99afba3 minor 5 år sedan
update_scheduler.sh ca6a8e7bf1 init commits 5 år sedan

README.md

Deploy the customized scheduler

Run:

./create_scheduler

Create a yaml file:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: evolve-scheduler
  namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: evolve-scheduler-as-kube-scheduler
subjects:
- kind: ServiceAccount
  name: evolve-scheduler
  namespace: kube-system
roleRef:
  kind: ClusterRole
  name: system:kube-scheduler
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: evolve-scheduler
  labels:
    component: scheduler
    tier: control-plane
  name: evolve-scheduler
  namespace: kube-system
spec:
  selector:
    matchLabels:
      component: scheduler
      tier: control-plane
  replicas: 1
  template:
    metadata:
      labels:
        component: scheduler
        tier: control-plane
        version: second
    spec:
      serviceAccountName: evolve-scheduler
      containers:
      - command:
        - kube-scheduler
        - --authentication-kubeconfig=/etc/kubernetes/scheduler.conf
        - --authorization-kubeconfig=/etc/kubernetes/scheduler.conf
        - --bind-address=0.0.0.0
        - --kubeconfig=/etc/kubernetes/scheduler.conf 
        - --leader-elect=false
        - --scheduler-name=evolve-scheduler
#        - --config=/etc/kubernetes/config/kube-scheduler-conf.yaml
        image: docker.io/iwita/scheduler:latest
        imagePullPolicy: Always
        livenessProbe:
          httpGet:
            path: /healthz
            port: 10251
          initialDelaySeconds: 15
        name: evolve-scheduler
        readinessProbe:
          httpGet:
            path: /healthz
            port: 10251
        resources:
          requests:
            cpu: '0.1'
        securityContext:
          privileged: false
        volumeMounts:
        - mountPath: /etc/kubernetes/
          name: kubeconfig
          readOnly: true
        env:
          - name: NODE_NAME
            valueFrom:
              fieldRef:
                fieldPath: spec.nodeName
      nodeSelector:
        kubernetes.io/hostname: kube-00
      hostNetwork: false
      hostPID: false
      volumes: 
      - hostPath:
          path: /etc/kubernetes/
        name: kubeconfig

Update

./update_scheduler.sh custom-scheduler.yaml

Verify

kubectl get pods -n kube-system

Finally add the following lines

  • Open the config file for the cluster role kubectl edit clusterrole system:kube-scheduler
  • Append the following lines in the end
- apiGroups:
  - storage.k8s.io
  resources:
  - storageclasses
  verbs:
  - watch
  - list
  - get