[k8s] pod 2

이정훈·2023년 4월 21일
0

k8s

목록 보기
4/17
post-thumbnail

노드 스케줄러

  • 그래픽 카드가 있는 서버 인공지능을 학습시키는 서버를 운영하는 특정 컴퓨터에서 실행될때 그 노드의 이름을 적어줘야 한다
apiVersion: v1
kind: Pod
metadata:
  name: hello-pod2
  labels:
    app: hello
spec:
  nodeSelector:
    kubernetes.io/hostname: node-02
  containers:
  - name: hello-container1
    image: gugucone/hello:9000
    ports:
    - containerPort: 9000
  - name: hello-container2
    image: gugucone/hello:8000
    ports:
    - containerPort: 8000
  • 노드 스케줄러에서 원하는 노드에 생성할 수 있다.
  • 여기서 hello-pod 3 다음에 4는 node-01에 만들어져야 잘 분배가 되는데 노드 스케줄러로 node-02로 지정해서 만들 수 있다.
  • 볼륨을 사용할 때도 노드스케줄러가 필요하다!

QoS (Quality Of Service)

  • 보통 자원의 제한을 걸때
  • 시스템의 자원을 사용할 때 제한이 걸려있지 않다...
  • 호스트 pc의 자원을 전부 사용할 수 있다. 근데 이렇게 되면 워커노드 자체가 죽어버릴 수 있다.
  • 그래서 파드안에 컨테이너가 일정한 자원만 쓸수 있도록 제한을 걸어줘야한다.
apiVersion: v1
kind: Pod
metadata:
  name: hello-pod-01
  labels:
    app: hello
spec:
  nodeSelector:
    kubernetes.io/hostname: node-02
  containers:
  - name: hello-container-01
    image: gugucone/hello:8000
    ports:
    - containerPort: 8000
    resources:
      requests:   # 이자원이 남아있는 워커에게 일을 시키겠다.
        memory: 3Gi
      limits:   # 해당 파드의 컨테이너가 사용할 수 있는 최대 사용량
        memory: 3Gi

watch -n 1 free 1초에 한 번씩 free 명령어를 실행해줘라

참고! Guaranteed > Burstable > BestEffort

  • 리소스의 값을 어떻게 설정하냐에 따라서 위 세가지가 정해진다.

BestEffort

  • 리소르를 설정하지 않았을 때, 지정해놓은 자원을 정해놓지 않기때문에 없어질 수도 잇는 자원들

Burstable

  • requests<limits 일때

Guaranteed

  • requests=limits 값을 같게 설정
  • 이 친구들이 생성될 때 밀어내고 생성되는 우선순위가 아니라 실행될 때 살아있는 값이라고 생각해야한다.
profile
싱숭생숭늉

0개의 댓글