{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,7,12]],"date-time":"2026-07-12T00:12:45Z","timestamp":1783815165605,"version":"3.55.0"},"reference-count":74,"publisher":"MDPI AG","issue":"5","license":[{"start":{"date-parts":[[2021,3,9]],"date-time":"2021-03-09T00:00:00Z","timestamp":1615248000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Sensors"],"abstract":"<jats:p>Microservices, Continuous Integration and Delivery, Docker, DevOps, Infrastructure as Code\u2014these are the current trends and buzzwords in the technological world of 2020. A popular tool which can facilitate the deployment and maintenance of microservices is Kubernetes. Kubernetes is a platform for running containerized applications, for example microservices. There are two main questions which answer was important for us: how to deploy Kubernetes itself and how to ensure that the deployment fulfils the needs of a production environment. Our research concentrates on the analysis and evaluation of Kubernetes cluster as the software production environment. However, firstly it is necessary to determine and evaluate the requirements of production environment. The paper presents the determination and analysis of such requirements and their evaluation in the case of Kubernetes cluster. Next, the paper compares two methods of deploying a Kubernetes cluster: kops and eksctl. Both of the methods concern the AWS cloud, which was chosen mainly because of its wide popularity and the range of provided services. Besides the two chosen methods of deployment, there are many more, including the DIY method and deploying on-premises.<\/jats:p>","DOI":"10.3390\/s21051910","type":"journal-article","created":{"date-parts":[[2021,3,9]],"date-time":"2021-03-09T12:08:01Z","timestamp":1615291681000},"page":"1910","update-policy":"https:\/\/doi.org\/10.3390\/mdpi_crossmark_policy","source":"Crossref","is-referenced-by-count":39,"title":["Kubernetes Cluster for Automating Software Production Environment"],"prefix":"10.3390","volume":"21","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-7596-0813","authenticated-orcid":false,"given":"Aneta","family":"Poniszewska-Mara\u0144da","sequence":"first","affiliation":[{"name":"Institute of Information Technology, Lodz University of Technology, 90-924 Lodz, Poland"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Ewa","family":"Czechowska","sequence":"additional","affiliation":[{"name":"Institute of Information Technology, Lodz University of Technology, 90-924 Lodz, Poland"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"1968","published-online":{"date-parts":[[2021,3,9]]},"reference":[{"key":"ref_1","unstructured":"Vayghan, L.A., Saied, M.A., Toeroe, M., and Khendek, F. (2019). Kubernetes as an Availability Manager for Microservice Applications. arXiv."},{"key":"ref_2","unstructured":"The Kubernetes Authors (2020, May 16). Kubernetes API Server\u2014Security. Available online: https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/."},{"key":"ref_3","unstructured":"The Kubernetes Authors (2020, May 16). Kubernetes Offcial Website. Available online: https:\/\/kubernetes.io\/."},{"key":"ref_4","doi-asserted-by":"crossref","unstructured":"Diouf, G.M., Elbiaze, H., and Jaafar, W. (2019). On Byzantine Fault Tolerance in Multi-Master Kubernertes Clusters. arXiv.","DOI":"10.1016\/j.future.2020.03.060"},{"key":"ref_5","unstructured":"Arundel, J., and Domingus, J. (2019). Cloud Native DevOps with Kubernetes: Building, Deploying, and Scaling Modern Applications in the Cloud, O\u2019Reilly Media."},{"key":"ref_6","unstructured":"Pitchumani, R., and Kee, Y.-S. (2020, January 24\u201327). Hybrid Data Reliability for Emerging Key-Value Storage Devices. Proceedings of the 18th USENIX Conference on File and Storage Technologies (FAST 20), Santa Clara, CA, USA."},{"key":"ref_7","doi-asserted-by":"crossref","first-page":"53","DOI":"10.1016\/j.sysarc.2016.12.007","article-title":"State machine replication in containers managed by Kubernetes","volume":"73","author":"Netto","year":"2016","journal-title":"J. Syst. Archit."},{"key":"ref_8","unstructured":"Sayfan, G. (2018). Mastering Kubernetes, Packt Publishing. [2nd ed.]."},{"key":"ref_9","unstructured":"Saito, H., Lee, H.-C., and Wu, C.-Y. (2017). DevOps with Kubernetes, Packt Publishing."},{"key":"ref_10","unstructured":"Mai, K. (2017). Building High Availability Infrastructure in Cloud. [Bachelor\u2019s Thesis, Metropolia University of Applied Sciences]."},{"key":"ref_11","doi-asserted-by":"crossref","unstructured":"Alshammari, M.M., Alwan, A.A., Nordin, A., and Al-Shaikhli, I.F. (December, January 29). Disaster Recovery in Single-Cloud and Multi-Cloud Environments: Issues and Challenges. Proceedings of the 4th IEEE International Conference on Engineering Technologies and Applied Sciences (ICETAS 2017), Salmabad, Bahrain.","DOI":"10.1109\/ICETAS.2017.8277868"},{"key":"ref_12","unstructured":"Morris, K. (2016). Infrastructure as Code, O\u2019Reilly Media. [1st ed.]."},{"key":"ref_13","unstructured":"Humble, J., and Farley, D. (2010). Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation, Addison-Wesley Professional. [1st ed.]."},{"key":"ref_14","doi-asserted-by":"crossref","first-page":"42","DOI":"10.1109\/MCC.2017.4250933","article-title":"Key Characteristics of a Container Orchestration Platform to Enable a Modern Application","volume":"4","author":"Khan","year":"2017","journal-title":"IEEE Cloud Comput."},{"key":"ref_15","unstructured":"Turol, S., Gutierrez, C., and Matykevich, S. (2020, May 20). A Multitude of Kubernetes Deployment Tools: Kubespray, Kops, and Kubeadm. Available online: https:\/\/www.altoros.com\/blog\/a-multitude-of-kubernetes-deployment-tools-kubespray-kops-and-kubeadm\/?utm_campaign=SMM-Val_K8sTools%20Post-Free-Promo-Medium&utm_source=Medium."},{"key":"ref_16","unstructured":"WeaveWorks (2020, April 15). Production Ready Checklists for Kubernetes. Available online: https:\/\/go.weave.works\/production-ready-kubernetes-checklist.html?LeadSource=Website%20-%20General&CampaignID=7014M000001cEod."},{"key":"ref_17","unstructured":"WeaveWorks (2020, April 15). Your Guide to a Production Ready Kubernetes Cluster. Available online: https:\/\/go.weave.works\/WP-Production-Ready.html?LSD=Homepage&Source=Website%20-%20General."},{"key":"ref_18","unstructured":"Uphill, T. (2017). DevOps: Puppet, Docker and Kubernetes, Packt Publishing."},{"key":"ref_19","unstructured":"Milenovi, M. (2020, April 15). How to Monitor Kubernetes Cluster with Prometheus and Grafana. Available online: https:\/\/linoxide.com\/linux-how-to\/monitor-kubernetes-cluster-prometheus-grafana\/."},{"key":"ref_20","unstructured":"Kubernetes Community (2020, June 12). Web UI (Dashboard). Available online: https:\/\/kubernetes.io\/docs\/tasks\/access-application-cluster\/web-ui-dashboard\/."},{"key":"ref_21","doi-asserted-by":"crossref","first-page":"433","DOI":"10.1080\/17445760.2019.1608989","article-title":"Incorporating the Raft consensus protocol in containers managed by Kubernetes: An evaluation","volume":"35","author":"Netto","year":"2020","journal-title":"Int. J. Parallel Emergent Distrib. Syst."},{"key":"ref_22","unstructured":"Bakker, P. (2020, April 15). One Year Using Kubernetes in Production: Lessons Learned. Available online: https:\/\/techbeacon.com\/devops\/one-year-using-kubernetes-production-lessons-learned."},{"key":"ref_23","unstructured":"Graylog (2020, April 15). Graylog Offcial Website. Available online: https:\/\/www.graylog.org\/."},{"key":"ref_24","unstructured":"Graylog (2020, April 15). Improving Kubernetes Clusters\u2019 Efficiency with Log Management. Available online: https:\/\/www.graylog.org\/post\/improving-kubernetes-clusters-efficiency-with-log-management."},{"key":"ref_25","unstructured":"Amazon (2020, April 15). AWS CloudTrail. Available online: https:\/\/aws.amazon.com\/cloudtrail\/."},{"key":"ref_26","doi-asserted-by":"crossref","first-page":"56","DOI":"10.1145\/102792.102801","article-title":"Understanding Fault-Tolerant Distributed Systems","volume":"34","author":"Cristian","year":"1993","journal-title":"Commun. ACM"},{"key":"ref_27","doi-asserted-by":"crossref","first-page":"975","DOI":"10.1007\/s00607-013-0361-x","article-title":"Comparing redundancy models for high availability middleware","volume":"96","author":"Kanso","year":"2014","journal-title":"Computing"},{"key":"ref_28","unstructured":"Varia, J. (2010). Architecting for the Cloud: Best Practices. AWS Whitepapers, Amazon Web Services."},{"key":"ref_29","unstructured":"Gravier, T.W. (2020, June 12). What Is RAID and Why Should You Want It?. Available online: https:\/\/raid.wiki.kernel.org\/index.php\/What_is_RAID_and_why_should_you_want_it%3F."},{"key":"ref_30","unstructured":"Chef Software Inc. (2020, April 16). Offcial Chef website. Available online: https:\/\/www.chef.io\/."},{"key":"ref_31","unstructured":"Red Hat, Inc. (2020, April 16). Offcial Ansible Website. Available online: https:\/\/www.ansible.com\/."},{"key":"ref_32","unstructured":"SaltStack, Inc. (2020, April 16). Offcial SaltStack Website. Available online: https:\/\/www.saltstack.com\/."},{"key":"ref_33","unstructured":"Hashicorp (2020, May 18). Terraform Offcial Website. Available online: https:\/\/www.terraform.io\/."},{"key":"ref_34","first-page":"569","article-title":"Modeling and design of role engineering in development of access control for dynamic information systems","volume":"61","year":"2013","journal-title":"Bull. Pol. Acad. Sci. Tech. Sci."},{"key":"ref_35","first-page":"495","article-title":"Secure Development Model for mobile applications","volume":"64","author":"Majchrzycka","year":"2016","journal-title":"Bull. Pol. Acad. Sci. Tech. Sci."},{"key":"ref_36","doi-asserted-by":"crossref","unstructured":"Alhazmi, O.H., and Malaiya, Y.K. (2013). Evaluating Disaster Recovery Plans Using the Cloud, Taibah University.","DOI":"10.1109\/RAMS.2013.6517700"},{"key":"ref_37","unstructured":"Microsoft (2020, April 17). Health Endpoint Monitoring Pattern. Available online: https:\/\/docs.microsoft.com\/en-us\/azure\/architecture\/patterns\/health-endpoint-monitoring."},{"key":"ref_38","unstructured":"Kubernetes Community (2020, April 17). Configure Liveness, Readiness and Startup Probes. Available online: https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/configure-liveness-readiness-startup-probes\/."},{"key":"ref_39","unstructured":"Bitnami (2020, May 30). Apache Helm Chart. Available online: https:\/\/github.com\/bitnami\/charts\/tree\/master\/bitnami\/\/apache."},{"key":"ref_40","unstructured":"WeaveWorks (2020, May 27). CloudWatch Logging. Available online: https:\/\/eksctl.io\/usage\/cloudwatch-cluster-logging\/."},{"key":"ref_41","unstructured":"Kops Authors (2020, May 30). High Availability (HA). Available online: https:\/\/github.com\/kubernetes\/kops\/blob\/v1.16.2\/docs\/operations\/high_availability.md."},{"key":"ref_42","unstructured":"Susmel, A. (2020, May 29). Create a High-Availability Kubernetes Cluster on AWS with Kops. Available online: https:\/\/www.poeticoding.com\/create-a-high-availability-kubernetes-cluster-on-aws-with-kops\/."},{"key":"ref_43","unstructured":"Amazon (2020, May 25). VPCs and Subnets. Available online: https:\/\/docs.aws.amazon.com\/vpc\/latest\/userguide\/\/VPC_Subnets.html."},{"key":"ref_44","unstructured":"Kops Authors (2020, June 02). Description of Keys in Config and Cluster.spec. Available online: https:\/\/github.com\/kubernetes\/kops\/blob\/v1.16.2\/docs\/cluster_spec.md."},{"key":"ref_45","unstructured":"Amazon (2020, May 25). Linux Bastion Hosts on the AWS Cloud. Available online: https:\/\/docs.aws.amazon.com\/quickstart\/latest\/linux-bastion\/overview.html."},{"key":"ref_46","unstructured":"Amazon (2020, May 18). Amazon EKS Kubernetes Pricing. Available online: https:\/\/aws.amazon.com\/eks\/pricing\/."},{"key":"ref_47","unstructured":"Amazon (2020, May 18). What is Amazon EKS?. Available online: https:\/\/docs.aws.amazon.com\/eks\/latest\/userguide\/what-is-eks.html."},{"key":"ref_48","unstructured":"Amazon (2020, May 19). Amazon EKS Clusters. Available online: https:\/\/docs.aws.amazon.com\/eks\/latest\/userguide\/clusters.html."},{"key":"ref_49","unstructured":"Kops Authors (2020, May 18). Kops Project Page on Github.com. Available online: https:\/\/github.com\/kubernetes\/kops."},{"key":"ref_50","unstructured":"Kops Authors (2020, May 18). Installing. Available online: https:\/\/kops.sigs.k8s.io\/getting_started\/install\/."},{"key":"ref_51","unstructured":"Kops Authors (2020, May 20). Getting Started with kops on AWS. Available online: https:\/\/kops.sigs.k8s.io\/getting_started\/aws\/."},{"key":"ref_52","unstructured":"Kops Authors (2020, May 20). Kubernetes Addons and Addon Manager. Available online: https:\/\/github.com\/kubernetes\/kops\/blob\/master\/docs\/operations\/addons.md."},{"key":"ref_53","unstructured":"Kubernetes Community (2020, June 03). Troubleshoot Applications. Available online: https:\/\/kubernetes.io\/docs\/tasks\/debug-application-cluster\/debug-application\/."},{"key":"ref_54","unstructured":"Kubernetes Community (2020, April 10). Using Minikube to Create a Cluster. Available online: https:\/\/kubernetes.io\/docs\/tutorials\/kubernetes-basics\/create-cluster\/cluster-intro\/."},{"key":"ref_55","unstructured":"Google (2020, June 06). Troubleshooting. Available online: https:\/\/cloud.google.com\/kubernetes-engine\/docs\/troubleshooting."},{"key":"ref_56","unstructured":"Kubernetes Community (2020, June 06). Debug Clusters. Available online: https:\/\/kubernetes.io\/docs\/tasks\/debug-application-cluster\/debug-cluster\/."},{"key":"ref_57","unstructured":"Amazon (2020, June 06). Amazon EKS Troubleshooting. Available online: https:\/\/docs.aws.amazon.com\/eks\/latest\/userguide\/troubleshooting.html."},{"key":"ref_58","unstructured":"WeaveWorks (2020, June 06). Troubleshooting. Available online: https:\/\/eksctl.io\/usage\/troubleshooting\/."},{"key":"ref_59","unstructured":"Kubernetes Community (2020, June 06). Troubleshoot Clusters. Available online: https:\/\/kubernetes.io\/docs\/tasks\/debug-application-cluster\/troubleshooting\/."},{"key":"ref_60","unstructured":"Liran Polak (2020, June 04). EKS Done Right\u2014From Control Plane to Worker Nodes. Available online: https:\/\/spot.io\/blog\/eks-done-right-from-control-plane-to-worker-nodes\/."},{"key":"ref_61","unstructured":"Zhang, H. (2020, June 04). Learning Kubernetes on EKS by Doing Part 1\u2014Setting Up EKS. Available online: https:\/\/medium.com\/faun\/learning-kubernetes-by-doing-part-1-setting-up-eks-in-aws-50dcf7a76247."},{"key":"ref_62","unstructured":"WeaveWorks (2020, May 24). VPC Networking. Available online: https:\/\/eksctl.io\/usage\/vpc-networking\/."},{"key":"ref_63","unstructured":"Amazon (2020, May 22). File Containing Hard Limits Set on EKS, Limiting the Number of Pods Allowed for an EC2 Instance Type. Available online: https:\/\/github.com\/awslabs\/amazon-eks-ami\/blob\/master\/files\/eni-max-pods.txt."},{"key":"ref_64","unstructured":"Kubernetes Community (2020, June 20). Advanced Kubernetes Scheduling. Available online: https:\/\/kubernetes.io\/blog\/2017\/03\/advanced-scheduling-in-kubernetes\/."},{"key":"ref_65","unstructured":"Gruntwork (2020, June 20). Comprehensive Guide to EKSWorker Nodes. Available online: https:\/\/kubernetes.io\/docs\/concepts\/scheduling-eviction\/assign-pod-node\/#per-pod-configurable-eviction-\\behavior-when-there-are-node-problems-alpha-feature."},{"key":"ref_66","unstructured":"Kops Authors (2020, May 20). Kops Golang Package Documentation. Available online: https:\/\/pkg.go.dev\/k8s.io\/kops\/pkg\/apis\/kops?tab=doc#ClusterSpec."},{"key":"ref_67","unstructured":"Github User: Schollii (2020, June 07). Not All Resources Get Tags from CloudLabels in kops 1.13. Available online: https:\/\/github.com\/kubernetes\/kops\/issues\/8792."},{"key":"ref_68","unstructured":"Github User: Rifelpet (2020, June 07). Add CloudLabels Tags to Additional AWS Resources. Available online: https:\/\/github.com\/kubernetes\/kops\/pull\/8903."},{"key":"ref_69","unstructured":"Amazon (2020, June 08). Amazon VPC pricing. Available online: https:\/\/aws.amazon.com\/vpc\/pricing\/."},{"key":"ref_70","unstructured":"Amazon (2020, June 08). Elastic Load Balancing Pricing. Available online: https:\/\/aws.amazon.com\/elasticloadbalancing\/pricing\/."},{"key":"ref_71","unstructured":"Amazon (2020, June 08). AWS CloudFormation Pricing. Available online: https:\/\/aws.amazon.com\/cloudformation\/pricing\/."},{"key":"ref_72","unstructured":"Amazon (2020, May 21). Amazon EC2 Pricing. Available online: https:\/\/aws.amazon.com\/ec2\/pricing\/on-demand\/."},{"key":"ref_73","unstructured":"Amazon (2020, June 08). Amazon S3 Pricing. Available online: https:\/\/aws.amazon.com\/s3\/pricing\/."},{"key":"ref_74","unstructured":"Amazon (2020, June 08). Amazon EBS Pricing. Available online: https:\/\/aws.amazon.com\/ebs\/pricing\/."}],"container-title":["Sensors"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.mdpi.com\/1424-8220\/21\/5\/1910\/pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,10,11]],"date-time":"2025-10-11T05:35:32Z","timestamp":1760160932000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.mdpi.com\/1424-8220\/21\/5\/1910"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,3,9]]},"references-count":74,"journal-issue":{"issue":"5","published-online":{"date-parts":[[2021,3]]}},"alternative-id":["s21051910"],"URL":"https:\/\/doi.org\/10.3390\/s21051910","relation":{},"ISSN":["1424-8220"],"issn-type":[{"value":"1424-8220","type":"electronic"}],"subject":[],"published":{"date-parts":[[2021,3,9]]}}}