DOI QR코드

DOI QR Code

쿠버네티스 환경에서 컨테이너 워크플로의 실행 시간 개선을 위한 컨테이너 재시작 감소 기법

Technique to Reduce Container Restart for Improving Execution Time of Container Workflow in Kubernetes Environments

  • 투고 : 2023.08.01
  • 심사 : 2023.09.26
  • 발행 : 2024.03.31

초록

데이터 집약적이고 메모리 변동성이 높은 워크플로의 이식성 보장을 위해 컨테이너 가상화 기술이 사용되고 있다. 그리고 쿠버네티스는 이러한 컨테이너 애플리케이션들을 관리하기 위한 오케스트레이션 도구로써 사실상 표준으로 사용되고 있다. 클라우드 사용자는 리소스 부족으로 인한 컨테이너 재시작을 방지하기 위해 컨테이너 애플리케이션을 오버프로비저닝하는 경향이 있다. 그러나 과도한 오버프로비저닝은 CPU, 메모리 등 시스템 리소스의 사용량을 낮아지게 만든다. 이 문제를 해결하기 위해 컨테이너 리소스를 초과 사용하는 방식이 널리 사용되고 있으나, 지나친 메모리 리소스 초과 사용은 노드의 메모리 부족으로 인해 연쇄적인 컨테이너 재시작을 유발할 수 있다. 컨테이너 재시작 발생 시 작업을 처음부터 다시 시작해야 하므로 많은 상태저장 애플리케이션이 포함된 메모리 변동성이 높은 컨테이너에 큰 오버헤드를 유발할 수 있다. 본 논문은 쿠버네티스 환경에서 메모리 초과 사용 시 컨테이너 재시작을 완화하는 기법을 제안한다. 메모리 사용량이 많은 노드에서 메모리 할당을 요청할 가능성이 큰 컨테이너를 식별하고 이러한 컨테이너를 일시정지한다. 컨테이너의 CPU 사용량을 크게 줄이면 컨테이너가 일시정지하는 상태와 유사한 효과를 얻을 수 있다. 해당 노드의 메모리 사용량이 개선된 것으로 판단되면 컨테이너의 일시정지를 해제한다. 제안기법을 적용하여 쿠버네티스 환경에서 메모리 변동성이 높은 워크플로를 구동한 경우 제안기법을 사용하지 않았을 때에 비해 컨테이너의 재시작 횟수가 평균 40%, 최대 58% 감소하였다. 그리고 컨테이너 재시작 횟수 감소로 인해 컨테이너 워크플로의 총 실행 시간이 평균 7%, 최대 13% 단축되었다.

The utilization of container virtualization technology ensures the consistency and portability of data-intensive and memory volatile workflows. Kubernetes serves as the de facto standard for orchestrating these container applications. Cloud users often overprovision container applications to avoid container restarts caused by resource shortages. However, overprovisioning results in decreased CPU and memory resource utilization. To address this issue, oversubscription of container resources is commonly employed, although excessive oversubscription of memory resources can lead to a cascade of container restarts due to node memory scarcity. Container restarts can reset operations and impose substantial overhead on containers with high memory volatility that include numerous stateful applications. This paper proposes a technique to mitigate container restarts in a memory oversubscription environment based on Kubernetes. The proposed technique involves identifying containers that are likely to request memory allocation on nodes experiencing high memory usage and temporarily pausing these containers. By significantly reducing the CPU usage of containers, an effect similar to a paused state is achieved. The suspension of the identified containers is released once it is determined that the corresponding node's memory usage has been reduced. The average number of container restarts was reduced by an average of 40% and a maximum of 58% when executing a high memory volatile workflow in a Kubernetes environment with the proposed method compared to its absence. Furthermore, the total execution time of a container workflow is decreased by an average of 7% and a maximum of 13% due to the reduced frequency of container restarts.

키워드

과제정보

이 논문은 2023년도 정부(과학기술정보통신부)의 재원으로 정보통신기획평가원의 지원을 받아 수행된 연구임(No.2022-0-01198, 융합보안대학원(고려대학교)). 본 연구는 과학기술정보통신부 및 정보통신기획평가원의 ICT혁신인재4.0사업의 연구결과로 수행되었음(IITP-2023-RS-2022-00156439).

