A First Look at ClusterClass Deployments using Tanzu Kubernetes Grid 2.0

September 8, 2022 Kendrick Coleman

The pace of open source Kubernetes releases has slowed down and a greater focus has been put on stability. We are finally at a time when Kubernetes is ready for mainstream consumption. VMware is known for implementing and operationalizing enterprise-ready software, and so there have been a few different iterations of Kubernetes in the VMware Tanzu portfolio. As a customer or partner, there have been evaluation periods where we’ve been asked, “Which VMware Tanzu Kubernetes solution is right for me?” Now with VMware Tanzu Kubernetes Grid 2.0, there is a unified experience on vSphere 8. 

Tanzu Kubernetes Grid utilizes upstream and community projects to deliver an engineered and supported Kubernetes solution that includes Kubernetes and brand new application lifecycle management capabilities. Tanzu Kubernetes Grid 2.0 has a unified framework to deliver a consistent user experience when deploying Kubernetes clusters on vSphere 8.0, using two types of supported deployment models. Each will be familiar but now they both support a single, unified way of cluster creation using a new API called ClusterClass.

Deployment models 

The first deployment model is using the Supervisor as the management cluster to provide a native and heavily integrated vSphere experience. The second, which will follow in an upcoming release of Tanzu Kubernetes Grid, utilizes virtual machines (VM) as the management cluster. These are the same types of deployment models in previous releases, and the prior primitives for deploying Tanzu Kubernetes Clusters remains, but there is an added API specifically for ClusterClass. 

Tanzu Kubernetes Grid 2.0 with the Supervisor-based management cluster, otherwise known as Workload Control Plane, becomes enabled when the underlying vSphere version is at 8.0 and the Supervisor Cluster goes through a simple upgrade process from vSphere 7.0U3. Utilizing the Supervisor Cluster is the recommended approach for more generalized workloads, will satisfy ease of operational use, and has tighter integration with vSphere capabilities. 

The next version of Tanzu Kubernetes Grid will have VM-based management cluster creation on vSphere 7U3 and 8 that employs the ClusterClass API. This packages the Tanzu CLI, along with Carvel, for lifecycle management of applications like Harbor, Contour, FluentBit, and more. Tanzu Kubernetes Grid with a VM-based management cluster will always be the mechanism for managing clusters on hyperscale cloud-based deployments. However, utilizing this architecture on vSphere is only recommended for specific workload types until feature parity is achieved for the Supervisor. Therefore, choosing this type of deployment model will require a migration to the Supervisor later.

Graphical user interface, websiteDescription automatically generated

ClusterClass 

As mentioned previously, the earlier primitives of Tanzu Kubernetes Clusters will still exist for Tanzu Kubernetes Grid 1.X and vSphere with Tanzu. A new feature has been introduced as a part of Cluster API called ClusterClass which reduces the need for redundant templating and enables powerful customization of clusters. The whole process for creating a cluster using ClusterClass is the same as before but with slightly different parameters. Let’s take a look at those features. 

Below is a minimalistic cluster example. At the very top is the new API v1beta1 endpoint and the designation of ‘cc01’ to the cluster. Regarding specifications, it’s obvious where the version of Kubernetes is being set, along with the amount of control plane nodes and workers. The variables at the bottom relate to the type of virtual machine class that has been enabled in vSphere, as well as the storage class to be used by the backing disks of the virtual machines. The use of variables allows further extensibility as new features are added.

apiVersion: cluster.x-k8s.io/v1beta1 
kind: Cluster 
metadata: 
  name: cc01 
spec: 
  topology: 
class: tanzukubernetescluster 
version: v1.23.8 
controlPlane: 
   replicas: 1 
workers: 
   # node pools 
   machineDeployments: 
     - class: node-pool 
       name: node-pool-01 
       replicas: 3 
variables: 
   - name: vmClass 
     value: best-effort-small 
   # default storageclass for control plane and node pool 
   - name: storageClass 
     value: wcpglobal-storage-profile

vSphere-managed topologies 

Another new feature of Tanzu Kubernetes Grid 2.0 is the introduction of vSphere-managed topologies. This allows an administrator to segment failure domains based on hosts, clusters, and even racks! This information gets tagged into a VSphereFaultDomain custom resource definition and you can include topology definitions such as vSphere datacenter, cluster, host, and datastore information.

Graphical user interface, application, tableDescription automatically generated

 Here's an example of using the new ClusterClass model with this topology by allowing the workers to be spread across three different failure domains. 

apiVersion: cluster.x-k8s.io/v1beta1 
kind: Cluster 
metadata: 
  name: cc-a01 
  namespace: namespace-a01 
spec: 
  clusterNetwork: 
services: 
   cidrBlocks: ["198.51.100.0/12"] 
pods: 
   cidrBlocks: ["192.0.2.0/16"] 
serviceDomain: "cluster.local" 
  topology: 
class: tanzukubernetescluster 
version: v1.23.8---vmware.2-tkg.1-zshippable 
controlPlane:
   replicas: 3 
workers: 
   machineDeployments: 
     - class: node-pool 
       failureDomain: zone1 
       name: node-pool-1 
       replicas: 1 
     - class: node-pool 
       failureDomain: zone2 
       name: node-pool-2 
       replicas: 1 
     - class: node-pool 
       failureDomain: zone3 
       name: node-pool-3 
       replicas: 1 
variables: 
   - name: vmClass 
     value: best-effort-small 
   - name: storageClass 
     value: wcpglobal-storage-profile 


To get started using ClusterClass, upgrade your environment to vSphere 8.0. Always refer to the documentation for the latest updates and information.

About the Author

Kendrick Coleman is a reformed sysadmin and virtualization junkie. His attention has shifted from hypervisors to cloud native platforms focused on containers. In his role as an Open Source Technical Product Manager, he figures out new and interesting ways to run open source cloud native infrastructure tools with VMware products. He's involved with the Kubernetes SIG community and frequently blogs about all the things he's learning. He has been a speaker at DockerCon, OpenSource Summit, ContainerCon, CloudNativeCon, and many more. His free time is spent sharing bourbon industry knowledge hosting the Bourbon Pursuit Podcast.

More Content by Kendrick Coleman
Previous
Price Reduction, Renewing Credits: More Reasons to Choose Azure Spring Apps Enterprise
Price Reduction, Renewing Credits: More Reasons to Choose Azure Spring Apps Enterprise

With rapid adoption of Azure Spring Apps Enterprise, we’re thrilled to pass on benefits to customers—lower ...

Next
VMware Application Catalog Extends Base Operating Systems Support
VMware Application Catalog Extends Base Operating Systems Support

VMware has launched extended support for the operating systems offered in VMware Application Catalog as bas...