I decided to improve the visibility that Kubernetes has into my node.js backend by implementing liveness probes. As we discussed previously, Kubernetes has two different types of health checks: Readiness probe – makes sure the container is ready to respond to user requests and participate in the load balancer. If it fails, it is removed. […]
When you package up your application in a container image, you need somewhere to store it. That is the purpose of the container registry. It is like an app store for your container images. A registry is organized into repositories, where a repository holds all the versions of a specific image. You might have separate […]
Just heard that there is a preview feature that lets you control failover of your RA-GRS storage account. From the docs.microsoft.com article: Azure Storage supports account failover (preview) for geo-redundant storage accounts. With account failover, you can initiate the failover process for your storage account if the primary endpoint becomes unavailable. The failover updates the […]
Here is a great video I found that gives an overview of how to best utilize, secure and manage your Kubernetes cluster.
A common question with AKS is: “how many clusters do I need?” There are two patterns to consider: Physical Isolation With this pattern, you use different clusters based on environment like dev, test, staging and production. Or you can break out the clusters by team or project. In this manner, you are “sandboxing” the applications […]
Here is my highlevel framework for working with customers to migrate their application to Azure. It is work in progress, but I wanted to get version 1.0 out there so 2.0 can happen one day! Before we begin, here is our fictitious three-tiered app: UI – ASP.NET Web Forms, stateful API – .NET, java, monolith […]
I’m learning about how to deal with storage for your containers. There are a few options: emptyDir – is scoped to the Pod and lifespan of the Pod. It seems to take local storage from the host and presents it to the pod. For example, if you had two containers running in a pod, they […]
Brendan Burns, co-founder of Kubernetes and Distinguished Engineer in Azure, put together a series of whiteboard sessions on Kubernetes and he does a great job explaining the basic concepts. You can check out my playlist of Kuberenetes videos here.
Kubernetes has a few health checks that it performs to ensure your containers are healthy and running: Liveness Probe – makes sure the application is running properly. This is done by the developers exposing a health check API that you tell Kubernetes to check on a periodic basis. If it fails, Kubernetes will restart the […]
I’m diving deep into pods today! First, let’s make sure our terminology is straight. Here is the hierarchy of “objects” in Kubernetes: Cluster Nodes Pod Container Image In reverse, I would say: “I will create an image of my application and use it to create a container. The container will run in my pod, which […]
The Azure portal allows you to see a number of key metrics, setup alerts and view logs from your AKS cluster…which means you don’t have to rely on running kubectl commands to see how your cluster is performing. Below, you can see cluster health, CPU/memory utilization, node and pod count. You can dive into the […]
Wow! I learned that you can simply deploy a container to kubernetes by running the following command (there are two examples in the screenshot below): This is instead of creating a deployment.yaml file and running kubectl apply -f deployment.yaml – like I’ve always done. Very similar to the docker run command. Nice.
I spent some time on debugging/troubleshooting commands today. Reading and streaming container logs Exec into the shell of a container Copy files to/from the container The help command is well organized!
Two years ago, dreaddontdie was based on .net, running on Windows and designed for Internet Explorer. Today, dreaddontdie.com is quite the opposite…it runs on Linux! 😳 Last month, the redesign of dreaddontdie (version 8.x) turned 2 years old. Here is what looks like now from the browser to the backend: My code editior is VS […]
Today, I played around with some kubectl commands and learned a few things! How to query Kube-system by specifying the namespace flag Use contexts to manage “profiles” for kubectl Tweak the output to wide or json or filter the results using jsonpath Edit resources like pods, deployments, etc RIGHT in kubectl by using kubectl edit […]
Today I learned about how to get health and detailed information about your node(s). It spits out all of this great info on the node version, etc but also these health conditions you can check for. It was also interesting to see the clear breakdown of the namespaces and everything that runs in kube-system. Other things […]
I’m going to learn and/or do something with Azure Kubernetes Service (AKS) every day….and blog about it. I think it will be good motivation to ensure I’m working with it every single day and not getting lost in meetings and other things. Key components to this: Daily blogging Walking through my Kubernetes Up and Running […]
Through my work at Microsoft, I recently became interested in a technology paradigm called containers and then I fell in love with a particular implementation of it called Kubernetes. This new found love was very intriguing, but there is a lot about it that I don’t yet know. Over the past 18 years, I’ve used […]
While it’s great to browse for the music you want, sometimes you want some suggestions – and that is why i have the various album covers on the music page. However, since redesigning the site, I hadn’t wired it up to actually show you the album… Well, that has changed! Now, you can click any […]
it was about a year ago that my friend, Shawn, sugggested that i have a dark theme for my site…and i remember saying, “what?!?!” Well, i reluctantly made an optional dark theme for the site – but I didn’t use it. then, over the past year, I started seeing dark mode in more and more […]
today i turn 38! and dreaddontdie turns 18! i thought I’d spend most of the day working on the site and being creative. the big thing i plan to work on today is adding full album streaming – instead of the song by song that is there today. Update: it’s done! for those who don’t […]
With the holiday break coming up, I’m looking excited about having some time to work on the site. I have plans to update some things behind the scenes (moving the site to containers running on kubernetes) and add/improve features for photos and music. Stay tuned!
I’ve started working on redesigning and rebuilding dreaddontdie music… my music site that I built years ago to stream music from my personal 90Gb library. It will take some time to bring back all the features that I had before, but I’m looking forward to making the new one better than before.
The homepage for dreaddontdie.com was designed to be very visual and give you a quick snapshot of my photo collection. However, it lacked the ability to look at a single photo in a larger view if you found one that was interesting. Well, that has changed! Click on any photo on the homepage and it […]
Like, real news…on the site now. I’m pulling RSS feeds from google news, the verge, arstechnica and other places to new “news” section here on dreaddontdie.com.
Notice anything new?! Probably not…but now the entire site is running on Node.js! Along with the new Node.js backend, I revamped the development and deployment processes: Using Visual Studio Code for Mac as my editor (instead of Visual Studio Community Edition on Windows) Bitbucket.org for code repository (instead of keeping it local on my Windows […]
dreaddontdie has always been an website written on .NET and hosted on Windows. That is about to change. I’m moving the site over to node.js. I want to do this for a few reasons: I use a Mac on a daily basis and I run a Windows VM for .NET development. I want a native […]
In addition to displaying random images from a collection on the homepage, it now changes a random photo on the page every 10 seconds to another image from the collection. First, I created the timer and it will call the changeImg function every 10 seconds (10000 milliseconds): var myTimer = setInterval(changeImg, 10000); Then I get […]