k8s nodeSelector와 node label 설정하기
2024. 5. 28. 09:04ㆍServer/Ubuntu
k8s에서 pod를 deployment할 때 특정 노드를 지정해서 내가 원하는 pod를 설치할 수가 있다.
(나같은 경우에는 특정 노드를 선택해 해당 노드에는 redis pod만 띄우도록 설정해 놓고 있다.)
일단 특정 노드를 선택하기 위해서는 해당 노드에 label을 지정해 주어야 한다.
우선 아래의 명령어를 통해 내가 가진 node들이 현재 어떤 label이 지정되어 있는지를 확인할 수 있다.
$> kubectl get nodes --show-labels
label 확인이 완료되었으면 특정 노드에 label을 명시하는 것도 가능하다.
$> kubectl label node [node 이름] name=redis
나같은 경우에는 특정 node에 name을 redis로 지정해 주었다.
이렇게 지정된 label은 deployment.yaml의 nodeSelector를 통해 사용이 가능하다.
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-deployment
namespace: default
spec:
selector:
matchLabels:
app: redis-app
replicas: 1
template:
metadata:
labels:
app: redis-app
spec:
containers:
- name: redis
image: redis:latest
imagePullPolicy: Always
resources:
requests:
cpu: 7500m
memory: 7024Mi
limits:
cpu: 7500m
memory: 7024Mi
ports:
- containerPort: 6379
nodeSelector: {
name: redis
}
위의 명세와 같이 배포를 하면 node의 name이 redis인 것만 찾아서 배포가 진행된다.