Search
moon
sun

Namespace

namespace

•
동일 물리 클러스터를 기반으로 하는 복수의 가상 클러스터를 지원하는 개념
•
클러스터를 논리적으로 나누고 액세스를 제한하여 리소스를 생성, 관리
•
논리적으로 구분이 되지만 격리가 되는 것은 아님. (격리를 위해서는 network policy와 같은 다른 오브젝트를 추가로 사용해야함)
기본 namespace
•
default : pod, deployment가 생성될 때 기본적으로 생성되는 namespace
•
kube-system : DNS, kube-proxy, k8s 대시보드 처럼 시스템 제어 리소스가 사용하는 namespace
•
kube-public : 전체 클러스터 리소스에 대한 가시성을 제공 하는 경우 사용 (일반적으로 사용되지 않음)
custom namespace
•
prometheus, argo, istio 등등의 시스템 관련 솔루션들은 독자 namespace를 할당
•
microservice별로 namespace를 할당하여 논리적으로 분리
•
namespace.yaml
apiVersion: v1 kind: Namespace metadata: name: skills
YAML
복사
# namespace 생성 및 확인 kubectl create ns my-app kubectl get ns --show-labels kubectl delete ns my-app # 특정 namespace에 있는 자원 확인 kubectl get pod -n kube-system kubectl get all -n kube-system # 모든 namespace에 있는 자원 확인 kubectl get all -A # 네임스페이스가 있는 리소스 확인 kubectl api-resources --namespaced=true # 네임스페이스가 없는 리소스 확인 kubectl api-resources --namespaced=false
Shell
복사
# EKS namespace Terminating에서 안넘어갈때 for ns in $(kubectl get ns --field-selector status.phase=Terminating -o jsonpath='{.items[*].metadata.name}') do kubectl get ns $ns -ojson | jq '.spec.finalizers = []' | kubectl replace --raw "/api/v1/namespaces/$ns/finalize" -f - done for ns in $(kubectl get ns --field-selector status.phase=Terminating -o jsonpath='{.items[*].metadata.name}') do kubectl get ns $ns -ojson | jq '.metadata.finalizers = []' | kubectl replace --raw "/api/v1/namespaces/$ns/finalize" -f - done
Shell
복사