June 29, 2023

The Zen of Kubernetes

Here's my take on the key ideas behind Kubernetes:

  1. Declare outcomes you desire, not how to reach them.
  2. Just because it's a default, doesn't mean its a best practice.
  3. Fools try to avoid failing, the wise fail and self-heal.
  4. Many replicas is better than one, and better still when distributed.
  5. If it's hard to express in YAML, it's a bad idea.
  6. Updating resources is overrated.
  7. Instead create new resources, delete the old ones.
  8. When you want to add functionality, write a new resource that builds upon an existing resource.
  9. But put escape hatches everywhere.
  10. Don't be afraid to make breaking changes.
  11. But communicate them a year in advance.
  12. When uncertain, scale horizontally.
  13. There should be one builtin way to do something, and a thousand custom controllers.
  14. Readability matters.
  15. Eventually is good enough.

Thank you to Matteo Bianchi, Charles Dunda, Imad Soltani, Victor Ajani, and many others for providing feedback.

Never miss a blog post.