컨테이너에 확장 리소스 지정

기능 상태: Kubernetes v1.31 [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

다음 내용

애플리케션 개발자들을 위한 문서

클러스터 관리자들을 위한 문서

최종 수정 June 20, 2024 at 12:44 PM PST: Sync changest from andygol/k8s-website (36d05bc8a1)