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
반응형