VKS Lifecycle Management: VKRs, Asynchronous Releases, Upgrades and Day-2 Operations

A field-tested guide to validating compute, network, name resolution and time services before beginning a VMware Cloud Foundation bring-up.

Kubernetes lifecycle management in an enterprise VMware environment involves more than changing a version number. Platform teams must understand which Kubernetes releases are available, how those releases are delivered, which versions are supported, and how application workloads behave when clusters and worker nodes are updated.

In VMware Cloud Foundation (VCF) 9.1 environments, VMware vSphere Kubernetes Service (VKS) provides a platform for provisioning and managing Kubernetes clusters. The lifecycle of those clusters interacts with several related components, including the Supervisor, VKS service capabilities, vSphere Kubernetes Releases (VKRs), networking, storage, and application workloads.

These components do not necessarily share one upgrade schedule.

A Kubernetes release can become available independently of a broader platform release, depending on the supported VKS release-delivery model. Conversely, making a new Kubernetes release available does not automatically mean every existing cluster should be upgraded immediately.

The challenge is to coordinate these lifecycle changes without creating unnecessary application downtime, compatibility problems, or operational risk.

This article explains how VKS lifecycle management works conceptually, how enterprises can manage Kubernetes release consumption, and how to prepare for upgrades through compatibility checks, PodDisruptionBudgets, rolling node replacement, add-on validation, performance tuning, and controlled operational governance.

What You Will Learn

  • How VCF, Supervisor, VKS, and Kubernetes release lifecycles relate to one another.
  • What VKRs represent and how Kubernetes release availability affects cluster management.
  • How asynchronous release delivery can separate Kubernetes release consumption from broader platform upgrades.
  • How to evaluate version compatibility, support windows, and upgrade readiness.
  • How PodDisruptionBudgets and rolling worker replacement affect workload availability.
  • How to validate CNI, CSI, and other add-ons before upgrading.
  • How to use TuneD profiles and performance tuning as part of day-2 operations.
  • How to organize lifecycle governance across lab, development, test, and production.
  • How to capture cluster state before, during, and after an update.

Table of Contents

  1. Understanding the VKS Release Lifecycle
  2. vSphere Kubernetes Releases (VKRs)
  3. Asynchronous VKS Releases
  4. Content Delivery and Release Consumption
  5. Version Compatibility and Support Windows
  6. Upgrade Readiness Checks
  7. PodDisruptionBudgets and Workload Availability
  8. Rolling Node Replacement
  9. CNI, CSI, and Add-on Compatibility
  10. Application Validation Before and After Upgrades
  11. TuneD Profiles and Performance Tuning
  12. Operational Governance Across Environments
  13. Hands-On Lab
  14. Troubleshooting and Common Upgrade Blockers
  15. Key Takeaways
  16. What I Learned
  17. Continue the Series

1. Understanding the VKS Release Lifecycle

VKS lifecycle management involves multiple related layers. Understanding their responsibilities helps platform teams decide what needs to change, what can remain in place, and which compatibility checks are required before an update.

VCF Lifecycle

The VCF lifecycle covers the management of the broader private-cloud platform and its components. Depending on the deployment, this includes infrastructure software, vSphere, networking, storage, and platform services.

A VCF lifecycle operation may involve a broader set of infrastructure changes than a Kubernetes cluster upgrade.

For example, updating a supported Kubernetes release for a workload cluster is a different operation from upgrading the underlying VCF platform. They may have dependencies, but they should not automatically be treated as one indivisible change.

Platform administrators must still verify whether a particular VKS release requires changes to the underlying platform or other dependencies.

Supervisor Lifecycle

The Supervisor provides the platform services and management environment used by supported VKS workflows.

Its lifecycle must remain compatible with the Kubernetes clusters and capabilities it supports. Supervisor maintenance, platform-service updates, and Kubernetes cluster upgrades may therefore have separate procedures and prerequisites.

Before planning an update, identify:

  • The current Supervisor version and configuration.
  • The target VKS capabilities required by the cluster.
  • Any documented platform prerequisites.
  • Whether the intended update changes the supported cluster lifecycle workflow.
  • Whether additional maintenance or compatibility steps are required.

A cluster administrator should not assume that a workload cluster can consume every available Kubernetes release regardless of the Supervisor and VKS service versions.

VKS Service Lifecycle

The VKS service manages supported cluster lifecycle operations, including provisioning, scaling, upgrading, and cluster health management. Its capabilities determine which Kubernetes releases and cluster configurations are available through the platform.

This lifecycle layer is particularly important because it separates the management capabilities offered by the platform from the version of Kubernetes running inside an individual cluster.

A VKS service update and a Kubernetes cluster upgrade are related operations, but they are not synonymous.

Kubernetes Release Lifecycle

The Kubernetes release lifecycle concerns the version running in the cluster and the supported path to move to another version.

A target release can affect:

  • The control plane.
  • Worker nodes and their Kubernetes components.
  • Supported operating-system images and dependencies.
  • Networking and storage integrations.
  • Cluster add-ons.
  • Application APIs and workload behavior.

