Profile picture

[k8s] 네임스페이스 생성하는 방법

JaehyoJJAng2023년 04월 11일

개요

namespace를 생성하고 Resource를 할당하는 방법


Namespace

필요성

하나의 cluster 안에서 여러 사용자가 있는 경우 논리적으로 구분해 Resource를 운용할 필요가 있다. 다른 사용자의 Resource에 접근하여 데이터를 수정하거나 변경하게 되면 큰 문제가 발생할 수 있기 때문이다.

하지만 namespace는 물리적으로 격리가 되어 있지는 않다. 서로 다른 namespace에서 생성된 Pod가 한 node안에 있을 수 있기 때문이다.

하지만 node를 특정 사용자가 삭제해도 알아서 Scheduling을 하여 생성된 복제본 Pod로 옮겨져 통신이 되기 때문에 문제는 없고 실사용자 입장에서는 격리되어 운영되고 있다고 느껴진다.


namespace 생성

yaml로 생성하기

./ns.yaml

apiVersion: v1
kind: namespace
metadata:
  name: new-ns # new-ns는 새로 생성할 namespace 이름

kubectl apply 명령어로 네임스페이스 생성

$ kubectl apply -f ./ns.yaml

명령어로 생성하기

kubectl create namespace/[namespace명]

OR

kubectl create namespace [namespace명]

OR

kubectl create ns [namespace명]

resource 할당

위에서 생성한 네임스페이스에 리소스를 할당해보자.


먼저, 간단한 Pod 명세를 작성해보자.
./pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: test-pod-1
  namespace: new-ns
  labels:
    type: pod
spec:
  containers:
    - name: container1
      image: nginx:latest
      ports:
        - containerPort: 80
          protocol: TCP

여기서 주의깊게 봐야할 코드는 metadata.namespace 부분이다. 명세서 작성 시 해당 리소스가 어느 네임스페이스에 할당하게 할건지 다음처럼 지정해줄 수 있다. 당연히 지정이 안되어있다면 Default로 할당된다


Loading script...