쿠버네티스 다중 스케줄러(Multiple Scheduler) 개념과 설정

ZER0·2022년 10월 15일
0

Kubernetes

목록 보기
15/39
post-thumbnail

1. 개념

  • kube-Scheduler를 활용하지 않고 개별 스케줄러를 생성하여 리소스 배포 시 사용 가능
  • 또한 1개가 아닌 여러개의 스케줄러를 동시에 사용 가능

2. 다중 스케줄러 생성

  • 쿠버네티스 공식 문서를 참고해 yaml 파일 생성
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: zero-scheduler
      namespace: kube-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: zero-scheduler-as-kube-scheduler
    subjects:
    - kind: ServiceAccount
      name: zero-scheduler
      namespace: kube-system
    roleRef:
      kind: ClusterRole
      name: system:kube-scheduler
      apiGroup: rbac.authorization.k8s.io
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: zero-scheduler-as-volume-scheduler
    subjects:
    - kind: ServiceAccount
      name: zero-scheduler
      namespace: kube-system
    roleRef:
      kind: ClusterRole
      name: system:volume-scheduler
      apiGroup: rbac.authorization.k8s.io
    ---
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: zero-scheduler-config
      namespace: kube-system
    data:
      zero-scheduler-config.yaml: |
        apiVersion: kubescheduler.config.k8s.io/v1beta2
        kind: KubeSchedulerConfiguration
        profiles:
          - schedulerName: zero-scheduler
        leaderElection:
          leaderElect: false    
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        component: scheduler
        tier: control-plane
      name: zero-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: zero-scheduler
          containers:
          - command:
            - /usr/local/bin/kube-scheduler
            - --config=/etc/kubernetes/zero-scheduler/zero-scheduler-config.yaml
            image: <set-your-scheduler-image or k8s.gcr.io/kube-scheduler:v1.24.0>
            livenessProbe:
              httpGet:
                path: /healthz
                port: 10259
                scheme: HTTPS
              initialDelaySeconds: 15
            name: kube-second-scheduler
            readinessProbe:
              httpGet:
                path: /healthz
                port: 10259
                scheme: HTTPS
            resources:
              requests:
                cpu: '0.1'
            securityContext:
              privileged: false
            volumeMounts:
              - name: config-volume
                mountPath: /etc/kubernetes/zero-scheduler
          hostNetwork: false
          hostPID: false
          volumes:
            - name: config-volume
              configMap:
                name: zero-scheduler-config
    cs

3. 스케줄러 생성 확인

  • 스케줄러 생성 확인

4. 다중 스케줄러 적용

  • schedulerName에 생성한 스케줄러 이름 명시 후 배포
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    apiVersion: v1
    kind: Pod
    metadata:
      labels:
        run: nginx
      name: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
      schedulerName: zero-scheduler
    cs

5. 배포 시 다중 스케줄러 적용 확인

  • 파드 정상 배포 확인
  • 다중 스케줄러 적용 확인(kubectl get events -o wide)

6. 참고

  1. https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/
  2. https://kubernetes.io/ko/docs/tasks/extend-kubernetes/configure-multiple-schedulers/
profile
Security Compliance Engineer

0개의 댓글