Pod가 특정 Node에만 schedule될 수 있게 하는 것
** 그러나 multi label이라던지 복잡한 selector은 불가능
pod-definition.yml
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
spec:
containers:
- name: data-processor
image: data-processor
nodeSelector:
size: Large
kubectl label nodes <node-name> <label-key>=<label-value>
ensure pods are hosted on particular node
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: size
operator: In
values:
- large
containers:
- name: nginx
image: nginx
Taints/Tolerations
는 node에 특정 pod만 배포될 수 있도록 할 수 있고,
Node Affinity
로 pod가 특정 node에만 배포될 수 있도록 할 수 있다.
즉, 두개 모두 사용
시 특정 pod가 특정 node에만 배포되고 다른 pod는 해당 node에 배포되지 못하게 할 수 있다.
ReplicaSet과 비슷하지만 pod가 각 node에 하나씩 스케줄링되도록 한다.
항상 모든 node에 pod가 배포되는 것을 보장한다.
만약 node가 삭제되면, 해당 노드에 배포된 pod도 삭제된다.
kubernetes control plane에 독립적으로, kubelet을 통해서만 관리되는 pod
만약 pod에 문제가 생기면 kubelet이 자동으로 restart시킴
master node에 control plane component(api server, controller, etc.) 를 pod로 구성시키는데 사용됨