A Kubernetes release update should therefore be treated as a coordinated change across the cluster rather than simply an update to the control-plane version.

VKS Lifecycle Diagram

Conceptual lifecycle relationship. This diagram is not an exact dependency graph or a guarantee that all three example releases are simultaneously available. Actual dependencies and available versions must be verified for the deployed release.

The diagram illustrates the key idea: platform lifecycle, service lifecycle, and workload-cluster release lifecycle are related but distinct.

The labels N, N-1, and N-2 represent relative release positions, not specific Kubernetes versions or a guarantee of support.

2. vSphere Kubernetes Releases (VKRs)

A vSphere Kubernetes Release (VKr) represents a Kubernetes release made available through the VKS platform’s release-management mechanism.

In practical terms, a VKr is more than a version number displayed in a dashboard. The release may include the Kubernetes version and associated components or dependencies required by the platform’s supported cluster configuration.

The exact metadata and packaging depend on the release implementation.

Why VKrs Matter

Without a controlled release mechanism, different teams might install arbitrary Kubernetes versions and independently assemble the supporting components.

A platform-managed release approach helps administrators work with releases that are made available through the supported platform workflow.

VKrs are relevant to:

  • Selecting a Kubernetes version when creating a cluster.
  • Determining which releases are available for existing clusters.
  • Planning a cluster upgrade.
  • Maintaining consistent versions across environments.
  • Evaluating compatibility with networking, storage, and other components.

The VKS API documentation describes the platform’s cluster-management capabilities and release-related resources. Use the API and configuration documentation for the exact resource types supported by your installed version.

Kubernetes Version vs. VKr Release

These terms are related, but they should not be used interchangeably.

TermMeaning
Kubernetes versionThe upstream Kubernetes version, such as a particular major, minor, and patch release
VKrThe platform-managed release representation used by the applicable VKS workflow
VKS service versionThe version of the service providing cluster lifecycle capabilities
Supervisor versionThe version of the Supervisor environment supporting the relevant platform services
VCF versionThe version of the broader private-cloud platform

A VKr can identify a platform-specific release that includes more information than the upstream Kubernetes version alone.

Consequently, two releases that share an upstream Kubernetes version should not automatically be assumed to be identical in their platform-specific components, packaging, or compatibility.

Release Selection During Cluster Creation

When provisioning a new cluster, the platform team should select a supported release that meets the application’s requirements and the organization’s version policy.

The decision should consider:

  • Availability in the VKS environment.
  • Platform compatibility.
  • Application API requirements.
  • CNI and CSI compatibility.
  • Add-on and operator support.
  • Security and maintenance requirements.
  • Expected upgrade path and support window.

Avoid selecting a release solely because it has the highest version number. The newest available release may still require validation against application dependencies and enterprise operational standards.

Inspecting Available Releases

The exact resource names and commands depend on the VKS API and Kubernetes management context available in the environment.

Start by confirming which cluster and context you are using:

kubectl config current-context
kubectl config get-contexts

Then inspect the supported VKS management API and release resources for your deployment.

Do not assume that a generic command for a different Kubernetes distribution will reveal VKrs in every VKS environment. Some resources may only be accessible through the appropriate management context or administrative permissions.

3. Asynchronous VKS Releases

Asynchronous release delivery allows certain software releases or capabilities to become available independently of the broader platform release cadence.

This is important in enterprise environments because Kubernetes evolves continuously. Organizations may need a newer supported Kubernetes release, a security fix, or a platform capability without treating every such change as a complete VCF upgrade.

The availability and scope of asynchronous releases depend on the product’s documented release model.

Why Asynchronous Releases Matter

Consider an enterprise running a validated VCF platform that hosts several Kubernetes clusters.

The platform team may want to adopt a newer supported Kubernetes release for a specific application environment. If the required release is delivered through the supported VKS release mechanism, the team may be able to evaluate and consume it without performing a full VCF platform upgrade at the same time.

That does not mean every Kubernetes release can be installed independently of the platform. Compatibility constraints and prerequisites still apply.

The distinction is between when a release becomes available and when an organization decides to deploy it.

Release availability does not replace testing, change approval, or operational readiness.

Asynchronous Does Not Mean Uncontrolled

A release delivered outside the main platform upgrade cadence still requires governance.

Before consuming it, determine:

  • Whether the release is supported with the deployed platform.
  • Which clusters can use it.
  • Whether a Supervisor or VKS service prerequisite applies.
  • Whether existing cluster configurations remain compatible.
  • Whether add-ons or applications need updates.
  • Whether the organization has completed its validation process.

A release should not move directly from availability to production adoption without the appropriate checks.

Example: Separating Platform and Kubernetes Changes

Imagine an organization operating a stable VCF environment with development, staging, and production Kubernetes clusters.

A newer supported Kubernetes release becomes available through the applicable VKS release-delivery process.

The team can evaluate the change in its lab, assess the application and add-on compatibility, deploy it in development, and validate it in staging. Production adoption then follows the organization’s approved change window.

This example describes an operational strategy, not a guarantee that a specific release can be consumed on every existing platform version. Verify the documented compatibility and release prerequisites first.

