Skip to content
@awsonbudget

k8sonbudget

Now I think about it, it is more like K8S on budget...

AWS K8S on Budget

COMP 598 – Topics in Computer Science 01 - McGill University

Winter 2023 Topic: Cloud Computing

amazing

Overview

KOB is a simple Kubernetes-like cloud management system. There are 4 main components in this system.

  • manager: This is a centralized, fault-tolerant cloud manager, that manages all the clusters in the system. All the cloud management request will be sent to the manager, and the manager will take care of the rest. Some example requests can be: to spin up a new server on a cluster, to enable dynamic scaling on a pod, to launch a job, and much more. Since this is the single point of failure in the entire system, it is made fault tolerant with etcd, allowing us to quickly recover in case of failure without losing any state information.
  • cluster: Each virtual machine should have one cluster server running. The cluster server is the one that receives request from the centralized manager, and perform the requested action on the machine. A cluster can have multiple pods inside of it, and each pod can host a different application. Inside of each pod, there can be multiple instances of the same application running, and the load balander will balance the load across all the instances. If you enable dynamic scaling on a pod, then the pod will automatically add/remove instance based on resource usage.
  • dashboard: A Web dashboard that provides a view of all the resources in the cloud system.
  • cli: The CLI is used to issue commands to the cloud manager via a RESTful API.

Setup

To get started, we first need to install a couple of dependencies.

  • docker. In KOB, all servers are packaged as Docker containers.
  • etcd. A distributed KV store that enables fault tolerance for our cloud manager.
  • haproxy. Our load balancer to balance traffics to all server nodes in each cluster.
  • nginx. We use it for demo purpose, it does not have to be Nginx.
  • python. To run all the clusters and the cloud manager.
  • poetry. To manage Python environment and dependencies.
  • go. To build the CLI toolset.
  • nodejs. To host the Web dashboard.

Pinned

  1. cluster cluster Public

    The cluster component of the cloud. It is like a kubelet agent in K8S. Can be scaled horizontally.

    Python 1

  2. manager manager Public

    The centralized manager that manages over all the clusters. It is like the controller manager in K8S.

    Python

  3. dashboard dashboard Public

    The cloud dashboard for visualizing cluster resources, job status and incoming traffics, etc.

    TypeScript 1 1

  4. cli cli Public

    The CLI client for interacting with the resource management service.

    Go 1

Repositories

Showing 7 of 7 repositories
  • .github Public
    0 0 0 0 Updated May 7, 2023
  • manager Public

    The centralized manager that manages over all the clusters. It is like the controller manager in K8S.

    Python 0 0 2 0 Updated Apr 26, 2023
  • report Public
    Python 0 0 0 0 Updated Apr 26, 2023
  • dashboard Public

    The cloud dashboard for visualizing cluster resources, job status and incoming traffics, etc.

    TypeScript 1 1 2 0 Updated Apr 26, 2023
  • cluster Public

    The cluster component of the cloud. It is like a kubelet agent in K8S. Can be scaled horizontally.

    Python 1 0 4 0 Updated Apr 26, 2023
  • cli Public

    The CLI client for interacting with the resource management service.

    Go 1 0 3 0 Updated Apr 26, 2023
  • config Public

    Stores the Nginx and HAProxy configuration for hosting.

    0 0 0 0 Updated Mar 19, 2023

Top languages

Loading…

Most used topics

Loading…