lines of code

Running FaaS on Linux Mint 19.3 with Kubeless

Filed under:

FaaS, the acronym for Function as a Service, is a cloud computing service that allows developers to build, run, and manage applications as functions without having to maintain their own infrastructure. In such an approach, developers can be fully busy with the business logic of their applications.

Most of the major public cloud offers FaaS solutions, such as Amazon's AWS Lambda, Google Cloud Functions, and Microsoft Azure Functions. We strongly recommend using those platforms as they were designed and tested over the past years. 

For those who are interested in an open-source serverless solution that clones what most public cloud providers can do, Kubeless is a good choice. To know more about Kubeless, we recommend going to their website and following their installation instructions based on your operating system.

For this tutorial, we used a machine running Linux Mint 19.3 with python version 3.7. We installed both minikube and kubectl binaries beforehand using tutorials from the Kubernetes webpage. It is important to mention you need a docker container or a virtual machine environment to run Kubernetes (minikube) on Linux.


Then start your minikube installation by:

$ minikube start 


After that, we go to the main part of this tutorial, you need to deploy kubeless on the Kubernetes cluster:

$ export RELEASE=$(curl -s | grep tag_name | cut -d '"' -f 4)

$ kubectl create ns kubeless

$ kubectl create -f$RELEASE/kubeless-$RELEASE.yaml


You can check if pods are running by either look the pods or deployments:

$ kubectl get pods -n kubeless

$ kubectl get deployment -n kubeless


Check if the rules from .yaml file were correctly applied:

$ kubectl get customresourcedefinition


Now, you can create a simple python function with the name to test with:

def hello(event, context):

    return 'Hello World'


To deploy your function simply run the following command:

$ kubeless function deploy hello --runtime python3.7 --from-file --handler test.hello 


Testing your function is easy, simply run the following command:

$ kubeless function call hello 


Or you can use curl:

$ curl -L localhost:8080/api/v1/namespaces/default/services/hello:http-function-port/proxy


Now you’ve got your function running.


If you need to add dependencies, simply append them to the end of the deploy command 

--dependencies requirements.txt


To autoscale your function, you would need to use kubectl instead of Kubeless, due to problems with autoscaling in Kubeless. In the example below, we autoscaled the function hello to a maximum number of 10 pods, and the autoscale would take place after CPU usage reaches 10% on the current node. 

$ kubectl autoscale deployment hello --min=1 --max=10 --cpu-percent=10


Date posted: May 3, 2021

Add new comment

Restricted HTML

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <cpp>, <java>, <php>. The supported tag styles are: <foo>, [foo].
  • Web page addresses and email addresses turn into links automatically.
  • Lines and paragraphs break automatically.

Metal Toad is an Advanced AWS Consulting Partner. Learn more about our AWS Managed Services

Schedule a Free Consultation

Speak with our team to understand how Metal Toad can help you drive innovation, growth, and success.