6-1. 컨테이너 관리(하드웨어 리스소 제한 및 컨테이너 모니터링)

2024. 4. 30. 17:16·쿠버네티스/docker
  1. 컨테이너 하드웨어 리소스 제한 방법
    1. 하드웨어 리소스란? 디스크, cpu, 메모리 등을 의미함.
    2. 컨테이너 하드웨어 리소스 제한 이유
      • 기본적으로 컨테이너는 호스트 하드웨어 리소스의 사용 제한을 받지 않음.
      • A컨테이너가 리소스를 많이 사용하게 되면, 다른 컨테이너에서는 리소스를 적게 사용할 수밖에 없음.
      • 컨테이너가 필요로하는 만큼의 리소스만 할당.
    3. docker command를 통해 제한할 수 있는 리소스
      1. CPU
      2. Memory
      3. Disk I/O
      4. docker run --help
    4. Memory 리소스 제한
      옵션 의미
      --memory, -m 컨테이너가 사용할 최대 메모리 양을 지정.
      --memory -swap 컨테이너가 사용할 스왑 메모리 영역에 대한 설정.
      메모리 + 스왑. 생략 시 메모리의 2배가 설정됨
      --memory -reservation --memory 값보다 적은 값으로 구성하는 소프트 제한 값 설정
      --oom -kill -disable OOM Killer가 프로세스 kill 하지 못하도록 보호
      • 제한 단위는 b, k, m, g로 할당
      • docker run -d -m 512m nginx:1.14
        • nginx:1.14 컨테이너 최대 사용 메모리를 512mb 로 지정함
      • docker run -d -m 1g --memory-reservation 500m nginx:1.14
        • nginx:1.14 컨테이너 최대 사용 메모리를 1gb로 지정하고, 500mb는 보장받음
      • docker run -d -m 200m --memory-swap 300m nginx:1.14
        • nginx:1.14 컨테이너 최대 사용 메모리를 200mb로 지정하고, swap 메모리는 100mb (300-200)로 지정.
        • --memory-swap 생략 시, 최대 사용 메모리 2배만큼이 swap 메모리로 지정됨
      • docker run -d -m 200m --oom-kill-disable nginx:1.14
        • linux 커널에서 메모리 사이즈 부족 시, out of memory killer 을 동작시켜 프로세스들을 kill함.
        • --oom-kill-disable 옵션을 통해 메모리가 부족해도 kill 시키지 않음.
    5. CPU 리소스 제한
      옵션 의미
      --cpus 컨테이너에 할당할 CPU core 개수를 지정
      --cpus="1.5" : 컨테이너가 최대 1.5개의 CPU 파워 사용 가능
      --cpuset-cpus 컨테이너가 사용할 수 있는 CPU나 코어를 할당. cpu index 는 0부터
      --cpus-cpus=0--4
      --cpu-share 컨테이너가 사용하는 CPU 비중을 1024 값을 기반으로 설정
      --cpu-share 2048 : 기본값보다 2배 많은 CPU 자원을 할당.
      • docker run -d --cpus=".5" ubuntu:1.14
        • 컨테이너가 0.5의 CPU 파워 사용 가능.
      • docker run -d --cpu-shares 2048 ubuntu:1.14
        • 모든 컨테이너는 기본으로 1024의 cpu sharebox 를 가지고 있음.
        • 2048 컨테이너 할당 시, 다른 컨테이너에 비해 2배의 cpu 파워를 할당함. (상대적 가중치)
      • docker run -d --cpuset-cpus 0-3 ubuntu:1.14
        • 컨테이너가 0~3 사이의 CPU를 사용할 수 있음.
    6. Block I/O 제한
      옵션 의미
      --blkio-weight
      --blkio-weight-device
      Block IO의 Quota를 설정할 수 있으며, 100~1000까지 선택
      default 500
      --device-read-bps
      --device-write-bps
      특정 디바이스에 대한 읽기와 쓰기 작업의 초당 제한을 kb, mb, gb 단위로 설정
      --device-read-iops
      --device-write-iops
      컨테이너의 read/write 속도의 쿼터를 설정한다. 
      초당 quota를 제한해서 I/O를 발생시킴. 0 이상의 정수로 표기
      초당 데이터 전송량 = IOPS * 블럭크기 (단위 데이터 용량)
      • docker run -it --rm --blkio-weight 100 ubuntu :latest /bin/bash
        • 모든 컨테이너는 block I/O 가 default 500의 값을 가지고 있음.
        • ubuntu :latest 컨테이너는 100의 Block I/O를 가짐 (상대적 가중치)
      • docker run -it --rm --device-write-bps /dev/vda:1mb ubuntu:latest /bin/bash
        • dev/vda에 저장할 때 쓰기 속도를 초당 1mb 로 지정
      • docker run -it --rm --device-write-bps /dev/vda:10mb ubuntu:latest /bin/bash
        • dev/vda에 저장할 때 쓰기 속도를 초당 10mb 로 지정
      • docker run -it --rm --device-write-iops /dev/vda:10 ubuntu:latest /bin/bash
        • ubuntu:latest 컨테이너의 쓰기 속도를 초당 1mb 로 지정
      • docker run -it --rm --device-write-iops /dev/vda:100 ubuntu:latest /bin/bash
        • ubuntu:latest 컨테이너의 쓰기 속도를 초당 10mb 로 지정
  2. 컨테이너 사용 리소스 확인 모니터링 툴
    1. docker monitoring commads
      • docker stat : 실행중인 컨테이너의 런타임 통계를 확인
        docker stats [옵션] [컨테이너]
      • docker event : 도커 호스트의 실시간 event 정보를 수집하여 출력
        docker events -f container=<MAME>
        docker images -f container=<MAME>
      • cAdvisor : https://github.com/google/cadvisor

