for Developer/Kubernetes

k8s::쿠버네티스 오브젝트 (namespace)

Dev:P 2020. 5. 1. 14:46
반응형

쿠버네티스는 동일한 물리 클러스터를 기반으로 하는 여러 가상 클러스터를 지원한다. 이런 가상 클러스터를 네임스페이스라고 한다.
네임스페이스는 여러 개의 팀이나, 프로젝트에 걸쳐서 많은 사용자가 있는 환경에서 사용하도록 만들어졌다. 리소스의 이름은 네임스페이스 내에서 유일해야 하지만, 네임스페이스를 통틀어서 유일할 필요는 없다.


Working with Namespaces

네임스페이스 생성/삭제

//create
kubectl create namespace <insert-namespace-name-here>

//delete
kubectl delete namespace <insert-some-namespace-name>

네임스페이스 조회

kubectl get namespace
NAME          STATUS    AGE
default       Active    1d
kube-system   Active    1d
kube-public   Active    1d
kube-node-lease Active 1d

쿠버네티스는 세 개의 초기 네임스페이스를 갖는다.

  • default 다른 네임스페이스가 없는 오브젝트를 위한 기본 네임스페이스
  • kube-system 쿠버네티스 시스템에서 생성한 오브젝트를 위한 네임스페이스
  • kube-public 이 네임스페이스는 자동으로 생성되며 모든 사용자(인증되지 않은 사용자 포함)가 읽기 권한으로 접근 할 수 있다. 주로 전체 클러스터 중에 공개적으로 읽을 수 있는 리소스를 위해 존재한다.

요청에 네임스페이스 설정하기

kubectl run nginx --image=nginx --namespace=<insert-namespace-name-here>
kubectl get pods --namespace=<insert-namespace-name-here>

선호하는 네임스페이스 설정하기

kubectl config set-context --current --namespace=<insert-namespace-name-here>
//check
kubectl config view --minify | grep namespace:

Namespaces and DNS

서비스를 생성하면 해당 DNS(Domain Name System) 엔트리가 생성된다. <service-name>.<namespace-name>.svc.cluster.local 의 형식을 갖는데, 이는 컨테이너가 <service-name>만 사용하는 경우 네임스페이스 내에 국한된 서비스로 연결된다. 이는 dev, stage, prod와 같이 여러 네임스페이스에서 동일한 설정을 사용하는 경우 유용하다.


Not All Objects are in a Namespace

대부분의 쿠버네티스 리소스(ex. 파드, 서비스, 레플리케이션 컨트롤르 등)는 네임스페이스에 속한다. 하지만 네임스페이스 리소스 자체는 네임스페이스에 속하지 않는다. 그리고 노드나 PV같은 저수준 리소스는 어느 네임스페이스에도 속하지 않는다.

 

 

 

출처: https://kubernetes.io/docs/concepts/

반응형