Azure Custom Vision AI : From training to deploying the container export on the Azure Kuberenetes Service (AKS)

Introduction

Todays post will be the backend tour of “Frietjes-of-Niet” (translated from Dutch : “French-Frites-or-Not?”). A big part of the mission of Azure is about democratizing technology so it becomes accessible to organizations in order for them to achieve more. AI (Artificial Intelligence) is a key part of that vision.

 

End-to-End Flow

What will be the flow for today?

  • We’ll train a model to recognize fries
  • Next we’ll be exporting that model to be used as a container
  • Afterwards we’ll build that container
  • To end with deploying (and testing) it onto AKS

Sound cool? Let’s get to it..

Continue reading “Azure Custom Vision AI : From training to deploying the container export on the Azure Kuberenetes Service (AKS)”

Taking a glance at Rancher’s ability to manage the Azure Kubernetes Service (AKS)

Introduction

Pfew, it’s odd to admit that it has been a while since I’ve posted about Rancher. Though today is as good a day as any to pick up that thread… So today we’ll go through give or take the same objective as in the past, where we’ll notice that the integration has improved significantly with the arrival of AKS! Let’s get today’s post underway and deploy AKS from our Rancher control plane.

Preparation

Before the below started, I already had the following things ready ;

Continue reading “Taking a glance at Rancher’s ability to manage the Azure Kubernetes Service (AKS)”

Replatforming Azure Functions into an Azure Functions Container

Introduction

A while ago I talked about  “Faas/Serverless” in relation to vendor lock-in. Today we’ll be continuing in that road, where we’ll be doing a small proof-of-concept (PoC). In this PoC, we’ll be replatforming existing Azure Functions code into an Azure Functions container!

 

Things to know

Since Azure Functions 2.0 (in preview at the time of writing this post), you are able to leverage containers. Though be aware that there are several known issues. Do check them out first before embarking on your journey!

 

Testdriving 2.0

So first, we’ll start off with testing the Azure Functions Core Tools!  If you’re looking to follow this guide, be sure to have the Azure Functions Core Tools installed, which also depends on .NET Core 2.0 and Nodejs. Once you have those installed, do a “func –help”, and you’ll see what capabilities are at hand…

Continue reading “Replatforming Azure Functions into an Azure Functions Container”

A first glance at the preview AKS (Azure Kubernetes Service)

Introduction

Today the new “AKS” (Azure Kubernetes Services) was launched in preview. This is a managed container service. So where ACS used to rely on IaaS and used a set of best practices to deploy the cluster. AKS will go a step further, where it’ll managed the master nodes & provide upgrade tracks.

 

Deploying

Let’s start with deploying an AKS cluster… Here we can select the k8s (kubernetes) version too.

Continue reading “A first glance at the preview AKS (Azure Kubernetes Service)”

Issue : Failed to pull image : rpc error: code = 2 desc = unknown blob

Introduction

When you are deploying an image, which is hosted on a private registry, to a kubernetes (k8s) cluster with windows nodes… Then you might get the following error ;

Failed to pull image “kvaes.azurecr.io/kvaes2017:v1“: rpc error: code = 2 desc = unknown blob
Error syncing pod, skipping: failed to “StartContainer” for “private-reg-container” with ErrImagePull: “rpc error: code = 2 desc = unknown blob”

 

Context

So what did my setup look like?

  • Orchestrator : Kubernetes for Windows (Azure Container Service)
  • Registry : Private (Azure Container Registry)
  • Image : Windows Nano Based

 

Technical Check

Let’s deploy two pods…

The first I’ll deploy via yaml, which is basically the example from the kubernetes docs on pulling an image from a private repo

Now the second one is an adaptation of the example flow from the Azure Container Service documentation ;

Now let’s see how that one went…

The first one failed, and the second one passed! What was the difference?

 "nodeSelector": {
    "beta.kubernetes.io/os": "windows"
    }

Apparently this one forces the switch to “windows container mode” (or something like that…). As it seems very similar to the following thread

 

TL;DR

When deploying windows containers to a kubernetes cluster. be sure to the set the “nodeSelector” or you might end up with errors on pulling the image.