Intro
지금까지 다뤘던 Pod, Deployment, Service 등은 모두 특정한 Namespace에 속해 동작한다.
NameSpace를 별도로 지정하지 않으면 기본 네임스페이스인 default에서 동작하게된다.
Kubernetes의 기본 Namespace
default
가장 기본적으로 사용되는 네임스페이스이다.
kube-system
Kubernetes의 내부 컴포넌트들이 위치하는 곳으로 DNS, 네트워킹등이 이에 해당한다.
kube-public
모든 사용자에게 공개적으로 공유 가능한 리소스들이다.
왜 Namespace를 사용하는가?
Namespace를 사용함으로써 dev-prod 환경을 하나의 클러스터에서 분리해서 사용할 수 있으며, 리소스 사용량 제한을 걸거나 RBAC를 Namespace 단위로 설정할 수 있다.
Namespace 간 통신
같은 네임스페이스 안에서는 service의 이름으로 바로 접근이 가능하다.
예를 들어 web-service라는 이름으로 배포된 service에 web-service라는 명링으로 바로 접근이 가능하다.
다만 다른 namepsace의 서비스에 접근하려면 전체 도메인명을 사용해야하며 예시는 아래와 같다.
webservice.dev.svc.cluster.local
Namespace를 포함한 kubectl 명령어
kubectl get pods --namespace kube-system
kube-system namespace에 있는 pods를 조회한다.
kubectl apply -f pod.yaml --namespace dev
dev 네임스페이스에 pod.yaml 파일을 이용하여 객체를 생성한다
meatadata:
name: web-app
namespace: dev
yaml파일에 namespace를 명시할 수 있다.
Namespace 생성은 아래와 같이 수행할 수 있다.
apiVersion: v1
kind: Namespace
metadata:
name: dev
혹은
kubectl create namespace dev
kubectl에서 현재 작업중인 namespace의 위치는 다음과 같이 바꿀 수 있다.
kubectl config set-context --current --namespace=dev
Namespace에 리소스제한 설정하기
apiVersion: v1
kind: ResourceQuota
metadata:
name: dev-quota
namespace: dev
spec:
hard:
pods: "10"
requtests.cpu: "4"
limits.cpu: "10"
limits.memory: "10Gi"
'CKA' 카테고리의 다른 글
(TIL) kubectl apply의 내부 동작 (0) | 2025.03.23 |
---|---|
(TIL) Kubernetes의 imperative, declarative (0) | 2025.03.22 |
(TIL) Kubernetes Service (0) | 2025.03.16 |
(TIL) Kubernetes Deployment (0) | 2025.03.16 |
(TIL) Replicaset (0) | 2025.03.15 |