베하~! BTC_녹차공원 팀의 하동녹차 입니다.
Kubernetes Taint 에 대해 알아보겠습니다!
쿠버네티스 테인트(Taint)
쿠버네티스(Kubernetes)에서 "Taint(테인트)"는 노드(Node)에 특정 조건을 부여하여 해당 노드에만 특정 유형의 파드(Pod)가 스케줄링되도록 하며 클러스터 내에서 리소스 및 워크로드를 효율적으로 관리하는 데 사용됩니다.
Taint의 적용 효과로 "NoSchedule", "PreferNoSchedule", "NoExecute" 중 하나 입니다.
- "NoSchedule": 해당 Taint가 있는 노드에는 일치하는 파드가 스케줄링
- "PreferNoSchedule": 일치하는 파드가 노드에 스케줄링되지 않는 것
- "NoExecute": 이미 노드에서 실행 중인 파드에 대한 Taint 적용으로 해당 노드에서 해당 파드가 종료
Taint를 설정하면 특정 노드에 파다를 스케줄링할 때 해당 Taint에 대한 Toleration을 설정하는 것이 중요합니다.
파드에서 이러한 정의하면 특정 Taint를 가진 노드에도 파드를 스케줄링할 수 있습니다.
Taint와 Toleration은 클러스터 관리 및 워크로드 분산에 유용하며, 예를 들어 특정 노드에 특별한 하드웨어 또는 리소스를 활용하는 워크로드를 제어하거나 격리된 환경을 만들 때 사용됩니다.
Kubernetes Taint 실습
실습 사이트 주소 입니다.
Taint와 Toleration을 사용하는 간단한 실습을 해보겠습니다.
노드에 Taint를 설정하고, 파드가 해당 노드에 스케줄링되도록 Toleration을 파드 spec 에 추가하는 방법을 다룹니다.
먼저, 노드에 Taint를 설정합니다. "special=true:NoSchedule"라는 Taint를 설정하겠습니다.
kubectl taint nodes <node-name> special=true:NoSchedule
적용이 잘 되었는지 확인해 보겠습니다.
k describe nodes | grep -i taint
이제 파드를 생성하고 Toleration 추가해 보겠습니다
Toleration을 사용하여 Taint가 설정된 노드에 팟을 스케줄링하려면 pod spec 에 Toleration을 추가해야 합니다.
YAML 파일을 사용하여 팟을 정의하고 Toleration을 설정해 보겠습니다.
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx:latest
tolerations:
- key: "special"
operator: "Equal"
value: "true"
effect: "NoSchedule"
이제 이 YAML 파일을 사용하여 파드를 생성합니다.
kubectl apply -f taint.yaml
이 Pod는 "special=true:NoSchedule" Taint가 설정된 노드에도 스케줄링됩니다.
이제 이 파드가 어떤 노드에서 실행되었는지와 파드의 상태를 확인해보겠습니다.
kubectl get pods -o wide
node01 에 생성 된 것을 확인 할 수 있습니다.
이렇게 간단한 예제를 통해 노드에 Taint를 설정하고, 파드가 해당 노드에 스케줄링되도록 Toleration을 파드 spec 에 추가하는 방법을 확인할 수 있습니다.
Kubernetes Taint 에 대해 알아보았습니다.
다음번에는 더욱 재밌는 주제로 찾아오겠습니다.
이상 BTC_녹차공원 팀이였습니다!
베빠~!
'INFRA > DevOps' 카테고리의 다른 글
[DevOps] Jenkins Git 연동 (0) | 2023.09.15 |
---|---|
[K8S] Multi Container (0) | 2023.09.13 |
Git Branch의 개념과 활용 (0) | 2023.09.01 |
[DevOps]EC2 Ubuntu에 Jenkins 설치 (0) | 2023.08.30 |
[K8S] NodeSelector (0) | 2023.08.29 |
댓글