Kubernetes Custom Scheduler 실습
CustomScheduler 실습
기본 스케줄러 확인하기.
kubectl get pods -n kube-system | grep -i scheduler
kube-scheduler-controlplane 1/1 Running 0 4m53s
스케줄러 정보 상세 보기.
kubectl describe pods -n kube-system kube-scheduler-controlplane
Name: kube-scheduler-controlplane
Namespace: kube-system
Priority: 2000001000
Priority Class Name: system-node-critical
Node: controlplane/172.17.0.11
Start Time: Wed, 17 Mar 2021 11:40:56 +0000
Labels: component=kube-scheduler
tier=control-plane
Annotations: kubernetes.io/config.hash: 5146743ebb284c11f03dc85146799d8b
kubernetes.io/config.mirror: 5146743ebb284c11f03dc85146799d8b
kubernetes.io/config.seen: 2021-03-17T11:40:49.302668789Z
kubernetes.io/config.source: file
Status: Running
IP: 172.17.0.11
IPs:
IP: 172.17.0.11
Controlled By: Node/controlplane
Containers:
kube-scheduler:
Container ID: docker://7f9ab656138586b9758983e0b733cb583e9dcd194ba5ed44ebeeb7e728f6bfe5
Image: k8s.gcr.io/kube-scheduler:v1.19.0
Image ID: docker-pullable://k8s.gcr.io/kube-scheduler@sha256:529a1566960a5b3024f2c94128e1cbd882ca1804f222ec5de99b25567858ecb9
Port: <none>
Host Port: <none>
Command:
kube-scheduler
--authentication-kubeconfig=/etc/kubernetes/scheduler.conf
--authorization-kubeconfig=/etc/kubernetes/scheduler.conf
--bind-address=127.0.0.1
--kubeconfig=/etc/kubernetes/scheduler.conf
--leader-elect=true
--port=0
State: Running
Started: Wed, 17 Mar 2021 11:40:35 +0000
Ready: True
Restart Count: 0
Requests:
cpu: 100m
Liveness: http-get https://127.0.0.1:10259/healthz delay=10s timeout=15s period=10s #success=1 #failure=8
Startup: http-get https://127.0.0.1:10259/healthz delay=10s timeout=15s period=10s #success=1 #failure=24
Environment: <none>
Mounts:
/etc/kubernetes/scheduler.conf from kubeconfig (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
kubeconfig:
Type: HostPath (bare host directory volume)
Path: /etc/kubernetes/scheduler.conf
HostPathType: FileOrCreate
QoS Class: Burstable
Node-Selectors: <none>
Tolerations: :NoExecuteop=Exists
Events: <none>
Scheduler 파일 위치
ls -alt /etc/kubernetes/manifests/
total 24
drwxr-xr-x 4 root root 4096 Mar 17 11:40 ..
drwx------ 2 root root 4096 Mar 17 11:40 .
-rw------- 1 root root 2096 Mar 17 11:40 etcd.yaml
-rw------- 1 root root 3663 Mar 17 11:40 kube-apiserver.yaml
-rw------- 1 root root 3345 Mar 17 11:40 kube-controller-manager.yaml
-rw------- 1 root root 1384 Mar 17 11:40 kube-scheduler.yaml
커스텀 스케줄러를 만들고자 한다면 해당 스케줄러 매니페스트를 복사하여 새로운 스케줄러를 생성한다.
pod 를 특정 스케줄러로 실행하기.
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- image: nginx
name: nginx
schedulerName: customer-scheduler
schedulerName: 을 지정하여 특정 스케줄러로 실행하기.
pod 살펴보기.
watch "kubectl get pods | grep nginx"