Kubernetes/Udemy - CKAD with Tests

Namespace

비번변경 2021. 7. 4. 21:33

Namespace

동일한 물리 클러스터를 기반으로 하는 가상 클러스터

  • Default Namespace
    클러스터를 처음 설정할 때 쿠버네티스에 의해 자동으로 생성된다.
  • kube-system
    쿠버네티스 시스템에서 생성한 오브젝트를 위한 네임스페이스
    생성한 포드와 서비스를 사용자에게서 격리하여, 실수로 서비스를 삭제하거나 수정하지 않도록 한다.
  • kube-public
    인증되지 않은 사용자를 포함하여 모든 사용자가 읽기 권한으로 접근할 수 있는 자동 생성 네임스페이스

 

네임스페이스 내의 리소스는 이름으로 지칭할 수 있다.

다른 네임스페이스와 통신하기 위해서는 <service_name>.<namespace>.svc.cluster.local 형식의 DNS를 사용해야 한다. DNS에서 cluster.local은 쿠버네티스의 기본 도메인 이름이며, svc는 서비스의 하위 도메인이자 서비스 자체의 이름이다.

 

 

명령어

# 기본 네임스페이스 내 pod 나열
kubectl get pods

# 지정한 네임스페이스 내 pod 나열
kubectl get pods --namespace=<NAMESPACE>

 

Pod 생성 시 namespace 지정 방법

kubectl create -f pod.yml --namespace=<NAMESPACE>

생성 명령 시 위와 같이 namespace 옵션을 주거나 yaml 파일 내 정의하면 된다.

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

 

네임스페이스 생성 방법

  • 정의 파일을 작성한 뒤, create 명령으로 생성
    spec 아래는 리소스 할당량을 제한하도록 설정하는 부분이다.
apiVersion: v1
kind: Namespace
metadata:
  name: dev
spec:
  hard:
    pods: "10"
    requests.cpu: "4"
    requests.memory: 5Gi
    limits.cpu: "10"
    limits.memory: 10Gi
kubectl create -f .yml
  • create 명령으로 생성
kubectl create namespace <NAMESPACE>

 

네임스페이스 전환 방법

kubectl config set-context $(kubectl config current-context) --namespace=<NAMESPACE>

context는 동일한 관리 시스템에서 여러 환경의 여러 클러스터 관리에 사용한다.