Kubernetes, Storage, and More! What is Kubernetes? Problem: ● Given a set of machines (VMs, physical machines, etc.) how do you deploy workloads (web applications, databases, batch machine learning jobs, etc,) to them? Node A Node B Node C Node D What is Kubernetes? In the “before-Kubernetes” times: ● Dependency hell ● DIY bash/powershell scripts with deployment verification test. ● Bespoke workload monitoring system ● Human intervention to recover What is Kubernetes? ● System for deploying and monitoring containerized workloads to nodes in a cluster. ● Greek for “Helmsman”. ● Inspired by Google’s experience with “Borg”. ● Open source, written in Go. ● Manage applications, not machines. What is Kubernetes? Application (Dev) Cluster Kernel/OS (System) Hardware Introduction to Kubernetes Storage Problem ● Containers are ephemeral: no way to persist state Results in misinformation, like: ● “Only run stateless workloads on Kubernetes” What is storage? Data Service Block/File Storage Physical Storage Object Store, SQL/NoSQL DB, Message Queue, etc. NFS, iSCSI Fibre Channel, etc. SSD/Flash Disk Stateful App Your stateful app Introduction to Kubernetes Storage In the “before-Kubernetes” times: ● Bunch of local disks ○ Stateful app writes to local disk (e.g. node local SDD or HDD). ○ Pros: ■ Fast, easy. ○ Cons: ■ Unreliable ● Reliable External storage ○ Stateful app writes to reliable, external storage (e.g. storage appliance, cloud disk, etc.) ○ Pros: ■ Reliable, ○ Cons: ■ Difficult Introduction to Kubernetes Storage ● With Kubernetes ○ Bunch of local disks ■ Can still use local disks (aka Kubernetes PersistentLocalVolumes) ○ Reliable External storage ■ Much better experience for “Reliable External storage” ● Automatic (intelligent) provisioning. ● Intelligent scheduling based on storage. ● Storage automatically available to correct node and pod. ● Storage moved along with workload. ● Portable Kubernetes Storage API -- write once run anywhere Introduction to CSI Problem ● How does Kubernetes know how to talk to an arbitrary, external block/file storage system? Introduction to CSI ● Plugin system for external block/file storage ● Easy to use CSI Drivers ○ Ensure storage system up and accessible. ○ Deploy CSI Driver YAML ● Easy to develop CSI Drivers ○ Write a GRPC service implementing CSI interface ○ Containerize it to make it easy to deploy. ○ Generate YAML to give to customers ■ Pair your CSI driver container with provided CSI Sidecar Containers CSI makes Kubernetes volume layer truly extensible. What are Kubernetes SIGs? ● Kubernetes Special Interest Groups ○ Groups of contributors focused on development/improvements Kubernetes sub-area. ○ 25 Kubernetes SIGs today ■ See https://github.com/kubernetes/community/blob/master/sig-list.md ○ Examples: ■ SIG Network, SIG Storage, SIG Node, SIG Security, SIG UI, etc. ● Workgroups ○ Time bounded groups of contributors focused on development/improvements Kubernetes sub-area. ○ Owned by one or more SIG ○ Examples ■ Data Protection Workgroup (co-owned by SIG Storage and SIG Apps). ● Group of Kubernetes Contributors responsible for: ○ Ensuring file and block storage (whether ephemeral or persistent, local or remote) are available wherever a container is scheduled. ○ Provisioning, attaching, mounting, unmounting, detaching, and deleting volumes ○ Influencing scheduling of containers based on storage (data gravity, availability, etc.). ○ Storage capacity management (container ephemeral storage usage, volume resizing, etc.) What does SIG Storage do? ● Some notable examples of features owned by SIG Storage: ○ Persistent Volume Claims and Persistent Volumes ○ Storage Classes and Dynamic Provisioning ○ Kubernetes volume plugins ○ Container Storage Interface (CSI) ○ Secret, ConfigMap, DownwardAPI Volumes ○ And lots more! ● SIG Storage Website: ○ https://github.com/kubernetes/community/tree/master/sig-storage What does SIG Storage do? What does SIG Storage do? ● Code features, write tests, fix bugs for volume related features. ● Meet virtually every two weeks to plan and discuss. ● Meet face-to-face every now and then to close on bigger issues. ● Help each other and the community via slack and google groups.