본문 바로가기
  • 오늘처럼
소프트웨어 아키텍처/Kubernetes

[Kubernetes] 1-09. Scheduler 역할 확인하기

by bluefriday 2022. 5. 3.
반응형

클러스터의 노드를 확인한 후에 구동되어 있는 스케쥴러를 삭제한다.

### 클러스터 구성 확인
root@localhost:~# kubectl get node
NAME               STATUS   ROLES    AGE   VERSION
master   Ready    master   26h   v1.23.1
worker   Ready    <none>   26h   v1.23.1

### 마스터 노드 접속 하여 스케쥴러 파드 확인
ssh master
root@localhost:~# kubectl -n kube-system get pod | grep schedule
kube-scheduler-master            1/1     Running   0          6s

### 스케쥴러 파드의 static pod manifest를 이동하여 파드를 제거 처리
root@localhost:~# cd /etc/kubernetes/manifests/
root@localhost:~# mv kube-scheduler.yaml ..

### 스케쥴러 파드 제거 확인
root@localhost:~#kubectl -n kube-system get pod | grep schedule
root@localhost:~#

 

이제 테스트 파드를 구동한 후에 파드가 스케쥴링 되는지 확인한다.

### 파드 구동
kubectl run test-pod --image=httpd:2.4-alpine

### 파드 스케쥴링 확인
kubectl get pod manual-schedule -o wide
NAME       READY   STATUS    ...   NODE     NOMINATED NODE
test-pod   0/1     Pending   ...   <none>   <none>

 

이제 파드를 수동으로 구동하기 위하여 먼저 파드의 yaml 정보를 획득하고, 해당 파일의 nodeName 을 추가한다.

kubectl get pod manual-schedule -o yaml > test-pod.yaml
---
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2020-09-04T15:51:02Z"
  labels:
    run: manual-schedule
  managedFields:
...
    manager: kubectl-run
    operation: Update
    time: "2020-09-04T15:51:02Z"
  name: manual-schedule
  namespace: default
  resourceVersion: "3515"
  selfLink: /api/v1/namespaces/default/pods/manual-schedule
  uid: 8e9d2532-4779-4e63-b5af-feb82c74a935
spec:
  nodeName: master        # 여기에 노드 이름을 추가
  containers:
  - image: httpd:2.4-alpine
    imagePullPolicy: IfNotPresent
    name: manual-schedule
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: default-token-nxnc7
      readOnly: true
  dnsPolicy: ClusterFirst

 

추가한 파일을 강제로 실행하여 노드에 파드가 배치됨을 확인한다.

### 파드 강제 적용
kubectl -f test-pod.yaml replace --force

### 파드 스케쥴링 확인
kubectl get pod manual-schedule -o wide
NAME       READY   STATUS    ...   NODE            
test-pod   1/1     Running   ...   master

 

다시 스케쥴러를 살리고 두 번째 테스트 파드를 실행하여, 스케쥴러에 의하여 정상적으로 스케쥴링 됨을 확인한다.

### 마스터 노드에 접속하여 스케쥴러 위치 변경하여 재구동
ssh master
root@localhost:~# cd /etc/kubernetes/manifests/
root@localhost:~# mv ../kube-scheduler.yaml .

### 스케쥴러 구동 확인
root@localhost:~# kubectl -n kube-system get pod | grep schedule
kube-scheduler-master            1/1     Running   0          16s

### 2번째 테스트 파드 구동 및 확인
kubectl run test-pod2 --image=httpd:2.4-alpine
kubectl get pod -o wide | grep schedule
test-pod    1/1     Running   ...   master
test-pod2   1/1     Running   ...   worker

 

댓글