Consumer NVIDIA Graphics Cards for Kubernetes Workloads

Preface In the guide, I will target utilizing consumer-grade graphics such as the GTX and RTX series of graphic cards from NVIDIA for container workloads on Kubernetes. If you have read through my previous posts , I am migrating the services I used to host on plain old docker-compose to Kubernetes. One such workload was Jellyfin, which was hobbling when using its transcoding feature on the puny Intel Iris Plus 655 integrated graphics. When I bought new hardware for the new cluster, I picked up an NVIDIA T400 to go along with it. Although not squarely consumer-grade, it is very similar to one, as in, there is no support for it in ESXi for GPU virtualization or anything special like that. ...

March 18, 2022 · 6 min · Adyanth Hosavalike

Cloudflare Tunnel Operator: Architecture

Quick Look Repository: Stats: Initial Approach: Ingress Controller I started out with a simple goal in mind that expanded a lot as I proceeded to code it. I wanted to build an Ingress Controller that does just one thing. It should read the annotations from my Ingress Resources, look at the ConfigMap and the target domain and modify the ConfigMap to add the target domain to it. FYI, an Operator is a combination of a Custom Resource and a Controller for it. What I wanted to build was just a Controller for an existing resource: an Ingress. The ConfigMap and the actual cloudflared deployment was to be manually deployed using the official insturctions . ...

January 21, 2022 · 4 min · Adyanth Hosavalike

Building a Kubernetes Operator: Why and How

Motivation The one source of trouble I have with Cloudflare Tunnels is that I cannot have a wildcard or a dynamic way to add and remove services. I needed to SSH into the server, edit the configuration file by hand and restart the service. Not done yet, I needed to copy the configuration changes and make the same on the other redundant server running on a backup ISP link. Still not done, I needed to add an entry on the Cloudflare Dashboard CNAMEing the hostname to the tunnel’s domain. The process was far too much of a pain to do every time I added or removed a service. ...

January 21, 2022 · 5 min · Adyanth Hosavalike

Migration from Compose to Kubernetes

Background If you have read my previous posts, I actively deploy and maintain multiple services for personal use, running from my home, accessible securely from the internet. I use docker-compose to keep all the 40+ services running smoothly. It works fine but is not a perfect way. If one of the containers goes down and becomes unhealthy, I would not know until I tried to access the service, but it was not. While I have a CI/CD pipeline set up with Drone , I cannot use it since there is no good way to deploy docker-compose files. They depend on folder names and other local parameters. If I wanted to scale these services tomorrow, I would have no way to do the same. The docker swarm is not comparable to what I had in mind. ...

January 20, 2022 · 2 min · Adyanth Hosavalike

Photon OS: A Perfect base for Docker and Kubernetes

Photon OS is an open-source minimalist Linux operating system from VMware, highly optimized for container workloads. Crazy fast How optimized is it, you ask? The minimal image weighs in at a tiny 470MiB, installs in 20 seconds, uses less than 1GiB of disk space after install, boots in 10 seconds (including the GRUB wait time!), and consumes less than 150MiB RAM after boot. It cannot get better than that (maybe VMware surprises me in the next release!). ...

January 1, 2022 · 3 min · Adyanth Hosavalike