Our latest YouTube training series is all about the MinIO Operator, which brings native support for deploying and managing MinIO deployments (“MinIO Tenants”) on a Kubernetes cluster. MinIO’s Mike Johnson (aka MJ) brings us through the 10-part video series to set the foundation of understanding Kubernetes before focusing on installing and configuring the MinIO Operator for Kubernetes, which will be live by the end of the month. By the end of the course, you should have a high-level understanding of Kubernetes and how you can relate these core Kubernetes concepts to what you will be deploying with your MinIO configurations.
MJ kicks off the series with an overview of Kubernetes. This 101 video covers how Kubernetes manages containerized workloads. The value of Kubernetes lies in its ability to run distributed systems resiliently through its scalable framework, and the video goes over the built in resilience features of the framework. For instance, if you are running multiple nodes and one of those nodes goes down, Kubernetes will automatically move your workloads to another node and allow those services to continue to be presented to your end users without disruption.
The second video gives a look into namespaces, which are the foundation of where workloads get deployed with any Kubernetes cluster, providing a mechanism for isolating resources within a single cluster. It is a way to divide cluster resources between multiple users so you can assign resource quotas to those individual namespaces so individual groups or users don’t use too much outside of their designated resources. MJ takes you through a demo of what namespaces look like inside a cluster.
Third of the series hones in on Kubernetes pods—the basic building blocks of Kubernetes that provide encapsulation of application containers and sometimes multiple containers inside a pod. It is helpful to think of the pods as a wrapper around a container or multiple containers that provides additional functionality inside the cluster. For MinIO, the pods are the containers that run the MinIO server and the MinIO tenants.
The next video is all about deployments, which ensure resiliency and availability of services within Kubernetes and provide a declarative update method for pods and replica sets. For MinIO, the deployment is used for overall configuration for the MinIO server and all of the services that MinIO runs, ensuring that these are highly resilient and available. MJ’s demo provides more details on how deployments work.
The fourth and fifth videos of the collection discuss StatefulSets and DaemonSets, which are similar to the previously discussed deployments but have some unique properties that MJ covers. StatefulSets are a workload API object within Kubernetes used to manage stateful applications. It manages the deployment and scaling of a set of pods and provides guarantees about the ordering and uniqueness of these pods; unlike a deployment, however, a StatefulSet maintains a sticky identity for each of their pods. DaemonSets ensure that all (or some) nodes will run exactly one copy of a defined pod. As nodes are added to the cluster, pods are added to them, and as they’re removed, those pods are garbage collected.
MJ gives a very thorough breakdown of Kubernetes Services, which act like load balancers inside the cluster. Kubernetes Services are an abstraction which defines a logical set of pods and a policy—sometimes called a micro-service—by which to access them. You can think of a Service as a software load-balancer running inside your cluster that routes connections to pods that allows you to easily scale the pods without changing the endpoint. This video covers two types of services: ClusterIP (default service type) and NodePort Services.
Moving on, we have PersistentVolumes in Kubernetes. A PersistentVolume (PV) is a piece of storage in the cluster that has been provisioned by an administrator or dynamically provisioned using a storage class. Just like nodes, PVs are resources in the cluster. They are volume plugins like Volumes, but have a life cycle independent of any individual pod that uses the PV. For MinIO, the PV is the storage used for the MinIO Server, sometimes referred to as a ‘pool.’
The ninth video of the series is on Kubernetes Storage classes, the superset of the previously discussed PersistentVolumes. They offer a means to define different pools of MinIO storage for different use cases. For MinIO, it can reference faster—often more expensive and smaller—storage as well as slower storage, which is often cheaper and larger.
The final video of the course is about Kubernetes Ingress. Ingress is a way to route external web traffic via HTTP and HTTPS, allowing you to map it from outside the cluster to services within the cluster. For MinIO we can use an Ingress to expose the MinIO server to the outside world on standard 80/443 ports.
That brings us to the end of the Kubernetes overview portion of the MinIO on Kubernetes and MinIO Operator course. We hope that this was a helpful breakdown. For more detailed information about installing, running, and using MinIO in any environment, please refer to our documentation here. To learn more about MinIO or get involved in our community, please visit us at min.io or join our public slack channel. If you want to see our other series summaries, you can use the YouTube Summaries tag on our blog.