728x90
<Kubernetes 쿠버네티스 :: 노드 스케줄링 실습 >
<Node Schedule>
- 쿠버네티스 배포가 더 크고 다양해지면 스케줄링 (노드 할당) 관리가 더 중요해짐
- 사용자가 원하는 노드에 스케줄링 가능
- nodeSelector: kuce-schedualr에게 직접 노드 배치 요청
- nodeName: 해당 노드의 kubelet에게 직접 요청
- Affinity: 다양한 조건 (친밀도, Affinity)으로 노드 배치 요정
- Tolerations: Taint가 설정된 노드 강제 허용 요청
- schedulerName: 멀티 클러스터 환경인 경우
- 사용자 정의 스케줄러
- 마스터 노드에는 Taint(자물쇠) 설정으로 Application Pod를 할당하지 않음
- 따라서, 이를 허용하기 위해서는 Tolerations(열쇠)이 요구
<Taint 구성 요소>
- nodeSchedule 폴더 생성하여 실습 진행
1. 명령어로 sch-test1.yaml 파일 생성
PS C:\\Users\\admin\\Desktop\\k8s-pods> kubectl run sch-test1 --image=nginx:1.25.3-apline --dry-run=client -o yaml > shc-test1.yaml
<sch-test1.yaml>
- kubernetes.io/hostname: k8s-node1: Pod를 특정 노드(k8s-node1)에 스케줄링
apiVersion: v1
kind: Pod
metadata:
name: sch-test1
spec:
nodeSelector:
kubernetes.io/hostname: k8s-node1
containers:
- image: nginx:1.25.3-alpine
name: sch-test1
2. sch-test1 pod 실행
PS C:\\Users\\admin\\Desktop\\k8s-pods> kubectl apply -f sch-test1
pod/sch-test1 created
3. "k8s-node2"와 "k8s-node3"에 레이블 추가
- gpu: 컴퓨터 그래픽스와 이미지 처리 작업을 수행하는 데 주로 사용
PS C:\\Users\\admin\\Desktop\\k8s-pods> kubectl label nodes k8s-node2 cputype=gpu
node/k8s-node2 labeled
PS C:\\Users\\admin\\Desktop\\k8s-pods> kubectl label nodes k8s-node3 cputype=cpu
node/k8s-node3 labeled
<설정 확인>
4. sch-test2.yaml 생성
<sch-test2.yaml>
- GPU를 가진 노드에 배치되는 pod 생성 파일
apiVersion: v1
kind: Pod
metadata:
name: sch-test2
spec:
nodeSelector:
cputype: gpu
containers:
- image: nginx:1.25.3-alpine
name: sch-test2
5. 노드 레이블 수정
- 노드 k8s-node2에 cputype 레이블을 cpu2으로 수정
PS C:\\Users\\admin\\Desktop\\k8s-pods> kubectl label nodes k8s-node2 cputype=cpu2 --overwrite
node/k8s-node2 labeled
<수정 확인>
- 레이블 삭제
PS C:\\Users\\admin\\Desktop\\k8s-pods> kubectl label nodes k8s-node2 cputype-
node/k8s-node2 unlabeled
- 레이블 추가
- "k8s-node1 / k8s-node2 / k8s-node3에 node-role.kubernetes.io/worker=data-plane 레이블 추가
- 데이터 처리 및 저장과 같은 데이터 플레인 역할을 수행하는 워커 노드
PS C:\\Users\\admin\\Desktop\\k8s-pods> kubectl label nodes k8s-node1 node-role.kubernetes.io/worker=data-plane
node/k8s-node1 labeled
PS C:\\Users\\admin\\Desktop\\k8s-pods> kubectl label nodes k8s-node2 node-role.kubernetes.io/worker=data-plane
node/k8s-node2 labeled
PS C:\\Users\\admin\\Desktop\\k8s-pods> kubectl label nodes k8s-node3 node-role.kubernetes.io/worker=data-plane
node/k8s-node3 labeled
<워커 노드 역할 적용 확인>
'클라우드 + DevOps > Kubernetes (k8s)' 카테고리의 다른 글
Kubernetes 쿠버네티스 실습 :: 데이터 공유 Volume 1 (0) | 2024.04.27 |
---|---|
Kubernetes 쿠버네티스 :: taint 설정 실습 (0) | 2024.04.26 |
Kubernetes :: Master 서버와 Node 연결 (0) | 2024.04.25 |
Kubernetes :: 쿠버네티스 클러스터 모니터링 서비스 KubeShark (0) | 2024.04.24 |
Kubernetes :: 라벨 및 네임스페이스 제작 실습 (0) | 2024.04.23 |