CKA Study Day 5

김건호·2023년 3월 30일
0

49-61

Scheduling

스케쥴러 없을 경우 셀프로 스케쥴링

apiVersion: v1
kind: Pod
metadata: 
  name: nginx
  labels: 
    app: nginx
    tier: frontend
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
      - containerPort: 8080
    nodeName <- 쿠버네티스가 설정

스케쥴러 파드 상태 확인 후 nodeNAme이 없는 노드를 찾음
스케쥴링 알고리즘 -> 올바른 노드 확인
확인 되면 노드에 파드를 지정 노드의 이름을 지정하여

스케쥴링할 스케쥴러가 없다면 pod pending -> 직접 지정 가능

파드 만드는 동안 nodeName필드에 직접 지정 -> 생성 시에만 지정 가능
쿠버네티스 노드이름 수정 못하게 함

Binding리소스를 생성하여 target node를 지정

apiVersion: v1
kind: Binding
metadata:
  name: nginx
target:
  apiVersion: v1
  kind: Node
  name: node02

노드 지정 -> 바인딩 API에 POST를 보냄 Json포맷으로

Labels & Selectors

그룹을 묶는 표준 -> 필터링을 하기 위함

레이블은 속성 셀렉터는 이 속성들을 필터링하는 것을 도와줌

metadata.labels 아래에 key-value 형식으로 레이블 설정 가능

kubectl get pods --selector app=App1

쿠버네티스는 내부에서 사용하여 다른 개체들을 연결함

rs는 파드를 그룹으로 묶을 때 사용
template 아래에 레이블은 파드의 레이블, metadata.labels 는 rs의 레이블

서비스에서도 파드의 레이블을 일치시켜서 생성

annotatinos

정보 수집 목적으로 다른 세부 사항을 기록하는데 사용

이름 버전 빌드 정보와 같은 정보들

Taints and Tolerations

Taint 노드에 설정 가능하며 파드가 생성되지 못하도록 설정
Tolerations Taint를 무시하는 속성 파드에 설정 가능

노드1에 taint 설정 -> 노드1에 스케쥴링 되지 않음
파드 D에 tolerations 설정 시 노드1에 스케쥴링 가능
ABC는 노드 2,3에 배치

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

NoSchedule: 파드 스케쥴링 불가
PreferNoSechedule: 스케쥴링 안되는걸 선호
NoExecute: 실행 불가 새 파드가 노드에 지정되지 않고 기존 파드가 있다면 퇴거되어야 하는

kubectl taint nodes node1 appblue:NoSchedule

..
kind: Pod
...
spec:
  tolerations:
  - key: app
    operator: "Equal"
    value: "blue"
    effect:" NoSchedule"

모든 값은 더블코드로 인코딩 되어야 함

스케쥴러는 마스터노드에 파드를 스케쥴링 하지 않음
생성시 마스터노드에 자동으로 설정

kubectl describe node kubemaster | grep Taint

Node Selectors

pod.spec.nodeSelector

size <- labels
파드를 찾아낼 노드를 찾기 위해 설정

노드에 레이블을 설정하는 법

kubectl label nodes =

보다 복잡한 요구 사항이라면? -> Node Affinity

profile
Ken, 🔽🔽 거노밥 유튜브(house icon) 🔽🔽

0개의 댓글