2024. 12. 31. 01:13ㆍ쿠버네티스/쿠버네티스
1. Kubernetes 네임스페이스란?
- 정의:
- 네임스페이스는 Kubernetes 클러스터를 논리적으로 분리하여 여러 가상 클러스터처럼 작동하도록 만드는 메커니즘.
- 리소스 관리, 격리, 보안, 협업 등을 효율적으로 수행할 수 있도록 지원.
- 기본 개념:
- 네임스페이스는 하나의 클러스터 내에서 리소스를 그룹화하고 격리하는 데 사용.
- 동일한 네임스페이스 내에서는 리소스 이름이 고유해야 하지만, 다른 네임스페이스 간에는 동일한 이름을 사용할 수 있음.
2. 기본 네임스페이스
Kubernetes는 클러스터 생성 시 다음과 같은 기본 네임스페이스를 자동으로 생성:
- default:
- 특별히 지정하지 않은 리소스가 생성되는 기본 네임스페이스.
- 학습 또는 소규모 환경에서 주로 사용.
- kube-system:
- Kubernetes 시스템 구성 요소(API 서버, 컨트롤러 매니저 등)가 배치되는 네임스페이스.
- 중요한 시스템 리소스를 포함하므로 접근은 제한적으로 관리해야 함.
- kube-public:
- 인증 없이 모든 사용자가 읽을 수 있는 리소스를 저장.
- 주로 공개적으로 접근 가능한 정보를 저장하는 데 사용.
- 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
네임스페이스의 주요 기능
- 리소스 격리:
- 서로 다른 팀, 프로젝트, 또는 환경(dev/prod)을 논리적으로 분리.
- 정책 적용:
- RBAC(Role-Based Access Control)을 통해 각 네임스페이스별로 접근 권한 설정 가능.
- 리소스 할당 제한:
- 리소스 쿼터(Resource Quota)를 설정하여 CPU, 메모리 등의 사용량을 제한 가능.
- 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>
네임스페이스 활용 사례
- 다중 환경 관리:
- 개발(dev), 테스트(test), 운영(prod) 환경을 동일 클러스터 내에서 분리하여 관리.
- 멀티 테넌트 지원:
- 여러 팀 또는 프로젝트가 동일 클러스터를 공유하지만, 각자의 리소스를 독립적으로 관리 가능.
- 보안 강화:
- RBAC 및 네트워크 정책(Network Policy)을 통해 각 네임스페이스별로 보안 정책 적용 가능.
- 리소스 최적화:
- 쿼터를 설정하여 특정 팀이나 프로젝트가 과도한 리소스를 사용하는 것을 방지.
#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 네임스페이스는 클러스터 내 리소스를 논리적으로 분리하고 관리하기 위한 가상 서브클러스터.
- 프로젝트, 팀, 환경별로 리소스를 격리하여 충돌 방지 및 보안 강화.
- 주요 특징:
- 격리(Isolation):
- 네임스페이스 간 리소스를 분리하여 충돌 방지 및 보안 강화.
- 조직화(Organization):
- 프로젝트, 팀, 또는 환경별로 리소스를 정리하여 관리 용이.
- 리소스 할당 제한(Resource Quotas):
- 네임스페이스별로 CPU, 메모리 등의 사용량을 제한 가능.
- RBAC(Role-Based Access Control):
- 네임스페이스별로 접근 권한을 세부적으로 설정 가능.
- 격리(Isolation):
2. 기본 네임스페이스
Kubernetes 클러스터 생성 시 자동으로 생성되는 기본 네임스페이스들:
- default:
- 사용자가 특별히 지정하지 않은 리소스가 생성되는 기본 네임스페이스.
- kube-system:
- Kubernetes 시스템 구성 요소(API 서버, DNS 등)가 배치되는 네임스페이스.
- kube-public:
- 공개적으로 접근 가능한 리소스를 저장하는 네임스페이스.
- 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 |