KubeconNA 2022

Don’t use annotations for a janky API. They aren’t versioned. Instead, add it to the spec when appropriate.

Specs tend to outgrow booleans into mutually exclusive options. The kubernetes API conventions go over this.

Don’t use k8s as a datastore.

  • etcd designed for a small number (<1M) of small values (<1MB) [approximations]
    • device inventory? good(hundreds of devices) bad(millions of edge defices)
    • configmap or secret for arbitrary input (tls certs or yaml manifests)
  • kcp is a promising upcoming project for having a k8s native api but for large-scale data.
  • Don’t take in a single config map, take in an array of configmaps.

There are some slow & Imperiative operations, but you can wrap them in an operator to provide a declarative API on top.

Examples of slow & declarative things

  • cluster installation & upgrade
  • provisioning bare metal
  • backing up data

Q: You’ve talked about a bunch of performance issues that pop up and how to avoid them. How do you diagnose performance issues for these things?