CS计算机代考程序代写 COMPX529-21B: Assignment 1

COMPX529-21B: Assignment 1
Individual Assignment
Submit on Moodle
Deadline: Friday, August 6, 6pm Weight: 15%
Load Testing Kubernetes (K8s)
You will deploy an application to a Kubernetes cluster and observe how different request loads and deployment configurations impact the system.
The included instructions for this assignment make use of a local Kubernetes Cluster installed into a virtual machine managed by Vagrant. If you wish to explore other implementation strategies, you are welcome to do so at your own risk.
Vagrant should be available for use on machines in R Block Labs 1 and 2. If you use computers within these labs, please ensure that you shut down all VM instances before you leave. Run vagrant halt followed by vagrant destroy.
For this assignment, you will create a Kubernetes Cluster within a Vagrant managed VM using the microk8s package.
Vagrant manages virtual machines through configuration within a Vagrantfile, found within the configuration folder that comes with this assignment. Follow the included instruction sheet to create and provision your cluster.
You will then deploy the application using the provided cafe.yaml file. See the tutorial video for this assignment for an explanation of the configuration of the application.
The cloud-native application consists of two deployments, exposed as load balancing services through the metallb load balancer. A load balancer service exposes an external IP address that is mapped to pods within a deployment through an endpoint.
Your task is to perform load testing experiments on the deployed applications to ascertain how deployment configurations react to different load patterns. This can be achieved by generating http requests within Apache JMeter, aimed at the external IP associated with each service. Make use of plugins, such as the Throughput Shaping Timer, to help with this task. You should experiment with different load patterns, as well as deployment resource limits as shown within the tutorial video.
The cluster is created with a Grafana dashboard that visualises resource utilisation of pods in real time.

Deliverables:
A report that documents your methodology and observations, the report should include evidence of the following:
¡ñ An overview of the kubernetes architecture.
¡ñ The JMeter (jmx) scripts you developed for automatic load testing
¡ñ Evidence of testing under different load patterns and resource allocations (eg
square and stepping load patterns.
¡ñ Implementation of horizontal autoscaling based on cpu. (Unlike what the video
suggests, you don¡¯t need to implement autoscaling with other metrics, like
memory, for full marks)
¡ñ Observations regarding how scaling tenants impact one another. You may alter
the available resource pool with resource quotas.
Assignments handed in up to 54 hours late will lose up to 27 out of 100 marks. The late submission penalty is calculated as 0.5 marks per hour and will be accumulated until it reaches 27 marks.
Assignments handed in more than 54 hours after the specified due date and time will receive 0 marks and will not be examined or accepted for submission.
Your report will be assessed on the following criteria:
¡ñ Evidence of successful configuration of your kubernetes cluster, and deployment of the provided applications.
¡ñ Evidence and justification of test development and implementation.
¡ñ Quality of discussion regarding autoscaling and self-adaptive properties of K8s.
Information regarding the kubernetes hpa can be found at:
https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
Syntax for commands using kubectl can be found at:
https://kubernetes.io/docs/reference/kubectl/overview/
Apache JMeter: https://jmeter.apache.org/download_jmeter.cgi
Throughput Shaping Timer:
https://www.blazemeter.com/blog/using-jmeters-throughput-shaping-timer-plugin

¡ªEnd of Assignment 1¡ª