Information in this document may be out of date
This document has an older update date than the original, so the information it contains may be out of date. If you're able to read English, see the English version for the most up-to-date information: Assign Extended Resources to a Container
컨테이너에 확장 리소스 지정
Kubernetes v1.28 [stable]
이 페이지는 컨테이너에 확장 리소스를 지정하는 방법을 보여준다.
시작하기 전에
쿠버네티스 클러스터가 필요하고, kubectl 커맨드-라인 툴이 클러스터와 통신할 수 있도록 설정되어 있어야 한다. 이 튜토리얼은 컨트롤 플레인 호스트가 아닌 노드가 적어도 2개 포함된 클러스터에서 실행하는 것을 추천한다. 만약, 아직 클러스터를 가지고 있지 않다면, minikube를 사용해서 생성하거나 다음 쿠버네티스 플레이그라운드 중 하나를 사용할 수 있다.
버전 확인을 위해서, 다음 커맨드를 실행kubectl version
.이 태스크를 수행하기 전에 노드에 대한 확장 리소스 알리기에서 연습한다. 그러면 노드 중 하나가 동글(dongle) 리소스를 알리도록 구성될 것이다.
파드에 확장 리소스 지정
확장 리소스를 요청하려면 컨테이너 매니페스트에 resources:requests
필드를 포함한다.
확장 리소스는 *.kubernetes.io/
외부의 모든 도메인으로 정규화된다.
유효한 확장 리소스 이름은 example.com/foo
형식을 갖는다.
여기서 example.com
은 조직의 도메인으로 대체하고,
foo
는 리소스를 설명할 수 있는 이름으로 짓는다.
다음은 컨테이너가 하나 있는 파드의 구성 파일이다.
apiVersion: v1
kind: Pod
metadata:
name: extended-resource-demo
spec:
containers:
- name: extended-resource-demo-ctr
image: nginx
resources:
requests:
example.com/dongle: 3
limits:
example.com/dongle: 3
구성 파일에서 컨테이너가 3개의 동글을 요청하는 것을 알 수 있다.
파드를 생성한다.
kubectl apply -f https://k8s.io/examples/pods/resource/extended-resource-pod.yaml
파드가 실행 중인지 확인한다.
kubectl get pod extended-resource-demo
파드의 상세 정보를 확인한다.
kubectl describe pod extended-resource-demo
출력은 동글 요청을 보여준다.
Limits:
example.com/dongle: 3
Requests:
example.com/dongle: 3
두 번째 파드 생성 시도
다음은 컨테이너가 하나 있는 파드의 구성 파일이다. 컨테이너는 두 개의 동글을 요청한다.
apiVersion: v1
kind: Pod
metadata:
name: extended-resource-demo-2
spec:
containers:
- name: extended-resource-demo-2-ctr
image: nginx
resources:
requests:
example.com/dongle: 2
limits:
example.com/dongle: 2
첫 번째 파드가 사용 가능한 4개의 동글 중 3개를 사용했기 때문에 쿠버네티스는 두 개의 동글에 대한 요청을 충족시킬 수 없을 것이다.
파드 생성을 시도한다.
kubectl apply -f https://k8s.io/examples/pods/resource/extended-resource-pod-2.yaml
파드 상세 정보를 확인한다.
kubectl describe pod extended-resource-demo-2
출력은 두 개의 동글을 가용할 수 있는 노드가 없기 때문에 파드를 스케줄할 수 없음을 보여준다.
Conditions:
Type Status
PodScheduled False
...
Events:
...
... Warning FailedScheduling pod (extended-resource-demo-2) failed to fit in any node
fit failure summary on nodes : Insufficient example.com/dongle (1)
파드 상태를 확인한다.
kubectl get pod extended-resource-demo-2
출력은 파드가 생성됐지만 노드에서 실행되도록 스케줄되지 않았음을 보여준다. 파드는 Pending 상태이다.
NAME READY STATUS RESTARTS AGE
extended-resource-demo-2 0/1 Pending 0 6m
정리
연습을 위해 생성한 파드를 삭제한다.
kubectl delete pod extended-resource-demo
kubectl delete pod extended-resource-demo-2