4. Content Delivery and Release Consumption

Making a Kubernetes release available and applying that release to an existing cluster are separate stages.

Understanding the distinction prevents a common operational misunderstanding: a release appearing in the platform does not necessarily mean existing clusters have already been updated.

Release Content Delivery

Release content must be made available through the supported delivery mechanism.

Depending on the architecture, the process may involve platform-managed release metadata, compatible node images, required artifacts, and other dependencies.

Administrators should verify:

  • Whether the release is available in the intended management environment.
  • Whether required content has been delivered and is accessible.
  • Whether the release is supported by the current platform configuration.
  • Whether any required images or artifacts can be retrieved.
  • Whether the relevant permissions and network access are configured.

The precise delivery workflow must follow the documentation for the deployed VKS version.

Release Discovery

Once a release is available to the platform, administrators need to establish which clusters can use it and whether it is an eligible upgrade target.

The existence of a release does not establish that every cluster is eligible to consume it.

The cluster’s current version, supported upgrade path, cluster configuration, and dependencies can affect the available options.

Release Consumption

Release consumption occurs when a supported workflow uses the release to create or update a Kubernetes cluster.

For an existing cluster, the target release must be compatible with the intended upgrade path. The platform may also coordinate the upgrade of supporting components according to their compatibility requirements.

The VKS API reference documents release-related resources and add-on compatibility mechanisms; consult the matching version of that documentation before designing automation.

Release Consumption Workflow

This workflow makes an important distinction between platform readiness and organizational readiness. A release can be technically available while still awaiting application testing or change approval.

5. Version Compatibility and Support Windows

Version compatibility is one of the most important factors in lifecycle planning.

An upgrade can affect the Kubernetes control plane, worker nodes, API clients, networking components, storage integrations, operators, admission webhooks, and application manifests.

A version that works in a lab is not automatically supported in production, and a version supported by upstream Kubernetes is not automatically supported by every VKS platform configuration.

Kubernetes Version Compatibility

Kubernetes defines version-skew rules governing the supported differences between components such as the API server, kubelet, kube-proxy, and kubectl. Platform-specific tooling may impose additional restrictions.

This means administrators must consider more than the version shown for the control plane.

Before upgrading, verify:

  • The current control-plane version.
  • The intended target version.
  • Worker-node compatibility.
  • The supported upgrade sequence.
  • The version requirements of platform-managed components.
  • The supported version of kubectl used for administration.

Do not bypass the platform’s supported upgrade workflow simply because an upstream version-skew combination appears technically permissible.

CNI and CSI Compatibility

The CNI provides pod networking, while the CSI integration provides the interface through which Kubernetes workloads consume supported storage systems.

An upgrade can expose incompatibilities in either area.

For example, a networking add-on may require a particular Kubernetes version range, while a storage integration may depend on specific node components or supported configuration.

The team should verify the compatibility of the exact versions deployed rather than assuming that a component remains supported simply because it was working before the upgrade.

API Deprecation and Application Compatibility

Kubernetes releases can remove APIs that were deprecated in earlier versions.

An application may continue to run initially while a controller, Helm chart, operator, or deployment pipeline still depends on an API that is no longer served by the target release.

Review:

  • API versions used by manifests.
  • Helm chart compatibility.
  • Operator support matrices.
  • Admission webhooks.
  • Custom Resource Definitions (CRDs).
  • Automation scripts and deployment pipelines.

Test the actual application deployment process against the target version, not only the existing running pods.

Support Windows

A support window determines how long a particular software release remains eligible for support under the applicable vendor or project policy.

The Kubernetes project’s release policy is not identical to Broadcom’s support policy for VKS or VCF. For example, upstream Kubernetes maintains a defined set of actively supported minor-release branches, while vendor support is governed by the relevant product lifecycle and support documentation.

Enterprise administrators should track both where relevant:

  • Upstream Kubernetes maintenance and security updates.
  • Vendor support for the deployed VKS release.
  • VCF and Supervisor compatibility.
  • Add-on and application vendor support.
  • Internal security and compliance deadlines.

Do not use an upstream end-of-life date as a substitute for the applicable VKS product-support date.

Version Compatibility Checklist

AreaWhat to validate
VCF and SupervisorSupported platform configuration and prerequisites
VKS serviceRequired capabilities and supported upgrade workflow
KubernetesSupported target version and upgrade sequence
Node imagesCompatibility and availability of required artifacts
CNISupported networking version and configuration
CSISupported storage integration and driver version
Add-onsCompatibility with the target control plane and worker nodes
ApplicationsAPI, runtime, operator, and dependency compatibility
Support windowVendor support and organizational retirement deadlines

A version compatibility record gives the platform team a documented basis for approving or delaying an upgrade.

6. Upgrade Readiness Checks

An upgrade should begin with a review of the current cluster’s state and its ability to tolerate the planned change.

The goal is not merely to confirm that the target version is available. The goal is to identify blockers before the upgrade starts.

Capture the Current Cluster State

Run the following commands from the correct Kubernetes management context:

