개요
k8s에서 namespace에 pod를 생성할 때 기본적으로 사용할 resource를 명시적으로 제한할 수가 있습니다.
본 Post는 해당 방벙을 알아보고 검증하는 방법을 알아보겠습니다.
관련 설정 URL
https://kubernetes.io/docs/tasks/administer-cluster/manage-resources/memory-default-namespace/
Namespace 만들기
kubectl create namespace default-mem-example
Memory 제한
설정
kind가 LimitRange입니다.
apiVersion: v1
kind: LimitRange
metadata:
name: mem-limit-range
spec:
limits:
- default: # 메모리 사용량 상한 값
memory: 512Mi
defaultRequest: #메모리 기본 요청량 값
memory: 256Mi
type: Container
Pod 적용
Pod 내용
apiVersion: v1
kind: Pod
metadata:
name: default-mem-demo
spec:
containers:
- name: default-mem-demo-ctr
image: nginx
Pod 적용
kubectl apply -f https://k8s.io/examples/admin/resource/memory-defaults-pod.yaml --namespace=default-mem-example
검증
kubectl get pod default-cpu-demo --output=yaml --namespace=default-cpu-example
예외 상황
1. Pod에 Limit 설정 이 존재하면 Requset 설정은 Pod의 Limit 값으로 동일하게 설정됩니다.
2. Pod에 Request 설정 만 존재하면 Limit 설정은 namespace의 default Limit 값으로 설정 됩니다.
결론 Pod의 Resource제한이 최우선입니다.
CPU 제한
설정
kind가 LimitRange입니다.
apiVersion: v1
kind: LimitRange
metadata:
name: cpu-limit-range
spec:
limits:
- default: # 기본 상한 값
cpu: 1
defaultRequest: # 기본 사용량 요청 값
cpu: 0.5
type: Container
Pod 적용
Pod 내용
apiVersion: v1
kind: Pod
metadata:
name: default-cpu-demo-3
spec:
containers:
- name: default-cpu-demo-3-ctr
image: nginx
resources:
requests:
cpu: "0.75"
Pod 적용
kubectl apply -f https://k8s.io/examples/admin/resource/cpu-defaults-pod-3.yaml --namespace=default-cpu-example
검증
kubectl get pod default-cpu-demo-3 --output=yaml --namespace=default-cpu-example
예외 상황
1. Pod에 Limit 설정 이 존재하면 Requset 설정은 Pod의 Limit 값으로 동일하게 설정됩니다.
2. Pod에 Request 설정 만 존재하면 Limit 설정은 default Limit 값으로 설정됩니다.
결론 Pod의 Resource제한이 최우선입니다.
유의사항
resource관련 사항은 kubect edit 로 수정 불가능 합니다. 수정시 에러발생합니다.
수정 하고 싶으시면
#kubectl get pod webapp -o yaml > my-new-pod.yaml
을 사용하여 따로 yaml로 빼낸후 수정 후 다시 배포 해야 합니다.
정리
resource 제한은 Pod를 통해서 직접 설절 할 수있지만 Namespace단위에도 공통적으로 설정 할 수있습니다.
Next Post
'Cloud > k8s-CKA' 카테고리의 다른 글
[CKA] 12. Static Pod (0) | 2023.03.05 |
---|---|
[CKA] 11. DaemonSet (0) | 2023.03.04 |
[CKA] 9. Pod resource 제어 방법 (0) | 2023.02.14 |
[CKA] 8. schedule (Node Selector, Node Affinity) (0) | 2023.02.11 |
[CKA] 7. schedule (nodeName, taint, toleration) (0) | 2023.02.02 |