Here's my take on the key ideas behind Kubernetes:
- Declare outcomes you desire, not how to reach them.
- Just because it's a default, doesn't mean its a best practice.
- Fools try to avoid failing, the wise fail and self-heal.
- Many replicas is better than one, and better still when distributed.
- If it's hard to express in YAML, it's a bad idea.
- Updating resources is overrated.
- Instead create new resources, delete the old ones.
- When you want to add functionality, write a new resource that builds upon an existing resource.
- But put escape hatches everywhere.
- Don't be afraid to make breaking changes.
- But communicate them a year in advance.
- When uncertain, scale horizontally.
- There should be one builtin way to do something, and a thousand custom controllers.
- Readability matters.
- Eventually is good enough.
Thank you to Matteo Bianchi, Charles Dunda, Imad Soltani, Victor Ajani, and many others for providing feedback.