kubectl get nodes -o wide
kubectl get deployments -A
kubectl get pods -A
kubectl get pdb -A

Record the output before making changes.

Look for:

  • Nodes that are not Ready.
  • Deployments that have unavailable replicas.
  • Pods in Pending, CrashLoopBackOff, or other unexpected states.
  • Existing PodDisruptionBudgets that may block voluntary disruptions.
  • Workloads that already have insufficient replicas.
  • Persistent volumes or stateful applications that require special handling.

An upgrade is harder to diagnose if the cluster was already unhealthy beforehand.

Review Capacity and Scheduling

A rolling upgrade or node replacement can temporarily reduce available compute capacity.

Before draining a node, confirm that the remaining nodes can accommodate the affected workloads.

Check:

  • CPU and memory capacity.
  • Pod resource requests and limits.
  • Node selectors, affinity, and anti-affinity.
  • Taints and tolerations.
  • Topology constraints.
  • Storage attachment and scheduling requirements.
  • Available capacity for replacement nodes.

A cluster can have enough total CPU and memory while still failing to reschedule a workload because of node affinity, storage constraints, or topology rules.

Check Application Availability

Review replica counts, readiness probes, and application health before starting.

For replicated applications, confirm that sufficient healthy replicas are available to tolerate the planned disruption.

For stateful applications, check replication, quorum, storage availability, and recovery procedures. A PodDisruptionBudget alone cannot guarantee data safety or application continuity.

Check Add-ons and APIs

Review the compatibility of the CNI, CSI, monitoring agents, policy controllers, ingress or gateway components, operators, and other add-ons.

Also check whether application manifests use deprecated APIs that may be removed in the target version.

The upgrade plan should identify any component that must be updated before, during, or after the Kubernetes version transition.

Confirm Recovery and Change Controls

Before an approved production upgrade, establish:

  • A documented change plan.
  • The responsible operators and escalation contacts.
  • The maintenance window.
  • Required pre-upgrade backups or recovery points.
  • Application validation criteria.
  • Monitoring and alerting coverage.
  • The decision criteria for pausing or aborting the operation.
  • The supported recovery or remediation procedure.

Do not assume that a Kubernetes version downgrade is supported. Many cluster lifecycle systems do not support arbitrary rollback to an earlier version. Recovery should be planned according to the supported product procedures and application recovery requirements.

7. PodDisruptionBudgets and Workload Availability

A PodDisruptionBudget (PDB) helps protect replicated applications during voluntary disruptions, such as node maintenance or an upgrade workflow that safely evicts pods.

It does not guarantee that an application will remain available under every failure condition. PDBs limit certain voluntary disruptions; they do not prevent involuntary failures, and they do not replace application-level redundancy.

How a PDB Works

A PDB specifies the number or proportion of selected pods that may be unavailable during supported voluntary disruptions.

For example, imagine a frontend deployment with three replicas.

If its PDB specifies minAvailable: 2, the disruption mechanism should preserve at least two available replicas when evaluating voluntary pod evictions.

This helps prevent a node drain from evicting too many replicas at once.

However, the actual outcome also depends on pod health, the workload controller, scheduling capacity, and the disruption mechanism used.

Example PDB Configuration

The following is an illustrative Kubernetes manifest. The label selector must match the intended application pods.

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: frontend-pdb
  namespace: production
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app: frontend

This example is suitable only if the application has enough matching replicas and the chosen budget matches its availability requirements.

For a workload with only one replica, minAvailable: 2 cannot be satisfied. For a workload with three replicas, the configuration permits at most one replica to be unavailable through the relevant voluntary-disruption mechanism when the other conditions are satisfied.

Inspect Existing PDBs

Use:

kubectl get pdb -A
kubectl describe pdb <pdb-name> -n <namespace>

Pay attention to:

  • MIN AVAILABLE.
  • MAX UNAVAILABLE.
  • ALLOWED DISRUPTIONS.
  • Current healthy and desired pod counts.
  • Whether the selector matches the intended application.

If ALLOWED DISRUPTIONS is zero, a drain may be blocked until additional replicas become healthy or the disruption budget is appropriately revised.

PDBs Are Not a Substitute for Application Resilience

A PDB does not automatically create replicas, repair failed applications, or guarantee that replacement pods will become ready.

It also does not block every type of disruption. For example, an application rollout controlled by a Deployment uses its own rollout strategy; a PDB does not impose the same eviction restriction on that rollout.

Before upgrading, verify that the application can tolerate node maintenance, that its replicas are distributed appropriately, and that enough resources are available to reschedule workloads.

8. Rolling Node Replacement

Rolling node replacement is a lifecycle technique in which nodes are updated or replaced progressively rather than removing every worker at once.

In a VKS-managed cluster, the platform’s supported upgrade workflow should manage the relevant lifecycle operations. The conceptual process below explains the availability considerations; it is not an instruction to manually delete VKS-managed node VMs.

The Rolling Upgrade Concept

The exact order of node creation, draining, control-plane upgrades, and node replacement depends on the VKS release and cluster configuration. Follow the supported platform upgrade workflow rather than treating this conceptual sequence as a universal implementation.

