Namespaces

2024. 12. 31. 01:13쿠버네티스/쿠버네티스

728x90
반응형

1. Kubernetes 네임스페이스란?

  • 정의:
    • 네임스페이스는 Kubernetes 클러스터를 논리적으로 분리하여 여러 가상 클러스터처럼 작동하도록 만드는 메커니즘.
    • 리소스 관리, 격리, 보안, 협업 등을 효율적으로 수행할 수 있도록 지원.
  • 기본 개념:
    • 네임스페이스는 하나의 클러스터 내에서 리소스를 그룹화하고 격리하는 데 사용.
    • 동일한 네임스페이스 내에서는 리소스 이름이 고유해야 하지만, 다른 네임스페이스 간에는 동일한 이름을 사용할 수 있음.

2. 기본 네임스페이스

Kubernetes는 클러스터 생성 시 다음과 같은 기본 네임스페이스를 자동으로 생성:

  1. default:
    • 특별히 지정하지 않은 리소스가 생성되는 기본 네임스페이스.
    • 습 또는 소규모 환경에서 주로 사용.
  2. kube-system:
    • Kubernetes 시스템 구성 요소(API 서버, 컨트롤러 매니저 등)가 배치되는 네임스페이스.
    • 중요한 시스템 리소스를 포함하므로 접근은 제한적으로 관리해야 함.
  3. kube-public:
    • 인증 없이 모든 사용자가 읽을 수 있는 리소스를 저장.
    • 로 공개적으로 접근 가능한 정보를 저장하는 데 사용.
  4. kube-node-lease:
    • 노드 상태를 모니터링하기 위한 Lease 객체를 저장.
    • 드의 헬스 체크 및 스케일링에 사용.

3. 사용자 정의 네임스페이스

  • 필요에 따라 사용자 정의 네임스페이스를 생성하여 리소스를 격리 가능.
  • : 개발(dev) 환경과 운영(prod) 환경을 분리하여 관리.
kubectl create namespace <namespace-name>

#yaml
apiVersion: v1
kind: Namespace
metadata:
  name: development
  labels:
    environment: dev

kubectl apply -f namespace.yaml

네임스페이스의 주요 기능

  1. 리소스 격리:
    • 서로 다른 팀, 프로젝트, 또는 환경(dev/prod)을 논리적으로 분리.
  2. 정책 적용:
    • RBAC(Role-Based Access Control)을 통해 각 네임스페이스별로 접근 권한 설정 가능.
  3. 리소스 할당 제한:
    • 리소스 쿼터(Resource Quota)를 설정하여 CPU, 메모리 등의 사용량을 제한 가능.
  4. DNS 기반 서비스 접근:
    • 동일 네임스페이스 내에서는 서비스 이름으로 접근 가능.
    • 다른 네임스페이스의 서비스에 접근하려면 서비스명.네임스페이스명.svc.cluster.local 형식 사용.
      예: dbservice.dev.svc.cluster.local
kubectl get namespaces
kubectl config set-context --current --namespace=<namespace-name>
kubectl get pods --namespace=<namespace-name>
kubectl get pods --all-namespaces
kubectl delete namespace <namespace-name>

네임스페이스 활용 사례

  1. 다중 환경 관리:
    • 개발(dev), 테스트(test), 운영(prod) 환경을 동일 클러스터 내에서 분리하여 관리.
  2. 멀티 테넌트 지원:
    • 여러 팀 또는 프로젝트가 동일 클러스터를 공유하지만, 각자의 리소스를 독립적으로 관리 가능.
  3. 보안 강화:
    • RBAC 및 네트워크 정책(Network Policy)을 통해 각 네임스페이스별로 보안 정책 적용 가능.
  4. 리소스 최적화:
    • 쿼터를 설정하여 특정 팀이나 프로젝트가 과도한 리소스를 사용하는 것을 방지.
#Pod를 특정 네임스페이스에 생성하는 방법
apiVersion: v1
kind: Pod
metadata:
  name: mypod
  namespace: development # 특정 네임스페이스 지정
