푸잉이의 기술블로그
[Day5] Certified Kubernetes Administrator (CKA) with Practice Tests 본문
[Day5] Certified Kubernetes Administrator (CKA) with Practice Tests
data고수 2023. 1. 10. 00:0451강. 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)
언제 사용할까?
- 클러스터에서 서로 다른 팀의 수백개 Pod이 동시에 실행되고 있는 상황에서 주문 트래픽을 주문 Pod으로, 배달 트래픽을 배달 Pod으로 라우팅 해야 할 때
- 꽃배달 기능 추가로 배달 트래픽이 증가되는 상황에서 클러스터에서 실행중인 배달 관련 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