Tools/K8S

Kubernetes namespace

칼쵸쵸 2023. 3. 19. 23:15

pod, deployment, service를 내부적인 목적에 따라서 세트로 묶어서 구분함

쿠버네티스는 시작할때 3가지 네임스페이를 만듦

 

default: 초기 기본 네임스페이스

kube-system: network나 dns를 위해 사용자들에서 분리해 낸 네임스페이스를 만듦, 실수로 삭제, 수정할 수 없도록 만듦

kube-public:  모든 유저가 사용하는 리소스들을 관리하는 네임스페이스

 

각 네임스페이스별로 사용할 수 있는 리소스의 양을 정해두고 사용할 수 있음

네임스페이스 안에서는 name으로 각 파드들을 호출할 수 있음

다른 네임스페이스에 존재하는 파드들은 '서비스네임.네임스페이이스.(서비스,파드등 구분).도메인'으로 구분함

ex)db-service.dev.svc.cluster.local

kubectl get pods --namespace=kube-system 등과같이 네임스페이별 조회가 가능함

 

ex) 네임스페이스를 정의한 파드 생성

- 네임 스페이스 생성

apiVersion: v1
kind: Namespace
metadata:
	name: dev

- 파드 생성

apiVersion: v1
kind: Pod
metadata:
  name: myapp
  namespace: dev
  labels:
    app: myapp
    type: front-end
spec:
	containers:
     - name: nginx-container
       image: nginx

* 네임스페이스 옵션을 주지 않고 kubectl의 기본 네임스페이스를 변경하는 방법

kubectl config set-context $(kubectl config current-context) --namespace='변경할 네임스페이스 이름'

 

* 네임스페이스별 리소스를 한정하는 방법

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

- kubectl create -f compute-quota.yaml

 

practice

1) How many Namespaces exist on the system?

- kubectl get namespaces

NAME              STATUS   AGE
kube-system       Active   9m37s
default           Active   9m37s
kube-public       Active   9m37s
kube-node-lease   Active   9m37s
finance           Active   36s
marketing         Active   36s
dev               Active   36s
prod              Active   36s
manufacturing     Active   36s
research          Active   36s


2) How many pods exist in the research namespace?

- kubectl get pods --namespace=research

NAME    READY   STATUS             RESTARTS      AGE
dna-1   0/1     CrashLoopBackOff   3 (47s ago)   100s
dna-2   0/1     Completed          4 (52s ago)   100s

 

3) Create a POD in the finance namespace.

- kubectl run redis --image=redis --namespace=finance

 

4) Which namespace has the 'blue' pod in it?
- kubectl get pod --all-namespaces

NAMESPACE       NAME                                      READY   STATUS             RESTARTS      AGE
kube-system     local-path-provisioner-5d56847996-q9rxw   1/1     Running            0             15m
kube-system     coredns-5c6b6c5476-t9zpp                  1/1     Running            0             15m
kube-system     helm-install-traefik-crd-bfqwt            0/1     Completed          0             15m
kube-system     metrics-server-7b67f64457-9j5jt           1/1     Running            0             15m
kube-system     helm-install-traefik-ksm2r                0/1     Completed          1             15m
kube-system     svclb-traefik-1ea15943-ms9d7              2/2     Running            0             14m
kube-system     traefik-56b8c5fb5c-xn7jg                  1/1     Running            0             14m
dev             redis-db                                  1/1     Running            0             6m28s
marketing       redis-db                                  1/1     Running            0             6m28s
manufacturing   red-app                                   1/1     Running            0             6m28s
marketing       blue                                      1/1     Running            0             6m28s
finance         payroll                                   1/1     Running            0             6m28s
finance         redis                                     1/1     Running            0             115s
research        dna-1                                     0/1     CrashLoopBackOff   6 (37s ago)   6m28s
research        dna-2                                     0/1     CrashLoopBackOff   6 (33s ago)   6m28s

5) What DNS name should the Blue application use to access the database db-service in its own namespace marketing?

- kubectl get svc -n=marketing

blue-service   NodePort   10.43.91.202   <none>        8080:30082/TCP   9m48s
db-service     NodePort   10.43.78.223   <none>        6379:31890/TCP   9m47s

* Blue와 db-servcie는 같은 네임스페이스에 있으므로 단순하게 db-service:6379로 접근할 수 있음

 

6) What DNS name should the Blue application use to access the database db-service in the dev namespace?

- db-service.dev.svc.cluster.local

 

'Tools > K8S' 카테고리의 다른 글

Kubernetes ReplicaSet  (0) 2023.07.01
Kubernetes Config  (1) 2023.06.17
Kubernetes Scheduling  (0) 2023.03.20
Kubernetes Services  (0) 2023.03.19
Kubernetes Core concept  (0) 2023.03.18