Step 1: Establish the Baseline

Before replacing any worker, capture node health, application replicas, PDB status, storage health, and networking status.

kubectl get nodes -o wide
kubectl get deployments -A
kubectl get pods -A
kubectl get pdb -A

This establishes the baseline for comparison after the replacement.

Step 2: Prepare Replacement Capacity

Replacement capacity must be available before workloads can safely move away from an old worker.

Validate:

  • CPU and memory capacity.
  • Network and IP allocation.
  • Storage compatibility.
  • Node scheduling requirements.
  • Required add-ons and node configuration.
  • The cluster’s configured worker-pool lifecycle.

A replacement node that is created successfully but cannot become Ready is not a usable replacement.

Step 3: Drain the Old Worker

Draining marks a node as unavailable for ordinary new scheduling and attempts to evict eligible pods gracefully.

A generic Kubernetes drain command is:

kubectl drain <node-name> --ignore-daemonsets

Important: this command is included to explain Kubernetes node-drain behavior. Do not run it against a VKS-managed node during a platform upgrade unless the applicable VKS documentation and approved operational procedure explicitly call for that action. The supported VKS lifecycle controller may need to coordinate node changes itself.

The command also does not bypass PDB restrictions simply because --ignore-daemonsets is specified. Other drain requirements and exceptions still apply. Kubernetes documents safe draining and disruption-budget behavior in its official guidance.

Step 4: Validate Workload Health

After the platform performs the relevant node transition, inspect the cluster:

kubectl get nodes -o wide
kubectl get deployments -A
kubectl get pods -A
kubectl get events -A --sort-by=.lastTimestamp

Confirm that:

  • The replacement node is Ready.
  • Expected workloads are scheduled.
  • Deployments have their desired available replicas.
  • Stateful workloads remain healthy.
  • No unexpected scheduling or storage failures are present.

A successful node replacement does not by itself prove that the application is healthy.

Step 5: Repeat and Verify

Continue through the supported lifecycle workflow until the intended nodes have been updated.

Avoid assuming that all worker nodes can be upgraded in parallel. Parallelism, disruption budgets, cluster topology, and platform constraints can affect the safe upgrade sequence.

After completion, verify the cluster version, node health, add-on compatibility, application behavior, and monitoring status.

9. CNI, CSI, and Add-on Compatibility

Kubernetes lifecycle management includes supporting components, not just the Kubernetes control plane and worker nodes.

A cluster can report the expected Kubernetes version while a networking, storage, or application-support component remains incompatible or unhealthy.

CNI Compatibility

The Container Network Interface provides the networking integration used by pods.

Before upgrading, verify:

  • The supported CNI version for the target Kubernetes release.
  • Compatibility with the target node environment.
  • Required configuration changes.
  • Network-policy behavior.
  • Overlay or routing behavior where applicable.
  • The availability of required CNI images and artifacts.

After the upgrade, validate pod-to-pod connectivity, Service connectivity, and the required external paths.

CSI Compatibility

The Container Storage Interface connects Kubernetes storage workflows with supported storage systems.

Before upgrading, verify the CSI driver’s compatibility and any platform-specific prerequisites.

Check:

  • Storage classes and volume provisioning.
  • Existing persistent volume claims.
  • Volume attachment and mount behavior.
  • Stateful application recovery.
  • Snapshot or backup mechanisms, where applicable.
  • Required permissions and storage policies.

A storage class existing in the cluster does not guarantee that new volumes can be provisioned or that existing workloads can mount their volumes successfully.

Add-on Compatibility and Upgrade Ordering

Some VKS lifecycle implementations provide metadata or mechanisms for coordinating add-on upgrades with cluster upgrades.

The VKS API reference describes add-on compatibility constraints based on target Kubernetes and worker versions, and how those constraints can influence the stage at which an add-on is updated. The exact behavior depends on the applicable API and platform version.

This matters because add-ons may need to be updated before a control-plane or worker transition to remain compatible.

Do not assume every add-on is upgraded automatically or that every third-party component participates in the platform’s lifecycle workflow.

Maintain an inventory of:

  • Platform-managed add-ons.
  • CNI and CSI components.
  • Operators and CRDs.
  • Monitoring and logging agents.
  • Ingress or gateway controllers.
  • Admission webhooks.
  • Security agents.
  • Any manually managed supporting components.

For each component, record its owner, current version, target-compatible version, upgrade procedure, and validation criteria.

10. Application Validation Before and After Upgrades

A technically successful cluster upgrade can still expose application problems.

Applications may depend on deprecated APIs, particular runtime behavior, storage characteristics, network policies, or external services that change during the lifecycle operation.

Application validation must therefore be a formal part of the upgrade plan.

Before the Upgrade

Capture the application’s baseline:

  • Desired and available replicas.
  • Pod readiness and restart counts.
  • Service endpoints.
  • Recent application errors.
  • Response times or latency metrics where available.
  • Persistent volume status.
  • Relevant background jobs and scheduled tasks.
  • External dependencies and integration tests.

Example commands:

