Kubernetes Cluster Upgrade Guide
Introduction
This guide is specifically designed for DevOps and infrastructure teams tasked with managing Kubernetes (K8s) clusters. It offers an in-depth overview of Zeet's process for upgrading K8s clusters, with a special emphasis on the practical elements that contribute to operational efficiency and stability.
Cluster Architecture Overview
A Zeet-managed cluster contains resource from three general categories
Control Plane: The Kubernetes control plane is responsible for managing the cluster and its resources. It typically includes the API server, scheduler, controller manager, and etcd. In Zeet-managed clusters, the control plane is operated by the cloud vendor. Zeet's role is limited to provisioning and configuring the control plane.
Node Group: A node group comprises a set of worker nodes that run containerized applications. Usually, these node groups are not managed by the cloud vendor; they exist within the customer's cloud account. Zeet is tasked with provisioning and managing these node groups.
Cluster Components: Cluster components are additional elements installed on the cluster to enhance its functionality. Examples include ingress controllers, monitoring agents, and logging agents. A more comprehensive list of cluster components can be found in the cluster guide.
Cluster Versioning Overview
This section explains what versions Zeet uses for new clusters and how to customize them. Zeet guarantees that new clusters will always use modern versions, and shares upgrading responsibility with the user.
Default Version Installation
Zeet simplifies Kubernetes cluster provisioning by defaulting to the LTS version that is secure and reliable, as supported by your cloud vendor. The specific version deployed depends on the date of your cluster's creation. Zeet adheres to a structured upgrade schedule in line with LTS releases, keeping customers well-informed for effective planning. This method reduces the complexity of Kubernetes management, allowing you to concentrate on your core activities.
Version Customization Options
For specific version requirements, you can customize your cluster's version by modifying our open-source cluster templates, as detailed in the cluster guide.
Cluster Upgrade Process Overview
Zeet's approach to cluster upgrades balances flexibility with stability. There are three primary methods for upgrading a cluster:
Fully Automated Upgrade: Typically provided by the cloud vendor, this method automatically upgrades the cluster to the latest version. It's the simplest but offers limited control over the process. It's crucial to configure your applications for high availability to minimize impact during the upgrade. This option is preferred by most users, though its availability varies with the cloud vendor.
Automated Upgrade: This widely supported and recommended process involves 'ejecting' various parts of the cluster into Zeet projects. You can then manage the deployment using these projects. Post-ejection, simply modify the version parameters in the project and deploy to upgrade the cluster. Benefits include revision tracking, diff view, and deployment history, inherent to Zeet projects.
Manual Upgrade: For those seeking complete control, manual upgrading allows you to use the cloud vendor's tools to upgrade the cluster. While offering the greatest flexibility, it is also the most complex. This method should only be used if the other two are not viable options.
Component Specific Upgrade Process
The availability of a fully automated upgrade process is contingent upon cloud vendor support and is applicable only to control plane and node group upgrades. For detailed information on configuring the upgrade schedule, please consult the cloud vendor's documentation.
Control Plane Upgrade Process
- Automated Upgrade: Eject the cluster's Terraform template into a Zeet project for managing the control plane upgrade. Modify the Kubernetes version parameter in the project post-ejection, then deploy to upgrade the control plane.
- Manual Upgrade: Update the control plane versions manually via the cloud provider's console. More instructions are available on our Cluster Upgrade Guide
Node Group Upgrade Process
- Automated Upgrade: Similar to the control plane, eject the node group's Terraform template into a Zeet project. Manage the upgrade by modifying the Kubernetes version parameter in the project, then deploy to update the node group.
- Manual Upgrade: Manually update node group versions through the cloud provider's console by adjusting the node group template. More instructions are available on our Cluster Upgrade Guide
Component Upgrade Process
- Automated Upgrade: For components, eject them into Helm or Manifest-based Zeet projects. Manage upgrades by adjusting the component version parameter in the project, then deploy to upgrade the component.
- Manual Upgrade: Update component versions directly using Kubernetes management tools such as kubectl or helm.
Shared Responsibility Model
Navigating cloud infrastructure complexity is best achieved through a shared responsibility model between Zeet and the customer. This approach allows us to deliver optimal service while empowering customers with full control over their infrastructure.
Zeet Responsibilities
- Provision and manage the control plane, node groups, and cluster components.
- Ensure all components in newly provisioned clusters are updated to the latest stable version.
- Provide customers with tools and documentation for effective cluster management.
Customer Responsibilities
- Execute the cluster upgrade process using tools provided by Zeet.
- Review and approve changes occurring during the upgrade process.
Support Options
Understanding the complexities of cluster management, we offer various support levels:
- Basic Support: Includes access to our documentation, support hub, and email support.
- Premium Support: Offers guaranteed SLAs, additional product and technical guidance, and review services.