Kubernetes #8. Kubernetes의 Namespace(쿠버네티스 네임스페이스)
개요
쿠버네티스의Namespace에 대한이해
Namespace on k8s
쿠버네티스는 동일한 물리 클러스터를 기반으로 하는 여러 가상클러스터를 지원한다. 이런가상 클러스터를 네임스페이스라고 한다. 이 네임스페이스에대해 알아보고 네임스페이스를 위한Resource Quota와 Limit Range에 대해서도 함께 알아본다.
Why Namespace?
쿠버네티스의 네임스페이스는여러개의 팀이나, 프로젝트에 걸쳐서 많은 사용자가 있는 환경에서 사용하도록 만들어졌다. 즉, 사용자가 거의없거나 소수인경우에는 네임스페이스 생성자체를 고려할 필요가 없는선택적인 것으로 이해하면 되겠다.
Namespace
쿠버네티스의 클러스터, 네임스페이스들은자원을 서로 공유하면서 사용한다. 또한, 한 네임스페이스안에 같은 타입에 오브젝트들간에는 중복이 되지않는다.같은 파드의 이름역시 중복해서 만들 수 없다.
타 네임스페이스와 자원이 분리되어서 관리된다.대부분의 자원들은 해당 네임스페이스안에서만사용할 수 있다.(노드나 PV처럼 공용으로 사용되는것도 있다.)
네임스페이스가 다른 파드들끼리 네트워크로는 연결이 가능하다.
Resource Quota
이때 한 Namespace에 있는 파드가 이 클러스터의 남은 자원을 모두 사용해버리면 다른 파드입장에서는 쓸 자원이 없어서 자원이 필요할 때 문제가 발생할 수 있다. 이때 사용되는것이Resource Quota이다.
Resource Quota를 사용하면 Namespace마다 최대한계를 설정해서파드자원이 한계를 넘을수 없도록만들 수 있다. 위 그림은 각각의 네임스페이스가 사용할 수 있는메모리를 미리 설정하고 제한한 예시이다.
Resource Quota를 설정한 경우에, 해당 Namespace에 들어오는 pod들은 반드시 스펙이 명시되어 있어야한다.리미트를 초과하는 내용이 들어오면 오류를 발생시킨다.
쿠버네티스의 버전이 업그레이드 되면서 제한할 수 있는 오브젝트의 범주가 늘어나고있다.
Limit Range
네임스페이스에 들어올한 파드에 대한 리미트를 설정할 수 있다. 즉, 네임스페이스에 들어올 수 있는 파드의 크기를 설정하고 파드가 들어올때마다 일일히 체크해주는 기능을한다.
위그림은 특정 Namespace의Limit Lange 메모리를 대략 50정도로 잡았을때, 100을요구하는 pod가 배치되려할때 오류를 발생시키는것을 예시로 보여주는 그림이다.
Resource Quota가전체 네임스페이스를 제한하는 기능이라면,Limit Range는파드각각을 검사한다고 이해할 수 있다.
Resource Quota는 네임스페이스 뿐만아니라 클러스터에도 설정할 수 있다. Limit Range는 네임스페이스에만 설정 가능하다.
* 참고
'System Engineering > Kubernetes' 카테고리의 다른 글
Kubernetes #10. Kubernetes의 Contorller 2 - deployment(쿠버네티스 디플로이먼트) (0) | 2021.05.29 |
---|---|
Kubernetes #9. Kubernetes의 Controller 1 - Replication (쿠버네티스 레플리케이션 컨트롤러) (0) | 2021.05.28 |
Kubernetes #7. Kubernetes의 ConfigMap, Secret(쿠버네티스 컨피그맵, 시크릿) (0) | 2020.08.06 |
Kubernetes #6. Kubernetes의 Volume(쿠버네티스 볼륨) (0) | 2020.07.20 |
Kubernetes #5. Kubernetes의 Pod와 Service(쿠버네티스 파드와 서비스) (0) | 2020.05.30 |
댓글