You might encounter issues about insufficient disk space when using Tanzu Mission Control to install Tanzu Application Platform (commonly called TAP) on a managed Tanzu Kubernetes Grid (TKG) cluster.

Problem

While installing TAP, a prerequisite check for sufficient ephemeral storage is failing on Tanzu Kubernetes Grid (TKG) cluster nodes.

Cause

Insufficient allocatable ephemeral storage on cluster nodes.

Solution

  1. Check resources on your target cluster; set kubeconfig for your target cluster, and then run the following command to get the status of your cluster’s allocatable resources.
    kubectl get nodes -o=custom-columns=NAME:.metadata.name,ALLOCATABLE_CPU:.status.allocatable.cpu,ALLOCATABLE_MEMORY:.status.allocatable.memory,ALLOCATABLE_DISK:.status.allocatable.ephemeral-storage
  2. Verify that your cluster nodes have the resources required to install TAP full profile. For more information, see Prerequisites for installing Tanzu Application Platform in the VMware Tanzu Application Platform Documentation.
  3. If allocatable disk space is lesser than the minimum required disk space of 100 Gi per node, verify your node-pools configurations. Note that disk space allocated to `/var/lib/kubelet` mount point is referred to as ephemeral storage and reported by Kubernetes as allocatable disk space.
    1. It is recommended to allocate disk space higher than 100Gi, to accommodate other non-TAP payloads, as other workloads might consume disk space as well.
    2. Following is an example of node pool volume configuration for two supported mount points, `/var/lib/kubelet` and ‘/var/lib/containerd’; 125Gi is allocated to `/var/lib/kubelet` (higher than 100 Gi is required; scale the size per your payload requirements). Also, reference your $STORAGE_CLASS as per environment.
           - name: nodePoolVolumes
              value:
              - capacity:
                  storage: "125Gi"
                mountPath: "/var/lib/kubelet"
                name: kubelet
                storageClass: $STORAGE_CLASS
              - capacity:
                  storage: "100Gi"
                mountPath: "/var/lib/containerd"
                name: containerd
                storageClass: $STORAGE_CLASS
            - name: controlPlaneVolumes
              value:
              - capacity:
                  storage: "125Gi"
                mountPath: "/var/lib/kubelet"
                name: kubelet
                storageClass: $STORAGE_CLASS
              - capacity:
                  storage: "100Gi"
                mountPath: "/var/lib/containerd"
                name: containerd