kubectl get deployments -A
kubectl get statefulsets -A
kubectl get pods -A
kubectl get svc -A
kubectl get pvc -A

Use the output to identify existing problems before introducing the upgrade.

During the Upgrade

Monitor:

  • Cluster and node readiness.
  • Pod eviction and rescheduling.
  • Application availability.
  • PDB-related blockers.
  • Persistent storage attachment.
  • CNI and CSI component health.
  • Relevant warnings and error events.

Do not judge success solely by whether the control plane remains reachable.

After the Upgrade

Repeat the baseline checks and run application-level validation.

kubectl get nodes -o wide
kubectl get deployments -A
kubectl get pods -A
kubectl get svc -A
kubectl get pvc -A

Then execute the application’s approved smoke tests, integration tests, and critical user workflows.

Examples include:

  • Logging in and completing a representative transaction.
  • Calling a critical API.
  • Reading from and writing to persistent storage.
  • Verifying message processing or background jobs.
  • Confirming monitoring and alert delivery.
  • Testing the required network paths.

Compare the post-upgrade state with the recorded baseline. Investigate unexpected differences before declaring the change complete.

Define Success and Failure Criteria

A production upgrade plan should explicitly state what constitutes success.

For example:

Validation areaExample success criterion
Kubernetes nodesAll expected nodes are Ready
DeploymentsRequired replicas are available
NetworkingCritical pod and Service paths work
StorageRequired PVCs are bound and workloads can access their volumes
Add-onsRequired components are compatible and healthy
ApplicationCritical smoke tests pass
MonitoringAlerts, logs, and telemetry are functioning
Change recordResults and outstanding issues are documented

The criteria should be tailored to the workload. A stateless frontend and a stateful database may require different validation and recovery procedures.

11. TuneD Profiles and Performance Tuning

Lifecycle management also includes maintaining predictable performance as node images, kernel settings, workload placement, and supporting components change.

TuneD is a Linux system-tuning service that can apply profiles for specific performance or resource-use goals. Its relevance to a VKS environment depends on the node operating system, product support, and available configuration mechanisms.

Do not assume that an operating-system tuning profile can be installed or changed manually on every VKS-managed node. Verify the supported customization method for the actual release.

Why Performance Tuning Matters

A cluster can be healthy from Kubernetes’ perspective while application latency or throughput changes after an upgrade.

Potential causes include:

  • Different kernel or operating-system behavior.
  • CPU and memory pressure.
  • Changes in workload placement.
  • Storage latency.
  • Network throughput or packet-processing behavior.
  • Application-level changes.
  • Differences in supported node or tuning configuration.

Performance tuning should start with measurement, not with applying arbitrary profiles.

TuneD Profile Considerations

Where TuneD is supported for the relevant node environment, a profile may adjust selected system parameters to align with a workload’s requirements.

Examples of tuning objectives include:

  • General throughput.
  • Lower latency.
  • CPU-related performance behavior.
  • Storage workload characteristics.
  • Resource-efficiency goals.

These are broad tuning objectives, not a list of profiles guaranteed to be available in VKS.

Before using a profile, establish:

  • Whether TuneD is supported on the node operating system.
  • How the profile is applied and maintained.
  • Whether changes persist through node replacement.
  • Whether the platform permits the required customization.
  • Whether the profile conflicts with existing settings.
  • How the change will be measured and rolled back.

A Safe Performance-Tuning Workflow

  1. Establish a performance baseline.
  2. Identify the suspected bottleneck.
  3. Confirm that the proposed tuning method is supported.
  4. Apply the change in a controlled test environment.
  5. Measure latency, throughput, CPU, memory, and storage behavior as appropriate.
  6. Run application regression tests.
  7. Document the result and deploy through the approved change process.

Avoid combining a Kubernetes upgrade, CNI change, node configuration change, and performance-tuning change in a single untested operation. Separating changes makes regressions easier to identify.

12. Operational Governance Across Environments

A repeatable release process helps enterprises avoid inconsistent Kubernetes versions, undocumented exceptions, and last-minute production upgrades.

The goal is not to run every environment on exactly the same version forever. The goal is to make version differences intentional, documented, supported, and manageable.

Example Enterprise Version Policy

The following policy uses the relative release labels N, N-1, and N-2. These labels describe an organization’s chosen release sequence; they do not guarantee that every release is still supported or available.

EnvironmentExample version policyPrimary purpose
LabNewest validated supported releaseExplore new capabilities and identify compatibility issues
DevelopmentNDevelop applications and test integrations against the selected release
Test/StagingNValidate production-like configuration and upgrade procedures
ProductionN or N-1, depending on the validation windowOperate approved workloads on a release that meets support and compliance requirements
RetirementVersions approaching end of supportPlan migration, upgrade, or retirement before support requirements are breached

This is an example policy, not a universal recommendation. The appropriate version for each environment depends on support status, application requirements, risk tolerance, and the platform’s documented compatibility.

Lab Environment

The lab is where teams evaluate new supported releases and test proposed changes.

Typical activities include:

  • Checking new release availability.
  • Testing upgrade procedures.
  • Evaluating add-on compatibility.
  • Validating API and manifest changes.
  • Testing node replacement behavior.
  • Recording known issues and recovery procedures.

