Namespace
동일한 물리 클러스터를 기반으로 하는 가상 클러스터
- Default Namespace
클러스터를 처음 설정할 때 쿠버네티스에 의해 자동으로 생성된다. - kube-system
쿠버네티스 시스템에서 생성한 오브젝트를 위한 네임스페이스
생성한 포드와 서비스를 사용자에게서 격리하여, 실수로 서비스를 삭제하거나 수정하지 않도록 한다. - kube-public
인증되지 않은 사용자를 포함하여 모든 사용자가 읽기 권한으로 접근할 수 있는 자동 생성 네임스페이스
네임스페이스 내의 리소스는 이름으로 지칭할 수 있다.
다른 네임스페이스와 통신하기 위해서는 <service_name>.<namespace>.svc.cluster.local 형식의 DNS를 사용해야 한다. DNS에서 cluster.local은 쿠버네티스의 기본 도메인 이름이며, svc는 서비스의 하위 도메인이자 서비스 자체의 이름이다.
명령어
# 기본 네임스페이스 내 pod 나열
kubectl get pods
# 지정한 네임스페이스 내 pod 나열
kubectl get pods --namespace=<NAMESPACE>
Pod 생성 시 namespace 지정 방법
kubectl create -f pod.yml --namespace=<NAMESPACE>
생성 명령 시 위와 같이 namespace 옵션을 주거나 yaml 파일 내 정의하면 된다.
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
namespace: dev
labels:
app: myapp
type: front-end
spec:
containers:
- name: nginx-container
image: nginx
네임스페이스 생성 방법
- 정의 파일을 작성한 뒤, create 명령으로 생성
spec 아래는 리소스 할당량을 제한하도록 설정하는 부분이다.
apiVersion: v1
kind: Namespace
metadata:
name: dev
spec:
hard:
pods: "10"
requests.cpu: "4"
requests.memory: 5Gi
limits.cpu: "10"
limits.memory: 10Gi
kubectl create -f .yml
- create 명령으로 생성
kubectl create namespace <NAMESPACE>
네임스페이스 전환 방법
kubectl config set-context $(kubectl config current-context) --namespace=<NAMESPACE>
context는 동일한 관리 시스템에서 여러 환경의 여러 클러스터 관리에 사용한다.