Resource requests
- pod를 실행하기 위한 최소 resource 양을 요청
Resource limits
- pod가 사용할 수 있는 최대 resource 양을 제한
- memory limit을 초과해서 사용되는 pod는 종료(OOM Kill)되며 다시 scheduling 된다
- limits만 설정할 경우 자동으로 limits와 동일한 값으로 requests 설정됨
Container resource 설정 예
- container별로 resource 설정
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod-env
spec:
containers:
- name: nginx-container
image: nginx:1.14
ports:
- containerPort: 80
protocol: TCP
env:
- name: MYVAR
value: "testvalue"
resources: //설정 예
requests:
memory: 500Mi
cpu: 200m
limits:
memory: 1Gi
cpu: 1
⚠️ Memory의 단위 : 1MB = 1000KB, 1MiB = 1024KiB CPU의 단위 : 1core = 1000mc
Container 환경변수란?
- pod내의 container가 실행될 때 필요로 하는 변수
- container 제작 시 미리 정의 (ENV)
- pod 실행 시 미리 정의된 container 환경변수를 변경할 수 있다
[ Hands - on ] : 환경변수 설정하기
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: nginx
name: nginx
spec:
containers:
- image: nginx:1.14
name: nginx
ports:
- containerPort: 80
env: //환경변수 지정
- name: MYVAR
value: "testvalue"
- 실행된 pod의 container로 접속하여 환경변수 확인
kubectl exec nginx -it -- /bin/bash
env
MYDB_SERVICE_PORT=80
MYSERVICE_PORT_80_TCP_PROTO=tcp
MYSERVICE_SERVICE_HOST=10.105.26.191
HOSTNAME=nginx
MYSERVICE_SERVICE_PORT=80
NJS_VERSION=1.14.2.0.2.6-1~stretch
MYDB_PORT=tcp://10.110.46.126:80
NGINX_VERSION=1.14.2-1~stretch
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
MYDB_SERVICE_HOST=10.110.46.126
MYSERVICE_PORT_80_TCP=tcp://10.105.26.191:80
MYVAR=testvalue #설정한 환경변수 확인
...
Pod 실행 패턴
- pod를 구성하고 실행하는 패턴
- multi-container pod
- Sidecar :
- 원래 사용하려고 했던 기본 container의 기능을 확장하거나 강화하는 용도의 컨테이너를 추가하는 패턴
- Adapter :
- pod 외부로 노출되는 정보를 표준화하는 역할
- 주로 pod의 모니터링 지표를 adapter container를 통해서 표준화된 형식으로 노출시키고, 외부의 모니터링 시스템에서 그 데이터를 주기적으로 가져가서 모니터링하는데 이용
- Ambassador :
- pod내에 proxy 역할을 하는 container를 추가하는 패턴
- pod내에서 외부 서버에 접근할 때 내부의 proxy에 접근하도록 설정하고 실제로 외부로의 연결은 proxy에서 알아서 처리하는 방식
- Sidecar :
<이미지 출처 : Multi-Container Pod Design Patterns - CKAD Course >
참고 :
[따배쿠] 5-6 Pod에 Resource 할당하기 (cpu/memory rrequests, limits)
'INFRA > DevOps' 카테고리의 다른 글
[K8s] Deployment (1) | 2022.10.04 |
---|---|
[K8s] ReplicationController & ReplicaSet (0) | 2022.09.26 |
[K8s] Init container & Infra container (0) | 2022.09.14 |
[k8s] LivenessProbe를 이용해서 Self-healing Pod 생성 (0) | 2022.09.13 |
[K8s] Container 정리와 Single / Multi Container Pod 생성 (0) | 2022.08.29 |
댓글