Kubernetes: Criando Pools de Workers usando Labels e NodeSelector

From Wiki
Revision as of 20:45, 26 June 2020 by Ebasso (talk | contribs)

Um pool de servidores em um cluster Kubernetes é um grupo de Workers Nodes que tem a mesma função ou característica.

Em um exemplo podemos ter um grande cluster Kubernetes para a empresa e termos pools de workers nodes para aplicações específicas, por departamentos, por tipo de carga que necessite um disco SSD ou que tem a necessidade de workers com GPU.

Para que exista essa separação precisamos definir um Label para um Worker Node, e através de um Deployment definirmos a opção NodeSelector. Assim quando o Pod for executar, ele será executado apenas no(s) worker(s) daquele pool.

Exemplo

Definindo o label para os Workers Nodes

kubectl label node worker-node10 appDept=RH
kubectl label node worker-node11 appDept=Financeiro

Você poderá confirmar usando o comando:

kubectl label nodes worker-node10 --list


Definindo o nodeSelector

Criamos o arquivo rh-deployment.yaml com o conteúdo:

apiVersion: apps/v1
kind: Deployment
metadata:
 labels:
   run: nginx
 name: rh-deployment
 namespace: default
spec:
 replicas: 1
 selector:
   matchLabels:
     run: nginx
 template:
   metadata:
     creationTimestamp: null
     labels:
       run: nginx
   spec:
     containers:
     - image: nginx
       imagePullPolicy: Always
       name: nginx2
       ports:
       - containerPort: 80
         protocol: TCP
       resources: {}
       terminationMessagePath: /dev/termination-log
       terminationMessagePolicy: File
     dnsPolicy: ClusterFirst
     restartPolicy: Always
     schedulerName: default-scheduler
     securityContext: {}
     terminationGracePeriodSeconds: 30
     nodeSelector:
       appDept: RH

E executamos com o comando:

kubectl create -f rh-deployment.yaml


Faça uma cópia do arquivo rh-deployment.yaml para

cp rh-deployment.yaml financeiro-deployment.yaml

E altere somente

  name: financeiro-deployment
nodeSelector:
  appDept: Financeiro
kubectl create -f financeiro-deployment.yaml


Conferindo o resultado

Você poderá verificar o resultado com o comando

# kubectl get pods -o wide

NAME                           READY STATUS  RESTARTS  AGE  IP           NODE
rh-deployment-12d9...          1/1   Running  0        12m  172.17.0.5   worker-node10
financeiro-deployment-4z9f...  1/1   Running  0        13m  172.17.0.6   worker-node11



Ver também