kubernets

 

우선 쿠버네티스의 네임스페이스 에 대해 간략하게 정리해보았다.

 

네임스페이스 (Namespace)

  • 여러개의 팀이나, 많은 사용자가 있는 환경에서 사용할 수 있도록 만들어졌다.
  • 초기 네임스페이스는 Default 로 셋팅된다.
  • 쿠버네티스에서 기본적으로 제공하는 네임스페이스는 kube-system, kube-public 등이 있다.
  • kube-system 은 내부 시스템에 의해 생성된 서비스(DNS 서비스, etc)가 사용자로부터 서비스가 삭제나 수정이 되는 것을 차단하기 위해 사용된다.
  • kube-public 은 모든 사용자가 읽기 권한으로 접근할 수 있다.
  • 서비스(Service)를 생성하면 엔트리가 생성되며, <서비스-이름>.<네임스페이스.이름>.svc.cluster.local 같은 형식을 갖는다.
    • 여기서 서비스란, 리소스 타입(kind)이 Service 인 것을 말한다. 
    • default 리소스에서는 <서비스-이름> 으로 접근되는 듯 하다.
    • kubectl -n dev get svc 명령어로 서비스 네임을 알 수도 있다.

 

DNS 엔트리

 

네임스페이스 명령어

# 특정 네임스페이스 확인
$ 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 으로 시작~