The presentation discusses the importance of isolation and multi-tenancy in Kubernetes clusters, and provides insights on how to achieve this through atomic primitives, namespaces, and container security.
- Containers are the atomic unit of work in Kubernetes, and run on pods which are logical units of an application deployed to nodes in a cluster
- Isolation layers in Kubernetes include the workload, control plane, and platform services
- Namespaces are a key way to enforce isolation and can be defined in various ways depending on the multi-tenant architecture
- Container security is crucial in maintaining isolation, and can be achieved through vulnerability scanning and treating containers as immutable objects
- An anecdote is provided on how the University of Chicago used pod-level isolation to enable users to launch their own Jupyter notebooks while maintaining isolation from other pods
The University of Chicago used pod-level isolation to enable users to launch their own Jupyter notebooks into a browser setting for analyzing biomedical data. Hatchery, an open source tool, deployed a pod for each user with a persistent volume for storing the notebook. The pod was isolated from other pods and had constraints on CPU and memory usage, as well as denied access to the Kubernetes API and internal APIs through network policies.