카테고리 없음
네임스페이스
짱구는굿
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 |