spec:
  containers:
  - name: nginx-container
    image: nginx

 

https://supriyasurkar.hashnode.dev/day-33-task-working-with-namespaces-and-services-in-kubernetes

 

Day 33 Task: Working with Namespaces and Services in Kubernetes

This is #90DaysofDevops challenge under the guidance of Shubham Londhe sir. Introduction: Welcome back to Day 33 of our Kubernetes exploration! Today, we're delving into the intricacies of Namespaces and Services, two essential components in the Kube...

supriyasurkar.hashnode.dev

https://www.devopsschool.com/blog/working-with-kubernetes-cluster-using-kubectl-part-6-namespaces/

 

Working with Kubernetes Namespaces - DevOpsSchool.com

Kubernetes namespaces are a way to organize, isolate, and manage Kubernetes resources. They provide a virtual sub-cluster within a Kubernetes cluster, and they can be used to separate resources by...

www.devopsschool.com

 

1. Kubernetes 네임스페이스란?

  • 정의:
    • Kubernetes 네임스페이스는 클러스터 내 리소스를 논리적으로 분리하고 관리하기 위한 가상 서브클러스터.
    • 프로젝트, 팀, 환경별로 리소스를 격리하여 충돌 방지 및 보안 강화.
  • 주요 특징:
    1. 격리(Isolation):
      • 네임스페이스 간 리소스를 분리하여 충돌 방지 및 보안 강화.
    2. 조직화(Organization):
      • 프로젝트, 팀, 또는 환경별로 리소스를 정리하여 관리 용이.
    3. 리소스 할당 제한(Resource Quotas):
      • 네임스페이스별로 CPU, 메모리 등의 사용량을 제한 가능.
    4. RBAC(Role-Based Access Control):
      • 네임스페이스별로 접근 권한을 세부적으로 설정 가능.

2. 기본 네임스페이스

Kubernetes 클러스터 생성 시 자동으로 생성되는 기본 네임스페이스들:

  1. default:
    • 사용자가 특별히 지정하지 않은 리소스가 생성되는 기본 네임스페이스.
  2. kube-system:
    • Kubernetes 시스템 구성 요소(API 서버, DNS 등)가 배치되는 네임스페이스.
  3. kube-public:
    • 공개적으로 접근 가능한 리소스를 저장하는 네임스페이스.
  4. kube-node-lease:
    • 노드 상태를 모니터링하기 위한 Lease 객체를 저장.

DNS 기반 서비스 접근

  • 동일 네임스페이스 내에서는 서비스 이름으로 접근 가능.
  • 다른 네임스페이스의 서비스에 접근하려면 다음 형식을 사용:
<서비스명>.<네임스페이스명>.svc.cluster.local

기본 네임스페이스 변경

kubectl config set-context $(kubectl config current-context) --namespace=dev
kubectl config set-context $(kubectl config current-context) --namespace=prod
kubectl config set-context $(kubectl config current-context) --namespace=default

Resource Quota

apiVersion: v1
kind: ResouceQuota
metadata: 	
    name:  dev-quota
   namespace:   dev
spec:
   hard:
     pods: “10”
     requests.cpu: “4”
     requests.memory: :5Gi”
     limits.cpu: “10”
     limits.memory: “10Gi”

https://ecanarys.com/namespaces-in-kubernetes/

 

Namespaces in Kubernetes - Canarys

ShareA default namespace is created automatically when the cluster is being setup. To isolate or prevent a user from accidentally deleting the services, Kubernetes creates certain pods for its internal purpose like networking solution, DNS service etc. Kub

ecanarys.com

 

반응형

'쿠버네티스 > 쿠버네티스' 카테고리의 다른 글

Scheduling-Manual Scheduling  (0) 2024.12.31
Imperative vs Declarative  (0) 2024.12.31
Kubernetes Deployment  (0) 2024.12.30
Kubernetes Replication Controller와 Replica Set  (0) 2024.12.30
Kubernetes Pods 요약  (0) 2024.12.30