컨테이너 정의는 Kubernetes의 CPU 자원과 포드

간략한 소개

이 문서 쇼에서는 컨테이너 요청 CPU 및 CPU 한계를 정의합니다. 컨테이너는 설정된 한계를 초과 할 수있는 CPU에 의해 사용된다. 시스템 예비 CPU 시간을 갖는 경우, CPU는 용기의 수가 할당 요구되도록 할 수있다.

참고 :이 문서는 공식 문서를 참조하여 이해되어야합니다. 오해의 소지가있는 경우, 비판을하시기 바랍니다.

CPU 요청과 용기의 한계의 정의

네임 스페이스 만들기

# kubectl create namespace cpu-example

CPU를 정의하기 위해 컨테이너 재고 자원 사용, 컨테이너를 요청 resources:requests필드. CPU의 한계에 대한 정의는 용기 리소스리스트의 사용 resources:limits분야에만 다음 컨테이너가 CPU (1)의 수를 제한 0.5 CPU 요청이고, 포드 컨테이너를 생성한다. 파일 이름 :cpu-request-limit.yaml

apiVersion: v1
kind: Pod
metadata:
  name: cpu-demo
  namespace: cpu-example
spec:
  containers:
  - name: cpu-demo-ctr
    image: vish/stress
    resources:
      limits:
        cpu: "1"
      requests:
        cpu: "0.5"
    args:
    - -cpus
    - "2"

YAML 구성 파일 컨테이너 args구성 매개 변수 블록이 제공 --cpus "2"컨테이너 2 개 CPU를 사용하려고했다.

포드 만들기

# kubectl apply -f /root/k8s-example/pods/cpu-request-limit.yaml --namespace=cpu-example

포드가되었다는 실행 확인

# kubectl get pod cpu-demo --namespace=cpu-example

보기 포드 자원의 자세한 사항

# kubectl get pod cpu-demo --output=yaml --namespace=cpu-example

출력에서 본 용기 내의 CPU는 포드 요청 인 500 milliCPUCPU의 개수를 제한1

resources:
  limits:
    cpu: "1"
  requests:
    cpu: 500m

사용 kubectl top포드의 지표를 얻기 위해 메트릭을

# kubectl top pod cpu-demo --namespace=cpu-example

결과의 출력 포드 사용 1001 milliCPUCPU 포드의 수에 의해 정의 된 제한 미만,1

NAME       CPU(cores)   MEMORY(bytes)
cpu-demo   1001m        1Mi

당신이 우리보다 앞서의 포드를 만들 때 설정 -cpu "2"즉 컨테이너가 2 개 CPU를 사용하려고하는,하지만 컨테이너가 자신의 한계를 넘어 CPU 리소스를 사용하려고하기 때문에 컨테이너는 CPU 사용량이 컨테이너를 제한, 하나의 CPU를 할당됩니다.

삭제 포드

kubectl delete pod cpu-demo --namespace=cpu-example

삭제 네임 스페이스

# kubectl delete namespace cpu-example

CPU 단위

CPU 리소스를 사용하는 CPU단위로. 는 Kubernetes에서 동일하다

  • 1 AWS의 vCPU
  • 1 GCP 코어
  • 1 푸른 VCORE
  • 하이퍼 스레딩 베어 메탈 인텔 프로세서 1 하이퍼 스레드

CPU는 작은 값의 사용을 허용한다. 용기의 0.5 CPU는 요청이 CPU. 1 개 CPU 반 컨테이너에 요청인지 확인한다. 당신은 접미사 m은 사용할 수 있습니다 milli. 예를 들어 동일한 100m의 CPU, 100 milliCPU 0.1 CPU. 정확도는 1m 초과 할 수 없습니다.

CPU 정의 CPU를 요청하는 노드의 수보다 훨씬 더 큰

CPU가 사용자 정의 포드 및 제한을 요청하는 경우, CPU 요청 및 컨테이너에서 한계의 정의는 매우 유용하다. 포드 CPU는 다수의 CPU 내의 모든 컨테이너 동일한 요청은 포드 합을 요청하는; 포드 CPU 제한 포드 CPU 한계 내의 모든 용기의 합과 같다.

스케줄링 리퀘스트에 기초하여 포드는 포드 노드는 충분한 CPU 리소스 노드 노드 만족 포드 요청의 CPU 리소스가 예정된다.

포드 만들기, 포드는 CPU의 CPU의 총 수는 클러스터 노드의 노드를 요청하는 것보다 훨씬 더 크다. 파일 이름 :``

# kubectl apply -f /root/k8s-example/pods/cpu-request-limit-2.yaml --namespace=cpu-example

보기 포드 상태

# kubectl get pod cpu-demo-2 --namespace=cpu-example

포드는 상태의 결과로부터Pending

NAME         READY     STATUS    RESTARTS   AGE
cpu-demo-2   0/1       Pending   0          7m

보기 포드 자원의 자세한 사항

# kubectl describe pod cpu-demo-2 --namespace=cpu-example

그 결과, 컨테이너 노드에 모든 노드에 예약 할 수 없습니다, 모든 노드 노드는 충분한 CPU 리소스가 없습니다.

Events:
  Type     Reason            Age        From               Message
  ----     ------            ----       ----               -------
  Warning  FailedScheduling  <unknown>  default-scheduler  0/7 nodes are available: 7 Insufficient cpu.

삭제 포드

# kubectl delete pod cpu-demo-2 --namespace=cpu-example

어떤 사용자 정의 CPU의 제한 없음

경우, 다음 중 하나에 대한 어떤 CPU 제한 사용자 지정 컨테이너 :

  • 컨테이너 CPU 리소스를 한 컨테이너가 실행되고, 컨테이너가 노드 노드의 모든 CPU 자원을 이용할 수있다, 상한을 사용하지
  • 기본 CPU 바인딩 네임 스페이스에서 실행되는 컨테이너는 컨테이너가 자동으로 기본 CPU의 한계를 할당, 클러스터 관리자가 사용할 수있는 LimitRange기본 CPU 제한을 설정하는 객체.

는 CPU 요청과 제한의 수를 설정하는 이유

클러스터 요청 CPU 및 메모리 제한에 컨테이너를 구성하여, CPU 자원을 합리적으로 노드 클러스터 노드를 사용할 수 있습니다. 는 CPU가 합리적인 범위 내에서 포드의 요청을 보장하는 경우, 포드는 합리적으로 클러스터 노드에서 해당 노드에 예약 할 수 있습니다.

추천

출처www.cnblogs.com/mcsiberiawolf/p/12214536.html