카테고리 없음

네임스페이스

짱구는굿 2023. 10. 31. 11:05

https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/namespaces/(참고사이트)

 

네임스페이스

쿠버네티스에서, 네임스페이스 는 단일 클러스터 내에서의 리소스 그룹 격리 메커니즘을 제공한다. 리소스의 이름은 네임스페이스 내에서 유일해야 하며, 네임스페이스 간에서 유일할 필요는

kubernetes.io

 

- 리소스를 각각의 분리된 영역으로 나누기 좋은 방법
- 여러 네임스페이스를 사용하면 복잡한 쿠버네티스 시스템을 더 작은 그룹으로 분할
- 멀티 테넌트(Multi-tenant) 환경을 분리하여 리소스를 생산, 개발, QA 환경 등으로 사용
- 리소스 이름은 네임스페이스 내에서만 고유 명칭 사용
- 현재 클러스터의 기본 네임스페이스 확인하기 => kubectl get ns 네임스페이스를 만들지 않았다면 default 네임스페이스를 사용한 것이다 각 네임스페이스 상세 내용 확인
- kubectl get 을 옵션 없이 사용하면 default 네임스페이스에 질의
- 다른 사용자와 분리된 환경으로 타인의 접근을 제한
- 네임스페이스 별로 리소스 접근 허용과 리소스 양도 제어 가능
--namespace나 -ns을 사용하여 네임스페이스 별로 확인이 가능 kubectl get po --namespace kube-system <-- 특정 네임스페이스에서 명령실행, 옵션없이는 default 네임

 

 

kubectl get ns  -> 기본 내용

default쿠버네티스에는 이 네임스페이스가 포함되어 있으므로 먼저 네임스페이스를 생성하지 않고도 새 클러스터를 사용할 수 있다.

kube-node-lease이 네임스페이스는 각 노드와 연관된 리스 오브젝트를 갖는다. 노드 리스는kubelet 하트비트를 보내서 컨트롤 플레인이 노드의 장애를 탐지할 수 있게 한다.

kube-public이 네임스페이스는 모든 클라이언트(인증되지 않은 클라이언트 포함)가 읽기 권한으로 접근할 수 있다. 이 네임스페이스는 주로 전체 클러스터 중에 공개적으로 드러나서 읽을 수 있는 리소스를 위해 예약되어 있다. 이 네임스페이스의 공개적인 성격은 단지 관례이지 요구 사항은 아니다.

kube-system쿠버네티스 시스템에서 생성한 오브젝트를 위한 네임스페이스

 



kubectl create ns office
kubectl get ns |  grep office


kubectl create ns office
kubectl get ns |  grep office


kubectl create deployment nginx --image=nginx --port=80 -n office

kubectl get all -n office



kubectl create deploy nginx --image nginx --port 80 -n office --dry-run=client -o yaml > nginx.yml



kubectl delete ns office

kubectl get ns
kubectl get pod -n kube-system
kubectl get pod -n kube-system | wc -l


kubectl create ns ns-jenkins --dry-run=client

kubectl create ns ns-jenkins --dry-run=client -o yaml > ns-jenkins.yml

 

-실습-

1. 현재 시스템에는 몇 개의 Namespace가 존재하는가?
2. kube-system에는 몇 개의 파드가 존재하는가?
3. ns-jenkins 네임스페이스를 생성하고 jenkins 파드를 배치하라.
     pod image: jenkins
     pod name: jenkins
4. coredns는 어느 네임스페이스에 속해있는가?

 

 

 

kubectl get ns
kubectl get pod -n kube-system
kubectl get pods -n kube-system | grep coredns
kubectl create ns ns-jenkins
kubectl run jenkins --image=jenkins/jenkins --namespace=ns-jenkins
kubectl get pod -n ns-jenkins
kubectl get pods -n kube-system | grep coredns