KubeCon NA 2020 talks to watch, part 1


Pandemic situation forced most of the conferences to go on-line. On the one hand, it's not the same experience as in-person attendance. On the other hand - I can participate in events I wouldn't be able to travel to. Therefore I took part in KubeCon + CloudNativeCon North America 2020 last November. Moving to online format reduced price from $1000+ to just $75, which made it easier to justify 😊. It was a bit unusual to be at work in the morning, then move to couch and stay at the conference past midnight.

The online setup was quite good. There were virtual "booths" one would expect at expo – with demos, links to more materials and exhibitor's crew available for chat. There were additional number of channels on CNCF Slack. I followed the announcement one, sponsors one (heaps of interesting information there!) and some run by specific companies.

During the Conference there were some "meet the maintainer" events and accompanying gatherings. Those mainly had a form of Zoom (the owners of Keybase) video meetings where one could chat with the developers. I liked these!

The main course of conference are talks. There were plenty. Sometimes there were a dozen or so parallel tracks, so I did not have a chance to watch everything. I'm slowly working through backlog of things I missed. The talks itself were pre-recorded, but after the talk there was a live Q&A session with the speaker. Sadly, the Q&A is not available in recordings below. I guess this was one of the exclusive perks for attendees.

Below you'll find part 1 of my selection of most interesting talks. Second part will be coming later, but you can find all descriptions and links to the videos at https://kccncna20.sched.com/.

  • PKI the Wrong Way: Simple TLS Mistakes and Surprising Consequences - Tabitha Sable, Datadog

  • The Quest for the Ultimate Kubernetes Homelab - Dan Garfield, Codefresh

  • Stop Writing Operators - Joe Thompson, HashiCorp

  • Clean Up Your Room! What Does It Mean to Delete Something in K8s - Aaron Alpar, Kasten

  • How to Multiply the Power of Argo Projects By Using Them Together - Hong Wang

  • Stress and Mental Health in Technology - Dr. Jennifer Akullian, Growth Coaching Institute

  • The Open Source Revolution: How Kubernetes is Changing the Games Industry - Dominic Green

  • Admission Control, We Have a Problem - Ryan Jarvinen, Red Hat

  • High Performance KubeVirt in Action - Huamin Chen, Red Hat & Marcin Franczyk, Kubermatic

  • This one is from last year, but interesting: How the Department of Defense Moved to Kubernetes and Istio - Nicolas Chaillan

An observation: as for virtual conference, this one had a hefty carbon footprint! Imagine how many planes were flown to deliver these:

KubeCon NA 2020 swag (t-shirts and a tumbler)

k3s is tiny and cute


After KubeCon I've decided to give k3s a try. And I'm impressed!

K3s is a small distribution of Kubernetes (k8s), Linux container orchestrator system. It's really tiny while being functional. One starts with a single 52MiB binary and after few seconds there's a functional installation with half a dozen of system pods. It's a far cry from OKD and its resource hunger. Of course, compared to OKD, there's much less functionality in k3s, but enough for most cases (including mine).

First, I'm writing now, because only recently cgroupsv2 support was added to k3s. Previously it just didn't work on modern systems, like Fedora.

Second, the etcd database, widely perceived as a mandatory part of k8s, is optional in k3s! By default embedded SQLite is used – enough for simple scenarios. I'm particularly happy for Postgresql support. Yes, you can have your Kubernetes working with pgsql.

But K3s is not a single-node solution only. Adding worker nodes is simple; High-Availability solutions for control-plane looks sound (haven't tried yet, but it's on my TODO).

For networking one can easily encrypt inter-node traffic using WireGuard. It's a matter of single switch for provided flannel network backend. Higher level needs? k3s ships with Traefik (which supports ACME for getting TLS certificates) and klipper-lb.

Unfortunately at the lowest level, networking still depends on iptables. This was horrible choice in the beginning of Kubernetes, already 15 years obsolete when it was selected. With known performance problems: nf-hipac tried to solve the problems when, in 2002? Huawei replaced iptables with Linux IP Virtual Server in 2017 to have k8s scale. But the solution is still not default in upstream Kubernetes.

Anyway, for small cluster k3s with iptables should work fine, but it has a potential to demolish your carefully tuned firewall configuration. So beware. For the positive aspect, go and read klipper-lb entire source code. This is world championship in simplicity and getting things done with existing infrastructure.

Keeping cluster up-to-date can be automated with system-upgrade-controller, which downloads new version and restarts the services. Simple.

k3s is provided by our Rancher friends at SUSE. I strongly recommend giving it some attention (at the moment INSTALL_K3S_COMMIT=fadc5a8057c244df11757cd47cc50cc4a4cf5887 works for me). Besides, I vaguely remember one needs k8s cluster to build some Fedora content. ;)

Unrelated blog summary

This year I've strived to write at least one note per month. Well… I've managed to write 9 notes only. In 2021 I will do better!

Nie chcę dzisiaj spać przy zapalonym świetle


