[CKA] Namespace와 리소스 격리
Namespace로 리소스 이름과 정책, 할당량을 나누고 다른 Namespace의 Service에 접근하는 방법입니다.
Namespace는 하나의 클러스터 안에서 리소스를 논리적으로 나눕니다. 기본 작업 공간인 default, 시스템 구성 요소가 사용하는 kube-system, 공개적으로 읽을 수 있는 데이터를 위한 kube-public 등이 기본으로 존재합니다.
Namespace별로 RBAC 정책과 ResourceQuota를 적용할 수 있습니다. 다만 Namespace 자체가 완전한 네트워크 격리를 제공하지는 않으므로 네트워크 통신을 제한하려면 NetworkPolicy도 구성해야 합니다.
kubectl get pods --namespace=kube-system
kubectl create namespace dev
kubectl create -f pod-definition.yaml --namespace=dev
kubectl get pods --all-namespaces
매니페스트에 Namespace를 고정할 수도 있습니다.
apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: dev
spec:
containers:
- name: nginx
image: nginx
다른 Namespace의 Service는 정규화된 DNS 이름으로 접근할 수 있습니다.
db-service.dev.svc.cluster.local