Scheduler?
- Cluster에 Scheduler가 없을 때에는 내장된 Scheduler 대신 POD를 직접 Scheduling 한다.
- node를 모니터하고 Scheduling 할 Scheduler가 없다면 POD는 계속 Pending 상태이다. -> 직접 Node에 포드를 할당한다.
- Pod 설정파일 내부에서 nodeName을 작성해 줌으로써 노드를 지정해준다.
- 한개의 Pod 의 nodename을 수정할 수 없게 하기 때문에 binding 개체를 생성해서 POD 의 binding API 에 게시 요청을 보낸다. -> Scheduler가 하는 일을 모방하는 방법이다.

Scheduler 실습




Label & Selector?
- 필요에 따라 분류하고 여과하기 위한 방도로 Label을 사용한다.
- Kubernetes에서 다른 객체를 필터링 할 방법이 필요한데 이때 Label과 Selector를 이용해서 개체를 그룹화하고 선택 할 수 있다.
- pod-definition.yaml 파일에서 labels 부분을 생성해서 붙여준다.
- Kubernetes Object는 내부에서 Label과 Selector를 이용해서 서로 다른 Object들을 연결한다.
- 예를 들어, 세 개의 다른 Pod 로 구성된 복제품을 만들려면 Pod-definition을 Labeling하고 replicas selector를 이용해서 pod를 그룹으로 묶는다.
- replicaset-definition.yaml 파일에서 template 아래에 정의되어있는 labels은 pod에 구성된 label이고 metadata 쪽의 label은 replicaset 자체의 label이다.
- 같은 Label을 가진 다른 Pod 가 있는데 기능이 다르다면 두 label을 다 지정 가능하다 replicaset 가 알맞는 pod 를 발견하도록 하기 위함이다.
- service-definition.yaml 파일에 selector에도 template 아래에 정의되어있는 labels와 같은 이름으로 일치하게 적어준다.
Label & Selector 실습

- kubectl get pods --selector env=dev dev라는 selector값을 가진 pod들을 보여준다.
- kubectl get pods --selector env=dev | wc -l pod의 갯수를 세어준다.
- kubectl get pods --selector env=dev --no-headers | wc -l name이라는 위에 필드명을 제외하고 pod의 갯수를 세어준다.

Taints And Tolerations?
- Taint(개인적인 생각으로는 node에 설정하는 조건값이라고 생각한다. ex) node1에는 selector값이 blue인것만 넣어라)
- Tolerations(pod에 설정하는 설정값 ex) selector = blue)
- Taint 는 Node에만 설정할 수 있고 Tolerations 는 POD에만 설정 할 수 있다.


**** Kubernetes Cluster가 처음 설정되면 Master Node에 Taints 설정이 자동으로 되어서 Pod 가 지정되는 걸 막는다.
Taints And Tolerations 실습





Node Selector?

Node Affinity?
- Pod가 특정 node에 호스트 될 수 있도록한다.


- 스케줄링에서는 Pod 가 존재하지 않다가 처음으로 만들어지는 상태를 말한다.
- Pod 가 처음 생성되면 지정된 선호도 규칙을 따라 Pod를 올바른 Node에 배치하는게 고려된다.
- Pod 배치가 작업 자체의 실행보다 덜 중요하다면 preferred 모드로 설정 할 수 있다.
- 일치하는 노드가 없을 경우 Scheduler는 노드 선호도 규칙을 무시하고 해당 pod를 모든 가능한 Node에 배치한다.
- 실행중인 pod는 스케줄이 정해지면 설정값에 변화가 있더라도 영향을 받지 않고 새로운 pod 실행단계에서만 적용된다.

- 위의 그림에서는 선호도 규칙에 부합하지 않는 Node에서 실행중인 Pod를 빼낸다. 예시로 Node 1에서 실행되는 pod는 Node에서 라벨 Large가 제거되면 퇴출되거나 종료된다.
'Kubernetes (k8s)' 카테고리의 다른 글
| CKA 준비 Multiple Schedulers, Monitoring, Application Logs, Rolling Updates and Rollbacks (0) | 2023.02.21 |
|---|---|
| CKA 준비 Node affinity, Resources Limit, Demon Sets, Static Pod (0) | 2023.02.19 |
| CKA 준비 Cluster IP,Namespace,Imperative vs Declarative (0) | 2023.02.16 |
| CKA 준비 Replication Controller, Service, Deployment, ReplicaSet (0) | 2023.02.13 |
| CKA 준비 Kubelet, POD, Kube Proxy, YAML (0) | 2023.02.12 |