'쿠버네티스 > docker' 카테고리의 다른 글

7-1. Docker Container Storage  (1) 2024.05.01
6-2. 컨테이너 리소스 관리하기.  (0) 2024.04.30
5-2. Docker 컨테이너 사용하기  (0) 2024.04.30
5-1. 컨테이너 사용하기  (0) 2024.04.29
4-2. 컨테이너 보관 창고  (0) 2024.04.29
'쿠버네티스/docker' 카테고리의 다른 글
  • 7-1. Docker Container Storage
  • 6-2. 컨테이너 리소스 관리하기.
  • 5-2. Docker 컨테이너 사용하기
  • 5-1. 컨테이너 사용하기
몽자비루
몽자비루
코딩공부 정리용 블로그입니다.
  • 몽자비루
    공부하는 블로그
    몽자비루
  • 전체
    오늘
    어제
    • 분류 전체보기 (178) N
      • python (30)
        • python_selenium (16)
        • python_pygame (3)
      • appium (0)
      • 쿠버네티스 (60)
        • linux (8)
        • shell programming (8)
        • docker (18)
        • cka (23)
      • postman&API (16)
      • QA성장하기 (33)
        • 개발자에서 아키텍트로 스터디 (6)
        • 소프트웨어 공학 이해도 높이기 (6)
        • 테스팅 전문 지식 쌓기 (18)
        • 제4회 QA conference (3)
      • 에러일기 (1)
      • Server&load (35)
        • AWS (27)
        • load test (5)
        • CI CD (3)
        • Jmeter (0)
      • RAG 을 활용하여 LLM 만들어보기 (2) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    사드웨어리소스
    python
    포스트맨
    애플리케이션로그
    앱공존성
    로스트아크
    도커
    application log
    postman
    e2c
    LOSTARK
    로스트아크api
    리눅스
    API
    qa 컨퍼런스
    스터디
    쿠버네티스
    테스트스크립트
    네트워크 테스트
    공존성테스트
    qa conference
    qa
    개발자에서아키텍트로
    vi에디터
    QAKOREA
    linux
    k8s
    .cpu
    cka
    테스트 결과보고서
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
몽자비루
6-1. 컨테이너 관리(하드웨어 리스소 제한 및 컨테이너 모니터링)
상단으로

티스토리툴바