A lab result is evidence for further validation, not automatic approval for production.

Development Environment

Development teams use the selected Kubernetes release to build and test applications.

The platform team should maintain a documented target version and communicate planned changes to application owners.

Developers should test deployment manifests, Helm charts, operators, and integration workflows against the intended target version rather than relying exclusively on the version currently used in production.

Test and Staging Environment

Staging should approximate the production configuration closely enough to validate the intended change.

Where practical, match the relevant:

  • Kubernetes and VKS release configuration.
  • CNI and CSI versions.
  • Application deployment configuration.
  • Storage classes and policies.
  • Network policies and traffic paths.
  • Monitoring and security integrations.

Use staging to rehearse the supported upgrade process and record any readiness blockers, unexpected disruptions, or performance changes.

Production Environment

Production changes should follow the approved change process.

Before approval, establish that the target release is supported, the application validation plan is complete, dependencies are compatible, and recovery procedures are documented.

The organization may choose to remain one release behind development while validation is completed. That is a governance decision, not a guarantee that the older release remains supported indefinitely.

Retirement and End-of-Support Planning

Release retirement should be planned before the relevant support deadline.

Maintain an inventory of clusters, current versions, application owners, dependencies, and target upgrade dates.

When a version approaches the end of its applicable support window, assess the upgrade path, identify blockers, and agree on an accountable remediation plan.

Do not confuse a release’s presence in the platform with its continuing eligibility for support.

Example Release Governance Workflow

This process makes lifecycle management a controlled operational activity rather than an ad hoc reaction to a new version becoming available.

13. Hands-On Lab

This lab uses Kubernetes inspection commands to record cluster state before, during, and after a planned update.

Important: run the commands against the correct management or workload cluster context. Do not initiate an actual production upgrade simply to complete this lab. Use a supported test environment and follow the VKS-specific lifecycle workflow for the deployed release.

Step 1: Confirm the Cluster Context

Start by verifying the current context:

kubectl config current-context
kubectl config get-contexts

Expected result: the active context corresponds to the intended cluster and administrative environment.

If the context is incorrect, stop and select the correct authorized context before running further commands.

Step 2: Capture the Pre-Upgrade State

Run the commands specified in the original lab outline:

kubectl get nodes
kubectl get pdb -A
kubectl get deployments -A
kubectl get pods -A
kubectl describe cluster <cluster-name>

The first four commands inspect nodes, disruption budgets, Deployments, and pods.

Note about the final command: kubectl describe cluster <cluster-name> works only when the active Kubernetes API exposes a Cluster resource under the expected API mapping and your account has permission to read it. Depending on the VKS management architecture, the cluster resource may instead need to be inspected from the appropriate management context. Check the resource first:

kubectl api-resources | grep -i cluster

If the expected resource is not exposed, use the documented VKS management interface or API for the cluster rather than assuming the command is universally valid.

Record the following:

  • Cluster identity and current Kubernetes version.
  • Node names, versions, and readiness.
  • Desired and available application replicas.
  • Pod readiness and restart counts.
  • Existing PDB configurations and allowed disruptions.
  • Any pre-existing errors or warnings.

Save the outputs as your baseline for comparison.

Step 3: Check Upgrade Readiness

Review whether the cluster is in a suitable state for the planned change.

kubectl get nodes -o wide
kubectl get deployments -A
kubectl get pods -A
kubectl get pdb -A
kubectl get events -A --sort-by=.lastTimestamp

Look for:

  • Nodes that are not Ready.
  • Deployments with unavailable replicas.
  • Pods stuck in Pending.
  • Repeated container restarts.
  • PDBs with zero allowed disruptions.
  • Scheduling failures or storage-related events.

These commands help identify workload-level blockers. They do not establish full platform compatibility; confirm that separately using the supported VKS release and upgrade documentation.

Step 4: Verify the Target Release

Before initiating an upgrade, document:

  • The current cluster release.
  • The intended target release.
  • The target’s availability through the supported VKS workflow.
  • Platform and cluster compatibility.
  • CNI, CSI, and add-on compatibility.
  • The approved upgrade procedure.
  • The application’s acceptance criteria.

Do not substitute a generic Kubernetes upgrade procedure for the VKS-supported lifecycle workflow.

Step 5: Monitor the Upgrade

During an authorized test upgrade, collect the same baseline commands at appropriate intervals:

kubectl get nodes -o wide
kubectl get deployments -A
kubectl get pods -A
kubectl get pdb -A
kubectl get events -A --sort-by=.lastTimestamp

Document:

  • When the update started.
  • Which nodes or components changed.
  • Any temporary readiness issues.
  • Pod evictions or rescheduling.
  • Any PDB-related blockers.
  • Any unexpected application or storage behavior.
  • How long recovery or readiness took, if measured.

Do not infer that no disruption occurred simply because a brief inspection shows all pods running. Compare the observations and application telemetry throughout the change.

Step 6: Validate the Post-Upgrade State

After the supported upgrade workflow reports completion, repeat the baseline inspection.

