Skip to content

Latest commit

 

History

History
56 lines (35 loc) · 2.68 KB

README.md

File metadata and controls

56 lines (35 loc) · 2.68 KB

KAQoS: Kubernetes autoscaler QoS-aware

About

Background

The primary purpose of this work is to present a cloud architecture based on containers aimed at guaranteeing a defined level of QoS regarding cost, resource usage, and service level agreement. The main contribution of this proposal is its dynamic autoscaling capabilities of adjustingsystem resources to the current workload while ensuring QoS constraints.

About

The repository contains all code related to deploy the implementation and the tests.

  • images: Contains all the services used in the implementation, grouped so that building them is easier.
  • kubernetes: .yaml files to deploy the services in a Kubernetes cluster.
  • obsolete: Files that are no longer needed, but are included because they may clarify some aspects of the implementation.
  • test-routines: Files that were submitted as routines to test the implementation's performance.
  • utils: Scripts that may be useful to manage the cluster.
  • automation: Ansible playbooks to easily deploy a new cluster.

Using the utils

Start by loading the aliases from the base directory of the repository:

$ . ./utils/aliases.sh

This initialises several variables that are useful for the rest of the scripts. Afterwards, you can run:

  • buildimages.sh [registry search]

    Builds the images in the image folder (IMAGE_DIR). If registry is specified, it pushes the images there and cleans with prune. If search is specified, it builds image with directory name search, if it exists.

  • buildredeploy.sh deployment_name [image_name]

    If image_name is not provided, it builds the image with directory name deployment_name, then deletes and creates the Kubernetes Deployment associated with it. Otherwise, the image build is specified by image_name, but the deployment reset is the same as in the other case. This is to allow redeployment of Deployments with more than one container in them.

  • deployall.sh

    Creates all architecture-related Services and Deployments in the Kubernetes cluster.

  • kubepod.sh {logs|exec} {pod_name} [logs or exec args]

    Runs kubectl logs or kubectl exec given a pod_name that does not need to be the complete name of a pod. It is necessary for the pod_name to identify a pod unequivocally.

  • redep.sh {deployment_name}

    Deletes and creates the deployment with name deployment_name.