Stop Computer Networking
While I was following the Kubernetes The Hard Way on the laptop with Vagrant VMs, I was reminded of the conviction that I had been holding: an application generally should not deal with computer networking. In other words, it should not concern itself with such things as host addresses or ports or HTTP protocols. Instead, it should work above a messaging abstraction provided by message brokers like NATS or Kafka or such.
If the application requires low network latency such as video streaming, then it will need to deal with networking. But for an application that processes JSON messages and operates near the business level, the complexity of dealing with networking is simply unjustified. Ideally, it would only need to know how to connect to a message broker and get all messaging done through it. It should even dispense with DNS. Applications that rely on DNS for service discovery have a tendency of being subtly broken.
Alas, a saner networking abstraction is not a norm, and that means I have to configure network overlay and DNS server, and go through all their platform-specific details, to have a usable Kubernetes cluster.
On a related note, I uploaded the scripts and config files following the Kubernetes The Hard Way to https://github.com/jaese/jaese-kubernetes-the-hard-way