kubectl get nodes -o wide
kubectl get deployments -A
kubectl get pods -A
kubectl get pdb -A
kubectl get pvc -A

Then validate the relevant application workflows and infrastructure dependencies.

Check:

  • The expected Kubernetes version is running.
  • All required nodes are Ready.
  • Deployments have their intended available replicas.
  • Networking and storage work as expected.
  • Required add-ons are healthy.
  • No new persistent readiness blockers have appeared.
  • Application smoke tests pass.

Step 7: Compare Before, During, and After

Use a results table to make the change auditable.

ObservationBeforeDuringAfter
Cluster versionRecord actual versionRecord observed transitionConfirm intended target
Node readinessRecord baselineRecord temporary changesConfirm expected readiness
Deployment availabilityRecord available replicasRecord disruptionsCompare with baseline
Pod readinessRecord unhealthy podsRecord rescheduling and restartsConfirm recovery
PDB statusRecord allowed disruptionsRecord any blockersConfirm intended state
StorageRecord PVC statusRecord relevant attachment eventsTest required storage access
Application healthRun baseline testsMonitor critical workflowsRepeat smoke tests
Upgrade blockersRecord existing issuesRecord new blockersRecord unresolved issues

Step 8: Document the Outcome

Finish with a concise change report containing:

  • Source and target versions.
  • Platform compatibility checks performed.
  • Start and finish times.
  • Observed node and workload disruptions.
  • Readiness blockers and their resolution.
  • CNI, CSI, and add-on validation results.
  • Application test results.
  • Remaining issues.
  • The final change decision according to the organization’s acceptance criteria.

If a step was not tested, mark it as not tested rather than assuming it passed.

14. Troubleshooting and Common Upgrade Blockers

Upgrade problems are easier to resolve when each symptom is linked to a specific investigation.

SymptomPossible causeWhat to inspect
Target release unavailableRelease not delivered, unsupported configuration, or access issueVKS release availability and prerequisites
Upgrade rejectedUnsupported version transition or incompatible configurationDocumented upgrade path and cluster specification
Upgrade appears stalledController reconciliation issue, unavailable dependency, or readiness blockerCluster status, events, and applicable VKS management logs
Node remains NotReadyNode configuration, networking, runtime, or infrastructure issueNode conditions and platform-specific diagnostics
Pods remain PendingInsufficient capacity, scheduling constraints, or storage requirementsPod events, node resources, affinity, and PVC status
Node drain is blockedPDB or insufficient healthy replicaskubectl get pdb -A and workload health
Networking fails after updateCNI incompatibility or configuration issueCNI health, pod connectivity, and supported compatibility
Volumes fail to attach or mountCSI or storage compatibility issuePVCs, volume events, CSI health, and storage configuration
Application fails despite healthy nodesAPI incompatibility, dependency change, or application regressionApplication logs, API usage, smoke tests, and telemetry
Performance changes after updateResource contention or configuration changesBaseline metrics, CPU, memory, network, and storage latency

Troubleshooting Sequence

When an upgrade does not proceed as expected:

  1. Confirm which lifecycle stage is in progress.
  2. Determine whether the blocker is at the platform, cluster, node, add-on, or application layer.
  3. Inspect the relevant status, events, and logs.
  4. Compare the observed state with the pre-upgrade baseline.
  5. Verify the documented prerequisites and supported remediation.
  6. Make one controlled change at a time.
  7. Revalidate cluster health and application behavior before continuing.

Avoid manually deleting or recreating VKS-managed resources to force an upgrade forward. Use the documented lifecycle controls and recovery procedures for the relevant release.

15. Key Takeaways

  • VCF, Supervisor, VKS service, and Kubernetes cluster lifecycles are related but distinct.
  • VKrs represent platform-managed Kubernetes releases and should not be treated as interchangeable with the VKS service or VCF version.
  • Asynchronous release delivery can separate release availability from broader platform release timing, but it does not remove compatibility requirements.
  • A release being available does not mean that every existing cluster is eligible to upgrade to it.
  • Version compatibility includes control-plane and worker versions, node dependencies, CNI, CSI, add-ons, APIs, and application requirements.
  • PodDisruptionBudgets help govern voluntary disruptions, but they do not guarantee application availability under every failure condition.
  • Rolling node replacement requires adequate capacity, safe workload handling, and validation of replacement nodes.
  • TuneD profiles and performance changes must be supported by the node environment and validated through measurement.
  • Enterprise release governance should document which versions are approved for lab, development, staging, production, and retirement.
  • A reliable upgrade process captures cluster state before, during, and after the change and validates application behavior as well as infrastructure health.

16. What I Learned

Use this section to record what you observed in your own VKS lifecycle lab.

You can discuss how the cluster’s state changed during the upgrade, which readiness checks identified potential blockers, how PDBs affected the planned maintenance, and whether application validation revealed issues that were not visible from the node status alone.

A useful reflection should distinguish between what the documentation predicted and what the lab actually demonstrated. If you have not performed the upgrade, describe the intended validation plan instead of claiming a successful upgrade or zero downtime.

Related Articles