참고
네임스페이스
NOTE
네임스페이스는 클러스터 내의 논리적인 분리 단위다!
Namespace ⇒ 각자의 집을 만들어서 공간을 분리한다.
쿠버네티스 클러스터를 dev/stg/prod 3개의 네임스페이스로 구분한다. 여기서 중요한건 네임스페이스는 논리적으로 분리하지, 물리적으로 분리되는것이 아니다.
•
네임스페이스는 쿠버네티스 오브젝트를 묶는 하나의 가상공간 또는 그룹이다.
•
다른 네임스페이스간 통신이 가능하며, 클러스터 장애발생시 모든 네임스페이스에 영향이간다.
리소스의 이름은 네임스페이스내에서 유일해야한다. 또한 쿠버네티스는 초기에 4개의 네임스페이스를 기본값으로 가진다.
•
default
•
kube-system
•
kube-node-release
•
kube-public
# 네임스페이스 조회
kubectl get namepsace || ns
# 특정 네임스페이스 pod 조회
kubectl get pods --namespace=research
kubectl get pods -n=research
# 특정 네임스페이스 pod 생성
kubectl run redis —image=redis --namespace=finace
# 모든 네임스페이스의 pod 조회
kubectl get pods --all-namespace || -A
Bash
복사
사용 명령어
네임스페이스 DNS
NOTE
다른 네임스페이스의 리소스와 이름이 중복될 수 있으므로 추가적인 이름을 붙인다!
서로 다른 네임스페이스에서 db-service 리소스의 이름이 겹친다.
다른 네임스페이스의 db-service를 사용할경우 dev.svc.cluster.local 의 정보를 추가로 붙여준다.
네임스페이스 생성
NOTE
# kubectl create namespace [이름]
kubectl create -f namespace-dev.yaml
kubectl create -f pod-definition.yaml
kubectl config set-context $(kubectl config current-context) --namespace=prod
Bash
복사
apiVersion: v1
kind: Nmaespace
metadata:
name: dev
YAML
복사
namespace-dev.yaml
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
namespace: dev # 특정 네임스페이스에 생성
labels:
app: myapp
type: front-end
spec:
containers:
- name: nginx-container
image: nginx
YAML
복사
pod-definition.yaml
네임스페이스 리소스 제한
NOTE
네임스페이스에 자원제한
apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-quota
namespace: dev
spec:
hard:
pods: "10"
requests.cpu: "4"
requests.memory: 5Gi
limits.cpu: "10"
limits:memory: 10Gi
YAML
복사
자원제한에 대해선 후에 더 자세하게 다룬다.