우선 쿠버네티스의 네임스페이스 에 대해 간략하게 정리해보았다.
네임스페이스 (Namespace)
- 여러개의 팀이나, 많은 사용자가 있는 환경에서 사용할 수 있도록 만들어졌다.
- 초기 네임스페이스는 Default 로 셋팅된다.
- 쿠버네티스에서 기본적으로 제공하는 네임스페이스는 kube-system, kube-public 등이 있다.
- kube-system 은 내부 시스템에 의해 생성된 서비스(DNS 서비스, etc)가 사용자로부터 서비스가 삭제나 수정이 되는 것을 차단하기 위해 사용된다.
- kube-public 은 모든 사용자가 읽기 권한으로 접근할 수 있다.
- 서비스(Service)를 생성하면 엔트리가 생성되며, <서비스-이름>.<네임스페이스.이름>.svc.cluster.local 같은 형식을 갖는다.
- 여기서 서비스란, 리소스 타입(kind)이 Service 인 것을 말한다.
- default 리소스에서는 <서비스-이름> 으로 접근되는 듯 하다.
- kubectl -n dev get svc 명령어로 서비스 네임을 알 수도 있다.
네임스페이스 명령어
# 특정 네임스페이스 확인
$ kubectl get pods --namespace=kube-system
$ kubectl -n kube-system get pods --no-headers
# 특정 네임스페이스로 생성하기
$ kubectl create -f pod-definition.yml --namespace=dev
혹은, 매니페스트 파일의 metadata 에 namespace 를 추가한다.
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
namespace: dev
labels:
app: myapp
type: front-end
spec:
containers:
- name: nginx-container
image: nginx
네임스페이스 생성하기
namespace-dev.yml
apiVersion: v1
kind: Namespace
metadata:
name: dev
# 네임스페이스 생성
$ kubectl create -f namespace-dev.yml
# 혹은
$ kubectl create namespace dev
특정 네임스페이스를 default 로 하는 방법도 있는 것 같다.
$ kubectl config set-context $(kubectl config current-context) --namespace=dev
# 원래대로
$ kubectl config set-context $(kubectl config current-context) --namespace=default
모든 네임스페이스 보기
# 모든 네임스페이스 보기
$ kubectl get namespaces
$ kubectl get ns --no-headers | wc -l
# 네임스페이스 별 모든 파드 보기
$ kubectl get pods --all-namespaces
네임스페이스 별로 리소스를 제한할 수도 있다.
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
그리고 자격증 시험을 위한 꿀팁이 있다.
따로 정리하기 좀 그래서 여기에 남긴다.
--dry-run : 명령어를 실행하는 즉시 리소스를 실행한다.
--dry-run=client : 명령어를 실행하지 않고 실행 여부와 올바른 명령어 인지만 알려준다.
-o yaml : --dry-run=client 옵션과 같이 사용해서, 매니페스트 파일 내용을 yaml 로 출력한다.
드디어 2장이 종료되었다.
3장은 Configuration 으로 시작~
'Dev > Kubernetes' 카테고리의 다른 글
[CKAD] section 3. Configuration (2) - Secret & Security Contexts (0) | 2022.03.17 |
---|---|
[CKAD] section 3. Configuration (1) - ConfigMap (0) | 2022.03.16 |
[CKAD] section 2. Core Concepts (3) - ReplicaSet & Deployment (0) | 2022.03.11 |
[CKAD] section 2. Practice Test (KodeKloud) (0) | 2022.03.08 |
[CKAD] section 2. Core Concepts (2) - Pod (0) | 2022.03.07 |