Provisioning Kubernetes Clusters with VMware PKS
VMware PKS lets you build a custom cloud native operation by combining a signed, tested, and supported version of upstream Kubernetes with your choice of technology, giving you a flexible foundation to select the right tools and the right clouds for your workloads.
With VMware PKS, you set up Kubernetes clusters in largely the same way as with the open-source version of Kubernetes. With VMware PKS, however, you have the option of getting support for the Harbor container image registry, so you have one less decision to make as you provision clusters. VMware PKS also simplifies decisions about backup, ingress control, and conformance testing by working with the following open-source projects:
Velero, a backup-and-restore solution for Kubernetes clusters.
Sonobuoy, a suite of tests that evaluate a Kubernetes cluster for conformance with CNCF standards.
Contour, an ingress controller for clusters.
Choosing Infrastructure Components
But before you deploy a cluster, you must make decisions about some of the infrastructure components that will support your clusters:
Compute - bare metal, VMware vSphere, or a cloud provider.
Storage - various options, from VMware vSAN on vSphere to open-source systems.
Networking - Calico and flannel are popular open source options.
Lifecycle management - You'll need to maintain the clusters after you provision them.
Security - Clusters in production require a secure image registry like Harbor, authentication, and RBAC.
Making the Right Decisions for Your Goals and Environment
Selecting the best components for your situation and objectives requires hard-won knowledge through experience implementing cloud native applications, especially when it comes to provisioning clusters for use in production.
Somewhat obviously, the purpose for the cluster will result in different choices for your infrastructure components and how you set up your cluster. Deploying a cluster for use in production requires more planning and better up-front decisions than provisioning a cluster just so you can learn about Kubernetes.
Considerations Before Provisioning
When planning a Kubernetes cluster, you should begin by stating your goals and success criteria. Who are the end users of your infrastructure, and what kinds of applications or workloads will they run? What are the uptime, performance, recovery, and other requirements for each workload? With answers to these questions, you can decide what components to deploy, and where and how you deploy them.
One Cluster or Many Clusters?
Many enterprises run multiple clusters and distribute those clusters across deployment environments. The most common use case for multiple clusters is to separate a production environment from development and testing environments.
If your IT resources are already distributed across multiple locations, it often makes sense to set up a separate cluster for each set of resources. You might want multiple locations to reduce latency across geographic regions, support redundancy, or make efficient use of physical or virtual resources, such as vSphere, that are already in place. Importantly, multiple clusters provide better support for workload containment than a single cluster, minimizing the effects of an outage.
However, a single cluster might be the right choice if your initial deployment is for a proof of concept or development only, especially if your availability requirements are minimal and the resources you have to devote to your Kubernetes project are limited.
Where Will You Deploy Your Clusters?
Once you decide how many clusters you need, the next question is where to deploy them. For example, you could run clusters in multiple AWS availability zones within a single region. Or you could run your clusters on a mix of different cloud providers, a mix of cloud and on-premises environments, or multiple on-premises environments. If you're deploying on premises, will the infrastructure be virtualized or bare metal? New or existing hardware? If you're deploying in the cloud, which clouds will you choose?
If vSphere is among your existing infrastructure, you can use it as the underlying infrastructure for your Kubernetes clusters.
Getting Help Making the Right Choices
Here is a selection of resources that can help you make the right choices for provisioning Kubernetes clusters:
Here's a video titled Kubernetes: One Cluster or Many? that puts decisions around the number of clusters into context:
The following video, which is the first in a three-part series, helps you understand how the etcd key-value store comes into play when you deploy Kubernetes clusters:
Our white paper titled The First Principles of Kubernetes: Considerations and Best Practices for Planning and Implementation provides in-depth information to guide your decision making as you provision clusters.
Another white paper, Establishing a Software Development Lifecycle for Cloud Native Operations, will help you provision maintainable clusters.
Last updated