본문 바로가기

Cloud

(Kubernetes) - k8s namespace 생성하기

반응형

🍳머리말

namespace와 이를 생성하고 resource를 할당하는 글입니다.


📕 k8s Namespace

📔 필요성

하나의 cluster 안에서 여러 사용자가 있는 경우 논리적으로 구분해 resource를 다룰 필요가 있습니다. 다른 사용자에 resource에 접근하거나 변경하게 되면 폐를 끼치게 되기 때문입니다. 하지만 namespace는 물리적으로 격리는 되어 있지 않습니다. 서로 다른 namespace에서 생성된 pod가 한 node안에 있을 수 있기 때문입니다. 하지만 걱정할 필요없습니다. node를 한 사용자가 삭제한다고 해도 알아서 scheduling을 통해 생성된 복제본 pod로 옮겨 통신하게 되기 때문에 문제 없으며 실사용자의 입장에서는 격리가 되었다고 생각하게 됩니다.


📕 특정 namespace에 Resouce 할당

📔 namespace 생성

 📑 yaml로 생성하기 

원하시는 file명으로 yaml을 생성한뒤 다음을 입력해 저장합니다.

 

apiVersion: v1
kind: Namespace
metadata:
  name: mskim #mskim은 원하는 namespace 이름입니다.

 

kubectl get ns로 확인해볼 수 있습니다.

 📑 명령어로 생성하기 

 k8s환경이 구축되었다는 전제하에 kubectl create ns [namespace명]을 입력하시면 생성됩니다.  kubectl create namespace [namespace명]을 입력해도 되며 입력 시 "namespace/[namespace명] created"라는 message가 출력됩니다.

📔 yaml

생성 시 spec의 namespace: namespace명 을 입력하신 후 apply하면 됩니다.

 


📕 Linux namespace

리눅스 네임스페이스는 프로세스를 실행할 때 시스템의 리소스(cpu, memory 등)를 분리해서 실행할 수 있도록 도와주는 기능입니다. 한 시스템의 프로세스들은 기본적으로 시스템의 리소스들을 공유해서 실행됩니다. 이를 단일 네임스페이스라고 생각해볼 수 있습니다. 실제로 리눅스에서는 1번 프로세스(init)에 할당되어있는 네임스페이스들을 자식 프로세스들이 모두 공유해서 사용하는 구조로 이루어져있습니다.

/prod/<PID>/ns 디렉터리에서 현재 프로세스에서 사용하고 있는 네임스페이스의 고유 ID를 확인하는 것이 가능합니다.

 

📕참조

https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/namespaces/

 

네임스페이스

쿠버네티스는 동일한 물리 클러스터를 기반으로 하는 여러 가상 클러스터를 지원한다. 이런 가상 클러스터를 네임스페이스라고 한다. 여러 개의 네임스페이스를 사용하는 경우 네임스페이스는

kubernetes.io

 

'Cloud' 카테고리의 다른 글

(Kubernetes) - init container  (0) 2021.11.15
(Kubernetes) - pod lifecycle  (0) 2021.11.15
(Kubernetes) - storage  (0) 2021.10.26
(Kubernetes) - workload  (0) 2021.10.20
(Kubernetes) - 용어 정리  (0) 2021.10.18