클라우드 엔지니어/클라우드 캠프과정

쿠버네티스 - 네임스페이스(Kubernetes Namespace)

해아's 2022. 10. 17. 22:31
Namespace
  1) Namespace란?
	쿠버네티스에서, 네임스페이스 는 단일 클러스터 내에서의 리소스 그룹 격리 메커니즘을 제공
	리소스의 이름은 네임스페이스 내에서 유일해야 하며, 네임스페이스 간에서 유일할 필요는 없다. 
	네임스페이스는 여러 개의 팀이나, 프로젝트에 걸쳐서 많은 사용자가 있는 환경에서 사용하도록 만들어졌다. 
	사용자가 거의 없거나, 수 십명 정도가 되는 경우에는 네임스페이스를 전혀 고려할 필요가 없다.

	예를들면 실제 운용중인 서버를 관리하기 위한 네임스페이스와
	개발용 네임스페이스 테스트용 네임스페이스를 분리하여 운영할 수 있다.

네임스페이스로 구분한다.

#네임스페이스로 구분하는 파드
#install iputils-ping

apiVersion: v1
kind: Namespace
metadata:
  name: nm-1


apiVersion: v1
kind: Pod
metadata:
  name: pod-1
  namespace: nm-1
  labels:
    app: pod
spec:
  containers:
  - name: nettools-container1
    image: changjunlee/ubuntu:net-tools
    command: ["/bin/sh", "-ec", "while :; do echo '.'; sleep 5 ; done"]
#192.168.2.90


apiVersion: v1
kind: Namespace
metadata:
  name: nm-2

  
apiVersion: v1
kind: Pod
metadata:
  name: pod-1
  namespace: nm-2
  labels:
    app: pod
spec:
  containers:
  - name: nettools-container1
    image: changjunlee/ubuntu:net-tools
    command: ["/bin/sh", "-ec", "while :; do echo '.'; sleep 5 ; done"]
#IP 192.168.2.157
'''
 네임스페이스는
 네트워크는 분리된게 아니다
 네임스페이스가 다르면 파드명은 같아도 상관없다
'''



#리소스 쿼터
apiVersion: v1
kind: Namespace
metadata:
  name: nm-3

#리소스쿼터 생성
apiVersion: v1
kind: ResourceQuota
metadata:
  name: rq-1
  namespace: nm-3
spec:
  hard:
    requests.memory: 1Gi
    limits.memory: 1Gi


#리소스 쿼터보다 작게 만들기
apiVersion: v1
kind: Pod
metadata:
  name: nginx-guaranteed-pod
  namespace: nm-3
spec:
  containers:
  - name: nginx-guaranteed-pod
    image: nginx:latest
    resources:
      limits:
        memory: "512Mi"
      requests:
        memory: "512Mi"

#리소스 쿼터보다 크게 만들기
apiVersion: v1
kind: Pod
metadata:
  name: nginx-guaranteed-pod2
  namespace: nm-3
spec:
  containers:
  - name: nginx-guaranteed-pod2
    image: nginx:latest
    resources:
      limits:
        memory: "2Gi"
      requests:
        memory: "2Gi"



#리밋레인지

#설정안하고
#설정값작게
#설정값크게
apiVersion: v1
kind: Namespace
metadata:
  name: nm-4

apiVersion: v1
kind: LimitRange
metadata:
  name: lr-1
  namespace: nm-4
spec:
  limits:
  - type: Container
    min:
      memory: 0.1Gi
    max:
      memory: 0.4Gi
    maxLimitRequestRatio:
      memory: 3
    defaultRequest:
      memory: 0.1Gi
    default:
      memory: 0.2Gi



#실습
#설정안하고

apiVersion: v1
kind: Pod
metadata:
  name: nginx-burstable-pod1
  namespace: nm-4
spec:
  nodeSelecter:
    kubernetes.io/hostname: node2
  containers:
  - name: nginx-burstable-pod1
    image: nginx:latest

#설정값 기본값보다작게
apiVersion: v1
kind: Pod
metadata:
  name: nginx-burstable-pod2
  namespace: nm-4
spec:
  nodeSelecter:
    kubernetes.io/hostname: node2
  containers:
  - name: nginx-burstable-pod2
    image: nginx:latest
    resources:
      limits:
        memory: "99Mi"
      requests:
        memory: "99Mi"

#결과
#Deploying file has failed
#pods "nginx-burstable-pod2" is forbidden: minimum memory usage per Container is 107374182400m, but request is 99Mi 
#설정값보다크게
apiVersion: v1
kind: Pod
metadata:
  name: nginx-burstable-pod2
  namespace: nm-4
spec:
  nodeSelecter:
    kubernetes.io/hostname: node2
  containers:
  - name: nginx-burstable-pod2
    image: nginx:latest
    resources:
      limits:
        memory: "500Mi"
      requests:
        memory: "500Mi"

#결과
#Deploying file has failed
#pods "nginx-burstable-pod2" is forbidden: maximum memory usage per Container is 429496729600m, but limit is 500Mi 


#비율을 제한
apiVersion: v1
kind: Pod
metadata:
  name: nginx-burstable-pod3
spec:
  nodeSelecter:
    kubernetes.io/hostname: node2
  containers:
  - name: nginx-burstable-pod2
    image: nginx:latest
    resources:
      requests:
        memory: "150Mi"
      limits:
        memory: "600Mi"



#Deploying file has failed
#pods "nginx-burstable-pod3" is forbidden: [maximum memory usage per Container is 429496729600m, but limit is 600Mi, memory max limit to request ratio per Container is 3, but provided ratio is 4.000000]
#중요!!  네임스페이스 삭제시 안에있는 모든 파드및 각종정보들 모두 삭제된다!!!

 

 

728x90
반응형