파드 특징과 Cpu limit
파드
- 하나이상의 컨테이너 그룹, 애플리케이션 배포 기본 단위
파드의 컨테이너(Container) 특징
- Pod 당 컨테이너 하나가 일반적인 유스 케이스
- 여러 컨테이너가 단일 Pod안에 존재 가능함, 완전한 서비스 컨테이너를 다중으로 가지는 것은 권장 X
- ex) 완전한 웹서버 컨테이너 2개가 1개의 Pod안에 존재하는 것은 XX
- 완전한 웹서버 컨테이너를 서포트(보조)할 수 있는 컨테이너가 같이 있는 것은 OO
- 이때, 보조 컨테이너를 사이드카 컨테이너라고 부름
- Container는 서비스가 연결될 수 있도록 port를 가짐
- Container는 다중 port를 가질 수 있지만, Container 끼리 port 중복 XX
파드 컨테이너 정의
- containers [] 밑에 각 정보 입력
apiVersion: batch/v1
kind: Pod
metadata:
name: hello
spec:
template:
spec:
containers:
- name:
image:
command: ['']
restartPolicy: OnFailure
파드 컨테이너 리소스 관리
- 리소스 정의하는 법은 containers.resources에서 request와 limit
apiVersion: batch/v1
kind: Pod
metadata:
name: hello
spec:
template:
spec:
containers:
- name:
image:
command: ['']
restartPolicy: OnFailure
resources:
requests:
memory : "64Mi"
cpu : "300m"
limits:
memory : "128Mi"
cpu "500m"
- requests : 컨테이너 생성 시 사용하는 자원
- limit : 컨테이너가 필요시 사용할 수 있는 최대 자원
Memory 단위
- Mi = MIB, 64MI = 64MB
- Ei, Pi, Ti, Gi, Mi, Ki 단위 사용, 줄여서 E, P, T, G, M, K
CPU 단위
- 1000(milicore, 밀리 코어) = 1 CPU core,
- 500m = 0.5 core
us : 1/1000000초 , 마이크로초
ms = us * 1000 = 1/1000초 , 밀리초
1 cpu = 1000 milicore = 100000 us , 밀리 코어 * 100 = us
" cpu : 3"으로 설정했으면 -> 밀리 코어 단위로 환산하면 , 3000m이라는 값이 나옴
여기서 100을 곱한 30000 값이 cpu.cfs_quota_us로 설정이 됨
이때, kubernetes는 cpu_cfs_period_us 값을 10000us로 고정해두는데, 100ms 시간 동안 사용할 수 있는 모든 cpu에서 사용된 cpu.time의 합이 300ms만큼의 퍼포먼스를 냄
단일 컨테이너에서 프로세스 여러 개 돌아감?
https://tansfil.tistory.com/69
공식 문서
1. 컨테이너 n 프로세스 보단, 싱글 프로세스 n 컨테이너(컨테이너 여러개 만들어서 그냥 써라)
2. 하고 싶으면 프로세스 관리자를 entrypoint에서 실행시켜라
Entrypoint? 엔트리 포인트?
- CMD 명령어와 비슷
- 도커 컨테이너 생성 시 초기에 항상 실행되어야 하는 커맨드 특징
# api.py 실행
ENTRYPOINT ["python3", "api.py"]
도커 Entrypoint vs K8s Entrypoint
# DockerFile
ENTRYPOINT ["/bin/echo", "Welcome"]
# K8s yaml
kind: Pod
spec:
containers:
- image: some/image
command: ["/bin/echo"]
args: ["arg1"]
- kubernetes의 yaml 파일에 적힌 command는 도커 파일의 entrypoint를 덮어 씌움
- k8s의 command로 실행, 즉 쿠버의 command = 도커의 Entrypoint와 동일
- yaml파일에 command나 args를 입력하지 않으면 Dockerfile의 EntryPoint 실행
'Study > 도커씨와쿠버씨' 카테고리의 다른 글
Docker Compose vs Docker Swarm (0) | 2023.03.08 |
---|---|
내가 볼라고 쓰는 CUDA 부터 pytorch 설치 까지 (2) | 2022.09.16 |
[쿠도읽]쿠버네티스 레이블? 레이블 셀렉터? - (7) (0) | 2022.03.15 |
[쿠도읽] 쿠버네티스 네임스페이스? namespace? - (6) (0) | 2022.03.07 |
[쿠도읽] 오브젝트 이름? ID? UID? -(5) (0) | 2022.03.05 |