TL;DR: Kubernetes Deconstructed - AWS Edition’s original video is linked at the bottom. I had a great time working through all this!

Over the past few years, I’ve had the opportunity to build some interesting production systems that are hosted atop the Kubernetes platform. Kubernetes prescribes a standard approach to host applications of various sizes and shapes, and many people end up following those directions to the exact letter. As an organisation grows larger, various demands start creeping in, and the vanilla/upstream approach of using these tools starts becoming less attractive. I joined Slack’s engineering team at a time where the crew had a good handle on their product, scaling, compliance, security and other such requirements, and hence, were pretty clear that they would probably never run Kubernetes in it’s vanilla avatar. A side effect of this was that I became fairly proficient with Slack engineering’s set of sane choices for Kubernetes as both, an operator running services that cater to large groups of users, as well as a developer who consumed and contributed to the constellation of tools that was necessary to support this version of Kubernetes.

The knowledge gap with the outside world would creep up every once in a while, especially when I lurked in a couple of tech communities that used Kubernetes in a manner closer to the officially prescribed manner. Although I would read up blog posts or watch videos by various people about their Kubernetes systems, I felt like I was seeing only parts of the puzzle, and not understanding the full picture. To force myself to learn more, I sketched out a session proposal/idea that would look at the various modules/components that underpin Kubernetes, and how they all interact with each other. I presented this idea to a friend, who was very interested in hearing this session, but it languished on the backburner. One day, while watching some KubeCon videos, I came across a session title that piqued my interest - Kubernetes Deconstructed. The speaker started off with a quick overview of containers and pods, and then dove straight into how the major components of Kubernetes interact with each other. Starting from the API Server, Scheduler and Controller Manager, the session walked through how pods are scheduled on nodes with Kubelet, and then ventured into the networking territory with Kube proxy and how it managed iptables. This was exactly what I’d been looking for, and I really enjoyed the brief, 30 minute talk by Carson Anderson. It presents a comprehensive and cohesive picture, which is the full puzzle, but without the excruciating detail that projects like Kubernetes the hard way would have made me work through. I ended up recommending that session to a few other friends and colleagues, and watched the longer, 90 minute session that Carson presented at another venue/event.

Fast forward to August 2021, and various AWS User Groups from India, Nepal, Sri Lanka and Bangaldesh announced an upcoming, online event on the lines of their annual AWS Community Day events. I’ve previously participated in these events for a lightning/short talk about how we used Lambda to perform tasks that are traditionally considered operational in nature. I enjoyed the atmosphere, and the content in the other sessions was very interesting and engaging. I submitted a couple of proposals the last time around, but, in hindsight, they weren’t as well fleshed out as I would have liked them to. The outcome was predictable, the proposals did not make the cut for the CfP. This year, I considered revisiting/detailing out those sessions again, and then I realised that I had my notes from the Kube components idea, as well as a well designed structure with the Kubernetes Deconstructed session. I really wanted to put two and two together, but I also did not want to just reap benefits from another person’s hard work. Last year’s CfP also made me realise that I probably wanted to tailor the content for the event, which would make the session proposal more attractive to the CfP panel (otherwise, this could be a session I could have presented at another event).

After a bit of searching, I found the original author/speaker on Twitter, as well as the presentation source on Github. I DMed Carson, and he was very supportive of me revisiting that session at a different forum. A little less apprehensive, I went ahead and submitted the proposal, linking to the original session and specifying which parts would be customised for the AWS focussed audience. I was super relieved to see the option to present a recorded session, because internet connections have a notorious habit of being disruptive at the most inopportune of times. A few weeks later, the organisers came through and confirmed that the session proposal had been accepted! I was excited, and also nervous. I usually have a very minimal style for presenting content, with each slide having 3-4 bullet points, and each bullet point itself being short, maxing out at 10 words. This makes for a very engaging session as people tend to stay focussed on the story being told, not reading each and every word on the slide. This was the first time (in a long time) that I was attempting to present a very diametrically opposite format that compresses 60+ slides in the short span of 30 minutes, along with objects flying around with cheesy animations. This was a challenge, and I reached out to the organisers to confirm whether a recording would still be a valid choice. Thankfully, they confirmed that this was fine, and I should hand over the recording a few days before the actual event, in case the team needed to make edits/corrections.

What followed was a few late nights of taking Carson’s session, adapting it to the (very beautiful!) slide template provided by the AWS Community Day organisers, and swearing at why I can’t do basic things in Google Slides that were so much easier with tools like Photoshop and Corel Draw more than 10 years ago. Once the presentation was ready, I took a deep breath, and tackled the Real Problem - I’ve done plenty of live virtual sessions in an office/team setting, but I have never really presented on video to a large group of people. After jumping through some hoops, and learning some basics of video, I finally had a working OBS setup that picked up a video stream from my phone camera, and we were off the blocks. One of the best tips I found when preparing for this was to record the session in small chunks of a few minutes, especially for topics/slides that were logically grouped, and then stitch them all together. I’ve attended a few audio recording sessions in a studio, but never attended a video recording, so this was a bit of a light bulb moment for me. I’m sure this is super obvious to many of y’all though! Eventually, after a few takes and stitching together the files, I had the final session ready and I sent it over to the event organisers! :phew:

The day of the event dawned, I was prepared to watch the chat and answer any questions folks would ask live. The day before, we’d done a quick sound/video check, and the team’s efforts to get everything just right were palpable. Unfortunately, Mr Murphy decided to make his presence felt on the day of the event, and there was a significant amount of lag between audio and video streams for all the sessions that were pre-recorded. Given the relatively short time window of the overall session (under 30 minutes), and the fact that the video would periodically catch up with the audio, we took a call to not cut to live, and have me present the rest of the session synchronously. Turns out, that the audience did like the content, especially when the A/V sync was correct, and folks did find the session pretty enlightening!

I’d like to apologise for the bad experience some folks had with the video stream that day, and hope that y’all have an opportunity to catch up with any bits lost by watching the original recording, as well as viewing the slides here!

Slides

The slides are uploaded on Google Drive, and can be viewed here. The original content by Carson is available here, and both these are available under the MIT License for anyone else to remix or reuse in the future!

Video

View the video here