Baremetal Kubernetes Cluster - Ingress Controller

This is part of a series on creating a Kubernetes cluster. In the previous post, we learned some Kubernetes networking concepts and added a Load Balancer to the cluster. In this post, we’ll dive deeper into networking by creating an Ingress Controller. Before we start creating things, let’s take a moment to think about our networking situation and limitations in a homelab. Since our cluster will be running in a homelab, we likely only have a single public IP address available....

November 7, 2019 · Joshua Marble

Baremetal Kubernetes Cluster - Networking and Load Balancer

This is part of a series on creating a Kubernetes cluster. In the previous post, we provisioned the persistent storage for our applications. In this post, we’ll start to build out the networking stack for our cluster. Before we get deep into the various networking objects necessary for a fully-functioning cluster, I want to give a high-level overview of networking in k8s. I recommend that you first get familiar with all the pieces involved, then do some more in-depth reading on each aspect to better understand what’s happening behind the scenes....

November 7, 2019 · Joshua Marble

Baremetal Kubernetes Cluster - Persistent Volumes

This is part of a series on creating a Kubernetes cluster. In the previous post, we installed Helm to make deployments easier. In this post, we’ll start configuring our new Kubernetes (k8s) cluster by setting up persistent storage. In any containerized system, there is likely the need for data to persistent after the container is gone. Commonly, that data is some configuration for the application inside the container, but it may also be files that are used by the container....

November 7, 2019 · Joshua Marble

Baremetal Kubernetes Cluster - Helm

This is part of a series on creating a Kubernetes cluster. In the previous post, we finalized the cluster by joining the worker nodes. In this post, we’ll add one additional tool to our master node to help with Kubernetes (k8s) deployments. Helm is a package manager for k8s, which makes it easy to deploy applications using a package, called a [chart](https://helm.sh/docs/developing_charts/), that someone else has built. To install Helm, use the command below....

November 7, 2019 · Joshua Marble

Baremetal Kubernetes Cluster - Joining Worker Nodes

This is part of a series on creating a Kubernetes cluster. In the previous post, we created the Kubernetes cluster and master node. In this post, we’ll be joining the worker nodes to the Kubernetes (k8s) cluster. Worker nodes are intended to be configured by the master node, therefore there isn’t any configuration necessary on the node itself. As long as the same version of Kubernetes and Docker are installed on the server, it should work in the cluster....

November 7, 2019 · Joshua Marble

Baremetal Kubernetes Cluster - Creating the Cluster

This is part of a series on creating a Kubernetes cluster. In the previous post, we installed Kubernetes on the servers. In this post, we’ll be creating the Kubernetes (k8s) cluster and configuring the master node. To get started, we first need to create the cluster. There are two parts to creating the cluster. Initialize the cluster Create the pod network Login to the master node and execute the following command to create the cluster using this server as the master node and an internal pod network of 10....

November 6, 2019 · Joshua Marble

Baremetal Kubernetes Cluster - Installing Kubernetes

This is part of a series on creating a Kubernetes cluster. In the previous post, we installed Debian 10 onto four virtual machines that will be used in the cluster. In this post, we will be installing Kubernetes (k8s) on them. Now that the machines are ready, it’s time to install k8s and docker. This will be the same process for the master node and worker nodes. The official steps mainly involve setting up the necessary package sources then installing the packages and dependencies....

November 6, 2019 · Joshua Marble

Baremetal Kubernetes Cluster - Creating the Virtual Machines

This is part of a series on creating a Kubernetes cluster. In this post, we’ll be creating the virtual machines and preparing them to install Kubernetes (k8s). For my cluster, we’ll be using four Debian 10 “buster” servers. These will be hosted on a VMWare ESXi physical server. One server will be the k8s master node, and the other three will be worker nodes. I had success with Fedora 29 in my previous cluster, and I’ll try to highlight any different steps along the way in case you prefer Fedora....

November 6, 2019 · Joshua Marble

Baremetal Kubernetes Cluster - Start to Finish

When I first setup my Kubernetes (k8s) cluster in my homelab, it was a big undertaking and an arduous learning experience. It’s been running solidly for months, but I recently tried upgrading a bit too bleeding edge, and it stopped working. After some unsuccessful attempts at recovery, I decided to rebuild the entire cluster. Since I will be setting up a new cluster, I thought I would write this blog series to document each step so that anyone interested in learning k8s will be able to get a working environment....

November 6, 2019 · Joshua Marble

The Future of .NET and Moving Legacy Applications to the Cloud

The release of .NET Core 3 raises the question of whether there are any impacts to the future direction of legacy .NET Framework applications that may be interested in moving to .NET Core in the future. The short answer is not really, but Core 3 is a stepping stone to getting the full .NET stack into a position where it could affect your ability to adopt the newer framework capabilities....

September 30, 2019 · Joshua Marble