푸잉이의 기술블로그

[Day5] Certified Kubernetes Administrator (CKA) with Practice Tests 본문

IT/Kubernetes

[Day5] Certified Kubernetes Administrator (CKA) with Practice Tests

data고수 2023. 1. 10. 00:04

51강. Manual scheduling

스케줄링: pod생성을 요청 했을 때, pod를 적정 node에 배치하는 것

2단계로 구성

1.필터링: CPU, 메모리와 같은 자원 요구량을 만족하는 노드를 선택하는 것 (predicates)

2.스코어링

 

kubectl apply 등의 명령어를 통해 사용자의 Pod의 생성 요청-> kube-apiserver에 제출-> kube-apiserver는 etcd에 Pod의 정보 저장 (NodeName의 값이 설정되지 않은 상태로 Pod의 정보를 저장)

kube-scheduler는 이러한 정보를 watch-> Pod의 NodeName이 비어 있는 상태라는 것을 감지->적절한 노드 확인-> kube-apiserver에게 전달

 

NodeName

노드 이름을 명시해서 배치할 노드에 pod를 배치하는 것(실제 사용 환경에서는 node가 삭제되면서 이름이 바뀔 수 있기 때문에 잘 사용하지는 않는다.)

 

54강 Labels and Selectors

Label metadata에서 object 식별하기 위한 key/value 

Selectors label,을 이용해 쿠버네티스 리소스 필터링

Annotations 다른 detail을 기록 (ex.phone number, email ID, etc)

언제 사용할까?

  1. 클러스터에서 서로 다른 팀의 수백개 Pod이 동시에 실행되고 있는 상황에서 주문 트래픽을 주문 Pod으로, 배달 트래픽을 배달 Pod으로 라우팅 해야 할 때
  2. 꽃배달 기능 추가로 배달 트래픽이 증가되는 상황에서 클러스터에서 실행중인 배달 관련 Pod들을 수평 확장해야 할 때

 

*동시에 많은 node이 있을 때, kubectl get pods --selector env=dev | wc -l (header랑 합한 값 나옴)

 

57강 Taints and Tolerations

pod과 node의 상관관계

어떤 node에 어떤 pod를 배치할지 제한할 수 있는 방법

  • no schedule : pod가 node에서 배치 되어있지 않음
  • PreferNoSchedule: system이 node에 pod를 배치하지 않도록 시도, 보장 x
  • noExecute: node에서 새 pod가 스케쥴되어있지 않고, 기존 node가 있으면 제거되는 것, masternode에 기본적으로 있음 
  • node에 장애가 발생하게 되면 쿠버네티스는 해당 node의 pod가 정상적으로 구동되지 않을 수 있기 때문에, noExectue태그를 자동으로 달아줌-> ReplicaSet은 연결된 pod가 없어졌기 때문에 다른 node에 pod를 생성해서 서비스 제공

kubectl taint nodes node-name key=value:taint-effect

 

Node할당제한

Toleration, Taint 기능 사용

->Toleration 옵션이 있어야 할당 가능 (ex GPU와 같은 특별한 하드웨어 옵션을 가진 노드들을 이용)

Taint가 달린 노드엔 아무 pod가 들어갈 순 x toleration이 있어도 key, value, operator, effect 모두 일치해야함

 

--dry-run -o yaml 실제 pod를 생성하지 않고 cluster로 보낼 object 미리 볼 수 있음 

 

60강 Node Selectors

  • limitations
  • nodeSelector와 key, value를 지정하면 해당 label을 갖고 있는 node에만 배포가 진행.
  • pod-definition.yaml 안에 spec 안 nodeSelector: size:Large

kubectl label node node명 key=value

 

61강 Node Affinity

advanced 된 selector

taint는 node에서 pod를 멀리 보냄/ node affinity 는 pod를 특정 node로 유인

label을 기반으로 node 선택

operator:exists 

 

Available:

  • requiredDuringSchedulingIgnoredDuringExecution

->node가 pod를 node에 배치하기 위해 갖고 있어야하는 label을 지정한다 

  • requiredDuringSchedulingIgnoredDuringExecution

->노드에서 이미 실행 중인 pod에는 영향 x

-> -> pod가 node에 스케쥴 되도록 반드시 규칙을 만족해야함 즉, 스케쥴링하는 동안 꼭 필요한 조건 의미

 

 

<Soft affinity>

preferredDuringSchedulingIgnoredDuringExecution

-> pod가 node에 배포하려고 시도는 하지만 보증 x 

 

Planned:

requiredDuringSchedulingRequiredDuringExecution

 

 

참조:

https://velog.io/@ghdud0503/Kubernetes-%EA%B8%B0%EC%B4%88-6-Lable-Selector

 

Kubernetes 기초 (6) - Lable & Selector

쿠버네티스 오브젝트를 식별하기 위한 key/value 쌍의 메타정보쿠버네티스 리소스를 논리적인 그룹으로 나누기 위해 붙이는 이름표Label을 이용해 쿠버네티스 리소스를 필터링하고 원하는 리소스

velog.io

https://velog.io/@niyu/k8s-node-affinity-pod-affinity

Comments