본문 바로가기

K8S/Scheduling7

Static Pods 일반적으로 파드는 컨트롤 플레인에 의해 스케쥴링되고 관리됩니다. kubelet은 worker node에서 동작하는 컨트롤러로 master node의 api server, kube scheduler와 상호작용하여 해당 노드에 어떤 리소스를 배치할지 정합니다. 그럼 만약 ectd, kube-apiserver, kube-scheduler가 없으면 어떻게 될까요? kubelet은 단독으로 pod 생성과 관리가 가능합니다. api server가 없으므로 kubelet은 로컬 내 디렉토리를 설정하고 해당 디렉토리 안의 pod definition file을 사용하여 pod를 생성 및 관리합니다. 이렇게 kubelet이 api server의 개입 없이 단독으로 생성하고 관리하는 pod를 static pod라고 합니다... 2024. 1. 19.
Daemon Sets Daemon Set은 클러스터의 모든 노드 또는 특정 노드 그룹에 하나의 pod 를 실행하도록 하는 컨트롤러입니다. 데몬셋은 모든(또는 일부) 노드가 파드의 사본을 실행하도록 합니다. 노드가 클러스터에 추가되면 파드도 추가되며, 노드가 클러스터에서 제거되면 해당 파드는 garbage로 수집되어 자동 삭제됩니다. 데몬셋을 삭제하면 데몬셋이 생성한 파드들이 정리됩니다. Deployment와 유사하지만 다른 점은 특정 노드 또는 모든 노드에 항상 실행되어야 할 특정 파드를 관리해야 한다는 것이다. 보통 컨트롤 플레인에 해당하는 컴포넌트(kube-apiserver, etcd, scheduler, kube-proxy 등등)를 데몬셋으로 관리합니다. DaemonsSet Use Case 일반적으로 monitoring.. 2024. 1. 19.
[Scheduling] Resource Requirements and Limits 앞서 공부했듯이, 스케쥴러가 노드의 리소스 현황을 확인하고 파드를 배정해줍니다. 만약 어떤 노드에 더 이상 자원이 없을 때는 해당 노드에 파드를 배정하지 않습니다. 모든 노드에 자원이 없을 때는 리소스가 running 상태로 들어가지 못하고 pending 상태에 머물러 있다. 이 때 파드의 Events를 확인하(describe 명령어)면 Insufficient cpu 혹은 memory 등으로 상태를 확인할 수 있다. Resource Requests apiVersion: v1 kind: Pod metadata: name: simple-webapp-color labels: name: seimple-webapp-color spec: containers: - name: simple-webapp-color ima.. 2024. 1. 19.
Node Selectors & Node Affinity⭐⭐⭐ Node Selector 와 Node Affinity를 사용하여 파드가 특정 노드에만 실행되도록 제한을 설정할 수 있습니다. 특정한 노드들에서만 동작하거나 특정한 노드 집합에서 동작하는 것을 선호하도록 제한 설정이 가능합니다. 1. Node Selector 파드의 spec 섹션에 node selector라는 새 필드를 추가하여 간단하고 쉽게 설정이 가능합니다. node selector에서 레이블을 사용하므로 파드 생성 전에 우선 노드에 레이블을 지정해 줘야 한다. 설정한 노드 이름을 key-value 형식으로 사용하여 node selector에서 설정할 수 있습니다. apiVersion: v1 kind: Pod metadata: name: myapp-pod spec: containers: - name: .. 2024. 1. 19.