Smarthome uskuteczniam oprogramowaniem openHAB. W wersji 1.8.x, bo w 2.0 zmienił się format konfiguracji, a nie chciało mi się jeszcze robić migracji. Linia 1.8 ostatnie wydanie miała w 2016 roku.

Jako system operacyjny na domowym serwerze używam Fedory. Dzisiaj zrobiłem aktualizację do wersji 33. W tej wersji w końcu systemową Javę podbito do wersji 11.

Mój openHAB na to:

Launching the openHAB runtime...
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.eclipse.osgi.internal.baseadaptor.BaseStorage (file:/opt/openhab-1.8.3/server/plugins/org.eclipse.osgi_3.8.2.v20130124-1349>
WARNING: Please consider reporting this to the maintainers of org.eclipse.osgi.internal.baseadaptor.BaseStorage
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

Czyli nie wstanę, tak będę leżał. Światła nie zgaszę, okapu nie wyłączę, odświeżacz powietrza w WC zasnął. Internety oczywiście wskazały na niekompatybilność z Java11.

Na całe szczęście w Fedorze jest jeszcze dostępna Java8, którą można podłożyć openhabowi. I znowu działa, mam kolejne parę miesięcy na migrację do nowszej wersji (3.0 za płotem). Ale dług technologiczny nawet w domu czeka, żeby znienacka ugryźć człowieka w tyłek.

Nie ma takiej rzeczy, której nie oprogramujesz w Linuksie


Zbyt rzadko sobie przypominam, jakim jestem szczęściarzem, że wciągnąłem się w ekosystem Linuksowy. Tu wszystko jest możliwe. Nota bene zapoznałem się z Linuksem przypadkiem – kolega, który miał mi przegrać FreeBSD miał problem z… zamountowaniem dyskietki (było to w okolicach roku 1998). Przez brak FreeBSD skierowałem się po next best thing czyli lajnuksa.

Zmieniając trochę temat, mam różne mniej lub bardziej poważne hobby. Za to czasem spotyka mnie czułość od Żony. Np. przyszła mnie przytulić, gdy kolejna osoba zginęła chodząc po Himalajach (hobby niebezpieczne, nie moje), a ja akurat siedziałem w gabinecie z lutownicą (hobby bezpieczne, moje).

Ostatnio zgłębiam zasoby Youtube pod kątem współczesnych komputerów PC, konkretnie ich chłodzenia. Mój serwerek/media center to nie jest maszyna jakoś specjalnie wymagająca, nawet dedykowanej karty graficznej nie ma (gram na Stadii). Ma być cichy i trwały. Obejrzawszy jutuby zrobiłem więc porządek z kablami, poprawiłem obieg powietrza, dołożyłem wiatraczek, dwa, ewentualnie dziesięć.

Generalnie działa, czasami coś zmienię albo przełożę.

Prawdziwa zabawa to sterowanie. Podstawowym parametrem do regulacji jest prędkość obrotów wentylatorków. Przeszedłem już przez kilka opcji: sterowanie przez płytę główną, związanie prędkości z temperaturą dysków/NVMe, czy też uzależnienie od temperatury procesora (coretemp). Dorobiłem się po drodze przyjemnych wykresów. Nawet przypomniałem sobie trochę Teorii Sterowania ze studiów. Ostatnio doszedłem do wniosku, że dobrze by było reagować na podstawie temperatury cieczy chłodzącej, bo duża pojemność cieplna wody dobrze uśrednia przebiegi… ale nie mam zestawu mierzącego ten parametr.

Za to mam od paru lat czujniki temperatury typu 1wire. Wziąłem jeden z nich i przykleiłem do radiatora. Do tego napisałem paręnaście linijek w Pythonie. Osiągnąłem efekt wow.

% systemctl show -p StatusText fancontrol-onewire
StatusText=Ambient: 26.1°C, water: 31.7°C, CPU: 39.0°C → PWM: 64

Na innych platformach byłbym zapewne ograniczony do własnościowego oprogramowania. Może byłoby w stanie odczytać temperaturę procesora, może czujniki na płycie głównej i w modułach RAM, ale na pewno nie jakieś zupełnie z kosmosu rzeczy na 1wire.

Jakby dobrze poszło, to we własnościowym sofcie może mógłbym wyrysować z grubsza krzywe zależności między temperaturą a prędkością wiatraczków. A mi się uwidziło zrobić zależność po sinusoidzie – z początku przyrost prędkości większy, potem mniejszy. W pythonie: ależ proszę bardzo. Co więcej, w obliczeniach biorę pod uwagę temperaturę powietrza wokół serwera. Z obserwacji mi wyszło, że w typowej sytuacji radiator jest cieplejszy od otoczenia o ok. 4,5°C. Jak to wyrazić w GUI? Praktycznie nie da rady.

Linux daje mi (mi, specjaliście IT; nie każdemu) mnóstwo swobody. Praktycznie co wymyślę mogę osiągnąć kilkoma prostymi integracjami. Jestem, kurcze, szczęściarzem, że trafiłem na tę platformę.