摘要(英) |
Container technology has developed rapidly in recent years, and many software services are deployed as containers and microservices. Kubernetes, an open-source container orchestration system that provides powerful features to automatically deploy and manage containerized applications, makes container deployment more flexible and reliable. So many cloud vendors provide managed Kubernetes service make it more popular to deploy containers on a cloud cluster. Some scenarios of the Internet of Things or edge computing also use Kubernetes to deploy their jobs. These jobs may face some problems, such as degradation of work node performance caused by edge environment variety, uneven computing power between work nodes, or dynamic workload. However, managing resources for containers in Kubernetes is rely on the manager’s estimation, and it is difficult to adjust to dynamic workload changes. Therefore, this thesis proposes a set of extension functions for Kubernetes, make it possible to relocate containers according to the work progress, which is achieved by using Kafka as message passing channel and monitoring Consumer Lag of each job. This thesis also proposes a relocation control flow to avoid data loss or data re-process after container relocation. |
參考文獻 |
[1] D. Bernstein, “Containers and Cloud: From LXC to Docker to Kubernetes,” IEEE Cloud Computing, vol. 1, no. 3, pp. 81–84, Sep. 2014, doi: 10.1109/MCC.2014.51.
[2] D. Jaramillo, D. V. Nguyen, and R. Smart, “Leveraging microservices architecture by using Docker technology,” in SoutheastCon 2016, Mar. 2016, pp. 1–5, doi: 10.1109/SECON.2016.7506647.
[3] F. Montesi and J. Weber, “Circuit Breakers, Discovery, and API Gateways in Microservices,” arXiv:1609.05830 [cs], Sep. 2016, Accessed: Apr. 26, 2020. [Online]. Available: http://arxiv.org/abs/1609.05830.
[4] “What is Kubernetes.” https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ (accessed Mar. 26, 2020).
[5] B. Burns, J. Beda, and K. Hightower, “Kubernetes: Up and Running,” p. 1.
[6] “Managing Compute Resources for Containers.” https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ (accessed Apr. 11, 2020).
[7] “Configure Out of Resource Handling.” https://kubernetes.io/docs/tasks/administer-cluster/out-of-resource/ (accessed Apr. 11, 2020).
[8] “Overview | Prometheus.” https://prometheus.io/docs/introduction/overview/ (accessed Mar. 26, 2020).
[9] “prometheus/node_exporter.” https://github.com/prometheus/node_exporter (accessed Mar. 26, 2020).
[10] “coreos/kube-prometheus,” May 29, 2020. https://github.com/coreos/kube-prometheus (accessed May 29, 2020).
[11] “Jsonnet - The Data Templating Language.” https://jsonnet.org/ (accessed May 29, 2020).
[12] “Apache Kafka,” Apache Kafka. https://kafka.apache.org/intro (accessed Mar. 28, 2020).
[13] M. Kleppmann and J. Kreps, “Kafka, Samza and the Unix Philosophy of Distributed Data,” p. 7.
[14] “Kafka 0.9 Consumer Rewrite Design - Apache Kafka - Apache Software Foundation.” https://cwiki.apache.org/confluence/display/KAFKA/Kafka+0.9+Consumer+Rewrite+Design#Kafka0.9ConsumerRewriteDesign-HeartbeatResponse (accessed Jun. 13, 2020).
[15] “Kafka Client-side Assignment Proposal - Apache Kafka - Apache Software Foundation.” https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Client-side+Assignment+Proposal#KafkaClientsideAssignmentProposal-Phase1:JoiningtheGroup (accessed Jun. 13, 2020).
[16] C.-Y. Fan and S.-P. Ma, “Migrating Monolithic Mobile Application to Microservice Architecture: An Experiment Report,” in 2017 IEEE International Conference on AI Mobile Services (AIMS), Jun. 2017, pp. 109–112, doi: 10.1109/AIMS.2017.23.
[17] “Service.” https://kubernetes.io/docs/concepts/services-networking/service/ (accessed Apr. 30, 2020).
[18] Xuan-Qui Pham and Eui-Nam Huh, “Towards task scheduling in a cloud-fog computing system,” in 2016 18th Asia-Pacific Network Operations and Management Symposium (APNOMS), Oct. 2016, pp. 1–4, doi: 10.1109/APNOMS.2016.7737240.
[19] D. Haja, M. Szalay, B. Sonkoly, G. Pongracz, and L. Toka, “Sharpening Kubernetes for the Edge,” in Proceedings of the ACM SIGCOMM 2019 Conference Posters and Demos, Beijing, China, Aug. 2019, pp. 136–137, doi: 10.1145/3342280.3342335.
[20] “The confluent_kafka API — confluent-kafka 1.4.0 documentation.” https://docs.confluent.io/current/clients/confluent-kafka-python/ (accessed Jun. 02, 2020). |