참고문헌

  1. A. R. Setlur, S. J. Nirmala, H. S. Singh, and S. Khoriya, "An efficient fault tolerant workflow scheduling approach using replication heuristics and checkpointing in the cloud," Journal of Parallel and Distributed Computing, Vol.136, pp.14-28, 2020. https://doi.org/10.1016/j.jpdc.2019.09.004
  2. C. Yang, Q. Huang, Z. Li, K. Liu, and F.Hu, "Big Data and cloud computing: innovation opportunities and challenges," International Journal of Digital Earth, Vol.10, No.1, pp.13-53, 2017. https://doi.org/10.1080/17538947.2016.1239771
  3. A. Das, P Rad, K. K. R. Choo, B. Nouhi, J. Nish and J. Martel, "Distributed machine learning cloud teleophthalmology IoT for predicting AMD disease progression," Future Generation Computer Systems, Vol.93, pp.486-498, 2019. https://doi.org/10.1016/j.future.2018.10.050
  4. B. Liu, J. Li, W. Lin, W. Bai, P. Li, and Q. Gao, "K-PSO: An improved PSO-based container scheduling algorithm for big data applications," International Journal of Network Management, Vol.31, No.2, pp.e2092, 2021.
  5. M. Niu, B. Cheng, Y. Feng, and J. Chen, "GMTA: A geoaware multi-agent task allocation approach for scientific workflows in container-based cloud," IEEE Transactions on Network and Service Management, Vol.17, No.3, pp.1568-1581, 2020.
  6. I. Altintas et al., "Workflow-driven distributed machine learning in CHASE-CI: A cognitive hardware and software ecosystem community infrastructure." IEEE international parallel and distributed processing symposium workshops, pp.865-873, 2019.
  7. Q. Zhang, L. Liu, C. Pu, Q. Dou, L. Wu, and W. Zhou, "A comparative study of containers and virtual machines in big data environment." IEEE 11th International Conference on Cloud Computing, pp.178-185, 2018.
  8. M. Malinverno, J. Mangues-Bafalluy, C. E. Casetti, C. F. Chiasserini, M. Requena-Esteso, and J. Baranda, "An EdgeBased Framework for Enhanced Road Safety of Connected Cars," IEEE Access, Vol.8, pp.58018-58031, 2020.
  9. V. K. Vavilapalli et al., "Apache hadoop yarn: Yet another resource negotiator," Proceedings of the 4th annual Symposium on Cloud Computing. pp.1-16, 2013.
  10. Swarmkit [Internet], https://github.com/moby/swarmkit.
  11. Docker-swarm [Internet], https://github.com/docker-archive/classicswarm.
  12. kubernetes [Internet], https://github.com/kubernetes/kubernetes.
  13. V. M. Bhasi, J. R. Gunasekaran, P. Thinakaran, C. S. Mishra, M. T. Kandemir, and C. Das, "Kraken: Adaptive container provisioning for deploying dynamic dags in serverless platforms," Proceedings of the ACM Symposium on Cloud Computing. pp.153-167, 2021.
  14. R. Nakazawa, K. Ogata, S. Seelam, and T. Onodera, "Taming performance degradation of containers in the case of extreme memory overcommitment," IEEE 10th International Conference on Cloud Computing, pp.196-204, 2017.
  15. W. Chen, A. Pi, S. Wang, and X. Zhou, "Pufferfish: Container-driven elastic memory management for dataintensive applications," Proceedings of the ACM Symposium on Cloud Computing, pp.259-271, 2019.
  16. Kubernetes Components [Internet], https://kubernetes.io/docs/concepts/overview/components.
  17. Docker [Internet], https://www.docker.com.
  18. Containerd [Internet], https://containerd.io.
  19. Container Runtime Interface [Internet], https://kubernetes.io/docs/concepts/architecture/cri.
  20. D. Williams, H. Jamjoom, Y. H. Liu, H. Weatherspoon, "Overdriver: Handling memory overload in an oversubscribed cloud," ACM SIGPLAN Notices, Vol.46, No.7 pp.205-216, 2011. https://doi.org/10.1145/2007477.1952709
  21. J. Dogani, R. Namvar, F. Khunjush, "Auto-scaling techniques in container-based cloud and edge/fog computing: Taxonomy and survey," Computer Communications, Vol.209, pp.120-150, 2023. https://doi.org/10.1016/j.comcom.2023.06.010
  22. C Carrion, "Kubernetes scheduling: Taxonomy, ongoing issues and challenges," ACM Computing Surveys, Vol.55, No.7, pp.1-37, 2022. https://doi.org/10.1145/3539606
  23. L. M. Ruiz, P. P. Pueyo, J. Mateo-Fornes, J. V. Mayoral, and F. S. Tehas, "Autoscaling pods on an on-premise kubernetes infrastructure qos-aware," IEEE Access, Vol.10, pp.33083-33094, 2022.
  24. F. Zhang, X. Tang, X. Li, S. U. Khan, and Z. Li, "Quantifying cloud elasticity with container-based autoscaling," Future Generation Computer Systems, Vol.98, pp.672-681, 2019. https://doi.org/10.1016/j.future.2018.09.009
  25. Y. Sfakianakis, M. Marazakis, and A. Bilas, "Skynet: Performance-driven resource management for dynamic workloads, " IEEE 14th International Conference on Cloud Computing, pp.527-539, 2021.
  26. N. D. Nguyen, L. A, Phan, D. H. Park, S. Kim, and T. Kim, "ElasticFog: Elastic resource provisioning in container-based fog computing," IEEE Access, Vol.8 pp.183879-183890, 2020.
  27. Y. Al-Dhuraibi, F. Paraiso, N. Djarallah, and P. Merle, "Autonomic vertical elasticity of docker containers with elasticdocker," IEEE 10th International Conference on Cloud Computing, pp.472-479, 2017.
  28. G. Rattihalli, M. Govindaraju, H. Lu, and D. Tiwari, "Exploring potential for non-disruptive vertical auto scaling and resource estimation in kubernetes," IEEE 12th International Conference on Cloud Computing, 2019.
  29. "clinet-go", [Internet], https://github.com/kubernetes/client-go.
  30. Kubernetes Jobs, [Internet], https://kubernetes.io/docs/concepts/workloads/controllers/job.