Announcing support for Microsoft Azure in the Kubernetes Cluster Auto Scaling Module

Automatically Integrate Auto Scaling to Azure in Minutes

March 2, 2017

We’re excited to announce Microsoft Azure support for the Kubernetes auto scaling module, an open source system for automating deployment, scaling, and management of containerized applications. This feature, now available on the Kubernetes GitHub repository, provides fully-automated integration with Azure.

Auto scaling is an important feature that enables users to maintain application availability while scaling their Azure capacity up or down as needed to meet spikes in demand. The release marks a step-forward in our commitment to support integration and production-ready modules in the cloud.

Automatically Integrate Auto Scaling to Azure in Minutes

Until now, auto-scaling has only been available in Amazon Web Services (AWS) and Google Cloud environments. This release provides now the same support for Microsoft Azure. The acceptance of this patch to the Kubernetes GitHub repository marks EastBanc Technologies’ first contribution to the Kubernetes codebase open source project.

Auto Scale with Ease

As a software development firm with extensive experience in deploying Kubernetes, we have seen a surge in demand for this capability from our clients. With this release, we’ve facilitated the deployment process of Kubernetes on Azure platform. Users don’t need to make an investment in costly developers to take advantage of this solution. We’ve made it easy. Just a few clicks and you can get it up and running – the solution takes care of the integration automatically. The feature will be available as part of Kubernetes soon, but can be experienced today.

How it Works

The auto scaler module automatically adjusts the size of the Kubernetes cluster under specific conditions and provides the ability to both scale-up and scale-down operations. Scaling-up occurs when a specific pod lacks the resources (CPU or RAM) to run in the cluster. While scaling-down occurs when certain nodes in the cluster are underutilized for a prolonged period of time, these nodes are deleted and their pods placed on existing nodes instead. Full documentation on the cluster auto scaler is available on GitHub.

Set-Up Instructions

To get started you’ll need to set-up a scalable Kubernetes cluster using Azure Virtual Machine Scale Sets for node groups. Currently, Kubernetes setup in Azure VMSS is only supported by kube-up.sh, which is included in Kubernetes distribution. You may encounter certain Azure limitations issues with Kubernetes in such a set-up due to limitations with Azure, read more here and here. While Azure support is currently limited, the Kubernetes team is actively working on improving it, and you can still test Azure Auto-Scaler with the latest version of Kubernetes. You may notice that the auto-scaler image used in the manifest, which includes the patch, is our build. This will not necessarily be the case after the next official auto-scaler release.

 

Below is an example deployment file for Kubernetes: 

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: cluster-autoscaler
  namespace: kube-system
  labels:
    app: cluster-autoscaler
spec:
  replicas: 1
  selector:
    matchLabels:
      app: cluster-autoscaler
  template:
    metadata:
      labels:
        app: cluster-autoscaler
    spec:
      containers:
        - image: kublr/cluster-autoscaler:0.5.0-alpha1
          name: cluster-autoscaler
          resources:
            limits:
              cpu: 100m
              memory: 300Mi
            requests:
              cpu: 100m
              memory: 300Mi
          env:
          - name: ARM_SUBSCRIPTION_ID
            value: <subscription id>
          - name: ARM_RESOURCE_GROUP
            value: <resource group>
          - name: ARM_TENANT_ID
            value: <tenant id>
          - name: ARM_CLIENT_ID
            value: <client id>
          - name: ARM_CLIENT_SECRET
            value: <client secret>
          command:
           - ./cluster-autoscaler
           - --v=4
           - --cloud-provider=azure
           - --skip-nodes-with-local-storage=false
           - --nodes=1:10:<scale-set-name>
          volumeMounts:
            - name: ssl-certs
              mountPath: /etc/ssl/certs/ca-certificates.crt
              readOnly: true
          imagePullPolicy: "Always"
        volumes:
        - name: ssl-certs
          hostPath:
            path: "/etc/ssl/certs/ca-certificates.crt"ol

Check out the module on Kubernetes GitHub repository now and let us know your feedback:  
contact@eastbanctech.com