728x90
반응형
# 수동 스케줄링
- 수동으로 pod를 원하는 node에 수동으로 배치하기
vim http-go.yaml
apiVersion: v1
kind: Pod
metadata:
name: http-go
spec:
containers:
- name: http-go
image: busybox
nodeName: work1
kubectl create -f http-go.yaml
* 만약
error: unable to recognize "http-go.yaml": no matches for kind "Pod" in version "apps/v1"
에러가 발생한다면 yaml 파일의 상단의 버전정보를 apiVersion: apps/v1 > apiVersion: v1 변경하여 주면 된다.
# 실행된 pod 확인하기
kubectl get pod
kubectl get pod -o wide
- 원하는 노드에 배치된 것을 확인 할 수 있다.
ec2-user:~/environment/yaml $ k get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
http-go 1/2 CrashLoopBackOff 4 2m26s 192.168.45.179 ip-192-168-41-137.ap-northeast-2.compute.internal <none> <none>
ec2-user:~/environment/yaml $
# 레이블링을 통한 수동배치
vim http-go-label.yaml
apiVersion: v1
kind: Pod
metadata:
name: http-go-gpu
spec:
containers:
- name: http-go
image: busybox
nodeSelector:
gpu: "true"
kubectl create -f http-go-label.yaml 을 실행하면 현재 레이블링이 안되어 있기 때문에 pending 상태로 존재한다.
ec2-user:~/environment/yaml $ kubectl get pod
NAME READY STATUS RESTARTS AGE
http-go 1/2 CrashLoopBackOff 6 8m43s
http-go-gpu 0/2 Pending 0 26s
# 노드 상세 조회하기
ec2-user:~/environment/yaml $ kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
ip-192-168-41-137.ap-northeast-2.compute.internal Ready <none> 116m v1.21.4-eks-033ce7e 192.168.41.137 54.180.115.230 Amazon Linux 2 5.4.149-73.259.amzn2.x86_64 docker://20.10.7
# 레이블 정보 조회
kubectl get nodes --show-labels
ec2-user:~/environment/yaml $ kubectl get nodes --show-labels
NAME STATUS ROLES AGE VERSION LABELS
ip-192-168-41-137.ap-northeast-2.compute.internal Ready <none> 105m v1.21.4-eks-033ce7e alpha.eksctl.io/cluster-name=eksworkshop-eksctl-02,alpha.eksctl.io/nodegroup-name=nodegroup,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=m5.large,beta.kubernetes.io/os=linux,eks.amazonaws.com/capacityType=ON_DEMAND,eks.amazonaws.com/nodegroup-image=ami-01466c7fe3c06aa5b,eks.amazonaws.com/nodegroup=nodegroup,eks.amazonaws.com/sourceLaunchTemplateId=lt-0fac7cc40656f6d76,eks.amazonaws.com/sourceLaunchTemplateVersion=1,failure-domain.beta.kubernetes.io/region=ap-northeast-2,failure-domain.beta.kubernetes.io/zone=ap-northeast-2c,kubernetes.io/arch=amd64,kubernetes.io/hostname=ip-192-168-41-137.ap-northeast-2.compute.internal,kubernetes.io/os=linux,node.kubernetes.io/instance-type=m5.large,topology.kubernetes.io/region=ap-northeast-2,topology.kubernetes.io/zone=ap-northeast-2c
- gpu만 가진 레이블을 조회
kubectl get nodes -L gpu
# work2 배치하기
kubectl label nodes work2 gpu="true"
kubectl get nodes -L gpu
- gpu를 다시 확인해보면 work2에만 true가 붙은것을 확인 할 수 있다.
kubectl get nodes -L gpu 를 해보면 이전에 pending 상태였던 pod가 정상적인 상태로 변한것을 볼 수 있다.
728x90
반응형
'⭐ Kubernetes & EKS > Kubernetes (쿠버네티스)' 카테고리의 다른 글
쿠버네테스 api 버전 종류 (0) | 2021.10.15 |
---|---|
쿠버네티스 Create VS Apply 차이점 (0) | 2021.10.09 |
Static pod (스태틱 pod)에 대해서 알아보자 (0) | 2021.09.26 |
노드마다 포드를 하나씩 배치하는 방법 (1) | 2021.09.26 |
init 컨테이너 실행하기 (0) | 2021.09.20 |