affinity

노드의 레이블을 기반으로 파드를 스케줄할 수 있는 노드를 제한하는 기능으로 파드가 노드를 선택해서 들어가는것

affinity를 사용해 노드 스케줄링하기

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: <nam 보통 type이라는 말을 많이 씀 nodetype disktype 등..>
            operator: In
            values:
            - <value 값,, request, gateway, ssd 등...>            
  containers:
  - name: hi

노드에 Role 추가하기.

Before label:

eneral@master-node:~$ kubectl get nodes
NAME          STATUS   ROLES    AGE   VERSION
master-node   Ready    master   23m   v1.18.2
slave-node    Ready    <none>   19m   v1.18.2

kubectl label nodes <your_node> kubernetes.io/role=<your_label>

[kubernetes.io/role](http://kubernetes.io/role) 없이 바로 label이름을 가면 롤은 none 그대로

In my case slave-node e.g.

kubectl label nodes slave-node kubernetes.io/role=worker

After label:

general@master-node:~$ kubectl label nodes slave-node kubernetes.io/role=worker
node/slave-node labeled
general@master-node:~$ kubectl get nodes
NAME          STATUS   ROLES    AGE   VERSION
master-node   Ready    master   24m   v1.18.2
slave-node    Ready    worker   21m   v1.18.2

You can also change the label. Just put --overwrite

kubectl label --overwrite nodes kubernetes.io/role=e.g.kubectl label --overwrite nodes slave-node kubernetes.io/role=worker1

After overwriting the label:

general@master-node:~$ kubectl label --overwrite nodes slave-node kubernetes.io/role=worker1
node/slave-node labeled
general@master-node:~$ kubectl get nodes
NAME          STATUS   ROLES     AGE   VERSION
master-node   Ready    master    36m   v1.18.2
slave-node    Ready    worker1   32m   v1.18.2

Add Role

kubectl label node <node name> node-role.kubernetes.io/<role name>=<key - (any name)>

Remove Role

kubectl label node <node name> node-role.kubernetes.io/<role name>-

 

반응형

+ Recent posts