2020. 2. 19. 13:24ㆍdevops/kubernetes
namespace
쿠버네티스에서는 오브젝트들을 논리적으로 구분지을 수 있는 namespace라는 기능을 제공하고 있습니다. 포드, 레플리카셋, 디플로이먼트, 서비스 등을 묶여 있는 하나의 가상 공간 또는 그룹이라고 이해하면 됩니다. 예를 들어 database기능을 제공하는 포드들 끼리는 database라고 묶으면 되고 테스트 코드를 위한 오브젝트는 testbed 등을 묶으면 공통적인 성질을 가지고 있는 오브젝트를 좀 더 손 쉽게 관리할 수 있습니다.
네임 스페이스 사용해보기
kubectl get namespace or ns 를 통해 현재 존재하는 namespace를 확인할 수 있습니다. 여러분이 특별한 네임 스페이스를 만들지 않아도 아래와 같은 네임 스페이스가 만들어져있습니다.
kubectl get namespaces
NAME STATUS AGE
default Active 5d18h
docker Active 5d18h
kube-node-lease Active 5d18h
kube-public Active 5d18h
kube-system Active 5d18h
해당 네임스페이스에 존재하는 포드, 레플리카셋, 디플로이먼트, 서비스 등을 확인하는 방법은 아래와 같습니다. get 뒤에 pod등의 오브젝트 --namespace 찾고자 하는 네임스페이스 이름 등으로 찾을 수 있습니다.
kubectl get pods --namespace or -n default
NAME READY STATUS RESTARTS AGE
debug 1/1 Running 0 3d17h
service-deployment-6cd58767b4-9g2v2 1/1 Running 0 44h
service-deployment-6cd58767b4-plrtv 1/1 Running 0 44h
service-deployment-6cd58767b4-vk2z8 1/1 Running 0 44h
kubectl get object 이름 --namespace or -n 네임 스페이스 이름
위와 같은 명령어를 통해 쿠버네티스의 오브젝트들을 논리적으로 구분지을 수 있습니다. 하지만 알아야 주의해야 할 점은 논리적으로는 구분되어 있지만 물리적으로는 구분되지 않는다는 점 입니다. ex) 다른 네임스페이스에서 생성된 두 포드가 같은 노드에 존재할 수 있습니다.
네임 스페이스 생성 방법
1. yaml
apiVersion: v1
kind: Namespace
metadata:
name: production
kubectl apply -f 파일 이름
2. kubectl create namespace 이름
kubectl craete namespace 이름
해당 네임스페이스에 리소스를 생성하는 방법도 어렵지 않습니다. yaml 파일을 작성할 때 metadata의 namespace옵션에 등록하고 싶은 namespace를 작성하면 됩니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment
namespace: production
--- // ---를 통해 여러 개의 리소스를 생성가능
apiVersion: apps/v1
kind: Service
metadata:
name: deployment
namespace: production
네임 스페이스 서비스에 접근하기
다른 네임 스페이스면 서비스의 이름만으로는 접근할 수 없습니다. 하지만 <서비스 이름>.<네임스페이스 이름>.svc처럼 서비스 이름 뒤에 네임스페이스 이름을 붙이면 다른 네임 스페이스에도 접근할 수 있습니다.
culr hostname-svc-cluster.production.svc:8080
네임스페이스 삭제하기
kubectl delete -f <yaml 파일 이름>
kubectl delete namespace <이름>
쿠버네티스의 모든 오브젝트에 namespace를 사용할 수 있는 것은 아닙니다. 이를 확인하기 위해서는 아래 명령어로 확인할 수 있습니다.
kubectl api-resources --namespaced=true
'devops > kubernetes' 카테고리의 다른 글
kubernetes - 인그레스(ingress) (2) | 2020.02.19 |
---|---|
kubernetes 리소스의 관리와 설정 - Configmap, Secret (0) | 2020.02.19 |
kubernetes started(5) 서비스(Service) (0) | 2020.02.15 |
kubernetes started(4) 디플로이먼트(Deployment) (0) | 2020.02.15 |
kubernetes started(3) 레플리카 셋(Replica Set) (0) | 2020.02.15 |