6-2. 컨테이너 리소스 관리하기.

2024. 4. 30. 23:24·쿠버네티스/docker
  1. 컨테이너 부하 테스트 프로그램
    1. stress container 생성
      • 컨테이너 빌드 : 부하 테스트 프로그램 stress를 설치하고 동작시키는 컨테이너 빌드
      • CPU 부하 테스트 : 2개 cpu core 를 100% 사용하도록 부하 발생
        stress --cpu 2
      • 메모리 부하 테스트 : 프로세스 수 2개와 사용할 메모리만큼 부하 발생 :
        stress --vm 2 --vm-bytes <사용할 크기>
  2. 메모리 리소스 제한 실습
    1. docker run -m 100m --memory-swap 100m stress:latest --vm 1 --vm-bytes 90m -t 5s
      • 최대 100mb 사용 가능, swap 메모리 0mb 사용 가능.
      • stress:latest 사용 시, 5초동안 90mb 메모리 부하
        • 5초 뒤 작동됨.
    2. docker run -m 100m --memory-swap 200m stress:latest --vm 1 --vm-bytes 150m -t 5s
      • 최대 100mb 사용 가능, swap 메모리 0mb 사용 가능.
      • stress:latest 사용 시, 5초동안 150mb 메모리 부하
        • 최대 작업양이 부하양보다 적기 때문에 바로 종료됨.(FAIL)
    3. docker run -m 100m  stress:latest --vm 1 --vm-bytes 150m -t 5s
      • 최대 100mb 사용 가능, swap 메모리는 생략되어있기 때문에, 200mb 로 지정됨
      • stress:latest 사용 시, 5초동안 150mb 메모리 부하
        • 5초 대기 후 진행됨
    4. docker run -d -m 100M --name m4 --oom-kill-disable=true nginx
      • nginx 컨테이너는 out of memory killer 가 kill 시키지 못함.
      • docker inspect m4 을 통해 oomkillDisable : true 확인
      • cat /sys/fs/cgroup/memory/docker/{container ID}/memory.oom_control로 확인
  3. cpu 리소스 제한 실습
    1. docker run --cpuset-cpus 1 --name c1 -d stress stress --cpu 1
      • cpu 1번에서 stress 컨테이너를 실행함.
      • 특정 cpu 코어 1개만 사용하도록 허용함.
        • htop 명령어를 통해 1번 cpu 만 사용중인 것을 확인할 수 있음.
    2. docker run --cpuset-cpus 0-1 --name c2 -d stress stress --cpu 1
      • cpu 0 또는 1번에서 stress 컨테이너를 실행하며, 상황에 따라 변경함.
      • 특정 cpu 코어 1개만 사용하도록 허용함
    3. docker run -c [할당량] --name [컨테이너명] -d [컨테이너 이미지:태그]
      • 여러개의 컨테이너 실행 및 cpu 할당량 지정
        • cload1 : 2048
        • cload2 : 1024
        • cload3 : 512
        • cload4 : 512
    4. docker stats : 컨테이너 별 리소스 사용 체크하기
  4. Block I/O 제한 실습

    1. docker run -it --rm --device-write-iops /dev/sda:10 ubuntu:latest /bin/bash
      /# dd if=/dev/zero of=file1 bs=1M count=10 oflag=direct
      • --device-write-iops 를 적용하여 write 속도의 초당 quota를 제한하여 IO write를 발생시킴.
    2. docker run -it --rm --device-write-iops /dev/sda:100 ubuntu:latest /bin/bash
      /# dd if=/dev/zero of=file1 bs=1M count=10 oflag=direct
      • write quota 를 100으로 변경 후 같은 작업을 반복한다.
  5. cAdvisor 실행
    https://github.com/google/cadvisor
    1. https://github.com/google/cadvisor 해당 부분 터미널에 붙여넣기
    2. docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' cadvisor : docker host ip 확인하기
      • http://{docker host ip}:8080 으로 접속하여 cadvisor 사용 (접속 안됨)
  6.  문제풀이
    1. db라는 이름을 가지는 mysql 컨테이너를 다음의 조건으로 실행하시오
      • MYSQL_ROOT_PASSWORD:pass
      • 물리 메모리 : 200M
      • 스왑 메모리 : 300M
      • 할당 CPU core 수 : 1
        • docker run --name db -e MYSQL_ROOT_PASSWORD=pass -d -p 3306:3306 -m 200m --memory-swap 300m --cpus="1" mysql:latest
    2. db 컨테이너 리소스 사용량을 docker stat 명령을 통해 확인해보자.
      • docker stats db

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

7-2.Docker Container Storage  (0) 2024.05.03
7-1. Docker Container Storage  (1) 2024.05.01
6-1. 컨테이너 관리(하드웨어 리스소 제한 및 컨테이너 모니터링)  (1) 2024.04.30
5-2. Docker 컨테이너 사용하기  (0) 2024.04.30
5-1. 컨테이너 사용하기  (0) 2024.04.29
'쿠버네티스/docker' 카테고리의 다른 글
  • 7-2.Docker Container Storage
  • 7-1. Docker Container Storage
  • 6-1. 컨테이너 관리(하드웨어 리스소 제한 및 컨테이너 모니터링)
  • 5-2. Docker 컨테이너 사용하기
몽자비루
몽자비루
코딩공부 정리용 블로그입니다.
  • 몽자비루
    공부하는 블로그
    몽자비루
  • 전체
    오늘
    어제
    • 분류 전체보기 (166) 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성장하기 (30)
        • 개발자에서 아키텍트로 스터디 (6)
        • 소프트웨어 공학 이해도 높이기 (6)
        • 테스팅 전문 지식 쌓기 (18)
      • 에러일기 (1)
      • Server&load (28) N
        • AWS (27)
        • Jmeter (0)
        • load test (1) N
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
몽자비루
6-2. 컨테이너 리소스 관리하기.
상단으로

티스토리툴바