Kubernetes의 범위 제한
이 페이지에서
- 전제 조건
- 무엇을 할 것인가?\n
- 기본 네임스페이스에 LimitRange 만들기
- 기본 네임스페이스에서 CPU 제한 및 범위를 사용하여 Pod 생성\n
- 한도가 있는 포드\n
- CPU가 더 많은 포드:
- CPU가 적은 포드:
- CPU가 없는 포드:
범위 제한을 사용하면 기본적으로 컨테이너가 Kubernetes 클러스터에서 무제한 컴퓨팅 리소스로 실행되므로 리소스 소비 및 생성을 제한할 수 있습니다. Pod는 제한 범위에 정의된 만큼의 CPU와 메모리를 사용할 수 있습니다.
범위 제한은 다음에 대한 제약 조건을 제공합니다.
- 최소 및 최대 자원
- PersistentVolumeClaim당 최소 및 최대 스토리지 요청
- 네임스페이스의 리소스에 대한 요청과 제한 간의 비율입니다.\n
- 컴퓨팅 리소스에 대한 기본 요청/제한 설정\n
제한 범위에 대해 자세히 알아보려면 여기에서 Kubernetes의 공식 문서를 방문하세요.
이 도움말에서는 제한 범위를 만들고 컨테이너 및 포드에서 사용하는 CPU 리소스의 최소값과 최대값을 설정하는 방법을 알아봅니다. CPU에서 제한 및 요청이 있는 다양한 시나리오를 볼 수 있습니다.
전제 조건
- 워커 노드가 1개 이상 있는 Kubernetes 클러스터.
Kubernetes 클러스터를 만드는 방법을 알아보려면 여기를 클릭하세요. 이 안내서는 AWS Ubuntu EC2 인스턴스에서 1개의 마스터와 2개의 노드가 있는 Kubernetes 클러스터를 생성하는 데 도움이 됩니다.\n
우리는 무엇을 할 것인가?
- 기본 네임스페이스에 LimitRange를 만듭니다.
- 기본 네임스페이스에서 CPU 제한 및 범위를 사용하여 Pod 생성\n
기본 네임스페이스에 LimitRange 만들기
기본 네임스페이스에서 제한 범위를 정의하는 파일을 만듭니다.
vim set-limit-range.yml
apiVersion: v1 kind: LimitRange metadata: name: set-limit-range spec: limits: - max: cpu: "800m" min: cpu: "200m" type: Container
기본 네임스페이스에서 기존 제한 범위 목록을 가져오고 위 단계에서 만든 파일을 사용하여 목록을 만듭니다.
kubectl get limitrange
kubectl create -f set-limit-range.yml
kubectl get limitrange
kubectl describe limitrange set-limit-range
위의 스크린샷에서 CPU를 "Min=200m" 및 "Max=800m"로 정의하는 제한 범위를 생성한 것을 볼 수 있습니다.
즉, 기본 네임스페이스의 pod는 CPU가 \Min=200m 미만\ 및 \Max=800m 초과\일 수 없습니다.
기본 네임스페이스에서 CPU 제한 및 범위를 사용하여 Pod 만들기
한도가 있는 포드
200m 이상 800m 미만의 CPU를 요청하는 pod 정의 만들기
vim pod-with-cpu-within-range.yml
apiVersion: v1 kind: Pod metadata: name: pod-with-cpu-within-range spec: containers: - name: pod-with-cpu-within-range image: nginx resources: limits: cpu: "800m" requests: cpu: "500m"
기존 포드를 나열하고 위 단계에서 만든 파일로 새 포드를 만듭니다.
kubectl get pods
kubectl create -f pod-with-cpu-within-range.yml
kubectl get pods
kubectl describe pod pod-with-cpu-within-range
위의 스크린샷에서 정의된 CPU 요청 및 제한으로 포드가 생성된 것을 볼 수 있습니다.
CPU가 더 많은 포드:
이번에는 CPU 제한이 1.5, 즉 800m 이상인 포드를 만들 수 있습니다.
vim pod-with-cpu-more-than-limit.yml
apiVersion: v1 kind: Pod metadata: name: pod-with-cpu-more-than-limit spec: containers: - name: pod-with-cpu-more-than-limit image: nginx resources: limits: cpu: "1.5" requests: cpu: "500m"
기존 포드 목록을 가져오고 제한 범위에서 정의한 "800m"보다 CPU 제한이 "1.5"인 새 포드를 생성해 보세요.
kubectl get pods
kubectl create -f pod-with-cpu-more-than-limit.yml
위 스크린샷에서 Pod가 생성되지 않은 것을 확인할 수 있습니다.
CPU가 적은 포드:
이제 제한 범위에서 정의한 "200m" 미만인 "CPU=100m"를 요청하는 포드를 생성해 보겠습니다.
vim pod-with-cpu-less-than-limit.yml
apiVersion: v1 kind: Pod metadata: name: pod-with-cpu-less-than-limit spec: containers: - name: pod-with-cpu-less-than-limit image: nginx resources: limits: cpu: "800m" requests: cpu: "100m"
이제 기존 pod 목록을 가져오고 위의 정의 파일로 pod를 만들어 보세요.
kubectl get pods
kubectl create -f pod-with-cpu-less-than-limit.yml
이번에도 제한 범위를 정의한 200m보다 적은 CPU=100m를 요청했기 때문에 포드 생성이 실패합니다.
CPU가 없는 포드:
이 시나리오에서는 CPU에 대한 요청이나 제한을 정의하지 않습니다.
vim pod-with-no-cpu.yml
apiVersion: v1 kind: Pod metadata: name: pod-with-no-cpu spec: containers: - name: pod-with-no-cpu image: vish/stress
이제 포드를 생성하고 해당 설명을 살펴보겠습니다.
kubectl get pods
kubectl create -f pod-with-no-cpu.yml
kubectl describe pods pod-with-no-cpu
위의 스크린샷에서 CPU에 대한 요청이나 제한을 지정하지 않으면 POD가 제한 범위에 지정된 제한과 동일한 CPU를 할당받는 것을 볼 수 있습니다. 제한 범위에 지정된 제한이 800m와 동일
결론
이 문서에서는 기본 네임스페이스에서 제한 범위를 만드는 단계를 살펴보았습니다. 그런 다음 Pod의 CPU 제한 및 요청에 대해 다양한 시나리오를 시도했습니다.