<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Rke2 on Support Tools</title><link>https://support.tools/categories/rke2/</link><description>Recent content in Rke2 on Support Tools</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Wed, 04 Feb 2026 00:00:00 -0500</lastBuildDate><atom:link href="https://support.tools/categories/rke2/index.xml" rel="self" type="application/rss+xml"/><item><title>Ingress-NGINX Retirement on RKE2: Migrating to Traefik Without Downtime</title><link>https://support.tools/ingress-nginx-retirement-rke2-migrating-traefik-without-downtime/</link><pubDate>Wed, 04 Feb 2026 00:00:00 -0500</pubDate><guid>https://support.tools/ingress-nginx-retirement-rke2-migrating-traefik-without-downtime/</guid><description>&lt;p&gt;The Kubernetes community announced in November 2025 that Ingress-NGINX is being retired. Maintenance halts completely in March 2026 — no more releases, no more bug fixes, no more security patches. If you&amp;rsquo;re running RKE2, which ships ingress-nginx by default, this directly affects you.&lt;/p&gt;&#10;&lt;p&gt;This post walks through the practical side of migrating RKE2 clusters from ingress-nginx to Traefik. The emphasis is on running both controllers side-by-side so you can migrate gradually without taking production offline.&lt;/p&gt;</description></item><item><title>How to Recover Longhorn Volume Data from a Single Replica in RKE2 Kubernetes</title><link>https://support.tools/rke2-longhorn-replica-recovery/</link><pubDate>Fri, 11 Apr 2025 00:00:00 -0500</pubDate><guid>https://support.tools/rke2-longhorn-replica-recovery/</guid><description>&lt;p&gt;When disaster strikes and your entire RKE2 cluster or Longhorn control plane becomes unavailable, you can still &lt;strong&gt;recover critical data from a single Longhorn volume replica&lt;/strong&gt; using a static pod definition. This emergency recovery method works even when the Kubernetes API server is completely offline and Docker is not available on your RKE2 nodes.&lt;/p&gt;</description></item><item><title>Running RKE2 Ingress-NGINX with an External LoadBalancer</title><link>https://support.tools/rke2-ingress-nginx-external-lb/</link><pubDate>Thu, 10 Apr 2025 00:00:00 -0500</pubDate><guid>https://support.tools/rke2-ingress-nginx-external-lb/</guid><description>&lt;p&gt;This article provides step-by-step guidance for configuring RKE2’s built-in &lt;code&gt;ingress-nginx&lt;/code&gt; controller to run behind an external LoadBalancer. It supports environments like AWS, GCP, Azure, and MetalLB, and replaces the default hostNetwork + DaemonSet configuration with a Deployment and LoadBalancer service.&lt;/p&gt;</description></item><item><title>RKE2 the Hard Way: Part 1 – Introduction and Prerequisites for Building a Kubernetes Cluster</title><link>https://support.tools/training/rke2-hard-way/01-introduction-prerequisites/</link><pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate><guid>https://support.tools/training/rke2-hard-way/01-introduction-prerequisites/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;Welcome to the &lt;strong&gt;&amp;ldquo;RKE2 the Hard Way&amp;rdquo;&lt;/strong&gt; training series! In this series, we’ll embark on a journey to build a Kubernetes cluster from scratch—mimicking the robust features of Rancher Kubernetes Engine 2 (RKE2)—without relying on any distribution-specific tools or installers.&lt;/p&gt;&#10;&lt;p&gt;It&amp;rsquo;s called the &lt;em&gt;&amp;ldquo;hard way&amp;rdquo;&lt;/em&gt; because we&amp;rsquo;ll manually configure and set up each component of the Kubernetes cluster. This approach is designed to provide a deep understanding of how Kubernetes works under the hood and to highlight the automation and simplification RKE2 provides.&lt;/p&gt;</description></item><item><title>RKE2 the Hard Way: Part 10 – Installing Ingress Nginx</title><link>https://support.tools/training/rke2-hard-way/10-installing-ingress-nginx/</link><pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate><guid>https://support.tools/training/rke2-hard-way/10-installing-ingress-nginx/</guid><description>&lt;h2 id="part-10--installing-ingress-nginx"&gt;Part 10 – Installing Ingress Nginx&lt;/h2&gt;&#10;&lt;p&gt;In this part of the &lt;strong&gt;&amp;ldquo;RKE2 the Hard Way&amp;rdquo;&lt;/strong&gt; training series, we will install and configure &lt;strong&gt;Ingress Nginx&lt;/strong&gt; for external access to services in our Kubernetes cluster. Ingress Nginx is a popular ingress controller for Kubernetes that uses NGINX as a reverse proxy and load balancer.&lt;/p&gt;&#10;&lt;p&gt;An ingress controller is essential because it:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Provides a single entry point to multiple services in your cluster&lt;/li&gt;&#10;&lt;li&gt;Handles SSL/TLS termination for your services&lt;/li&gt;&#10;&lt;li&gt;Enables host-based and path-based routing to backend services&lt;/li&gt;&#10;&lt;li&gt;Allows you to expose applications to the outside world without creating a LoadBalancer service for each one&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;At this point in our series, we have:&lt;/p&gt;</description></item><item><title>RKE2 the Hard Way: Part 11 – Cluster Verification and Access</title><link>https://support.tools/training/rke2-hard-way/11-cluster-verification-and-access/</link><pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate><guid>https://support.tools/training/rke2-hard-way/11-cluster-verification-and-access/</guid><description>&lt;h2 id="part-11--cluster-verification-and-access"&gt;Part 11 – Cluster Verification and Access&lt;/h2&gt;&#10;&lt;p&gt;Congratulations! You&amp;rsquo;ve reached the final part of the &lt;strong&gt;&amp;ldquo;RKE2 the Hard Way&amp;rdquo;&lt;/strong&gt; training series. At this point, we have:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Set up containerd and kubelet on all nodes&lt;/li&gt;&#10;&lt;li&gt;Generated all the necessary TLS certificates&lt;/li&gt;&#10;&lt;li&gt;Deployed etcd, kube-apiserver, kube-controller-manager, and kube-scheduler as static pods&lt;/li&gt;&#10;&lt;li&gt;Configured kubelet and kube-proxy on worker nodes&lt;/li&gt;&#10;&lt;li&gt;Installed Cilium CNI for pod networking&lt;/li&gt;&#10;&lt;li&gt;Deployed CoreDNS for cluster DNS resolution&lt;/li&gt;&#10;&lt;li&gt;Installed Ingress Nginx for external access&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Now, let&amp;rsquo;s verify that everything is working correctly and set up kubectl for convenient cluster access.&lt;/p&gt;</description></item><item><title>RKE2 the Hard Way: Part 2 – Certificate Authority and TLS Certificates</title><link>https://support.tools/training/rke2-hard-way/02-certificate-authority-tls-certificates/</link><pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate><guid>https://support.tools/training/rke2-hard-way/02-certificate-authority-tls-certificates/</guid><description>&lt;h2 id="part-2--certificate-authority-and-tls-certificates"&gt;Part 2 – Certificate Authority and TLS Certificates&lt;/h2&gt;&#10;&lt;p&gt;In this part of the &lt;strong&gt;&amp;ldquo;RKE2 the Hard Way&amp;rdquo;&lt;/strong&gt; training series, we will set up our own &lt;strong&gt;Certificate Authority (CA)&lt;/strong&gt; and generate the necessary &lt;strong&gt;TLS certificates&lt;/strong&gt; for securing our Kubernetes cluster. Kubernetes components communicate over TLS, and properly configured certificates are crucial for cluster security.&lt;/p&gt;&#10;&lt;p&gt;We&amp;rsquo;ll use &lt;a href="https://github.com/cloudflare/cfssl"&gt;&lt;code&gt;cfssl&lt;/code&gt;&lt;/a&gt;, Cloudflare&amp;rsquo;s TLS toolkit, to create our CA and generate certificates.&lt;/p&gt;&#10;&lt;blockquote&gt;&lt;p&gt;✅ &lt;strong&gt;Assumption:&lt;/strong&gt; All commands in this guide are run from &lt;code&gt;node01&lt;/code&gt;, which is a Linux box.&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>RKE2 the Hard Way: Part 3 – Setting up containerd and kubelet</title><link>https://support.tools/training/rke2-hard-way/03-setting-up-containerd-and-kubelet/</link><pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate><guid>https://support.tools/training/rke2-hard-way/03-setting-up-containerd-and-kubelet/</guid><description>&lt;h2 id="part-3--setting-up-containerd-and-kubelet"&gt;Part 3 – Setting up containerd and kubelet&lt;/h2&gt;&#10;&lt;p&gt;In this part of the &lt;strong&gt;&amp;ldquo;RKE2 the Hard Way&amp;rdquo;&lt;/strong&gt; training series, we will install and configure &lt;strong&gt;containerd&lt;/strong&gt; (the container runtime) and &lt;strong&gt;kubelet&lt;/strong&gt; (the Kubernetes node agent) on all our nodes. These components form the foundation of our Kubernetes cluster.&lt;/p&gt;&#10;&lt;p&gt;One of the key design decisions in RKE2 is to run the Kubernetes control plane components (etcd, kube-apiserver, kube-controller-manager, and kube-scheduler) as static pods managed by kubelet, rather than as systemd services. This approach simplifies deployment and maintenance, as kubelet manages the lifecycle of these critical components.&lt;/p&gt;</description></item><item><title>RKE2 the Hard Way: Part 4 – Setting up etcd Cluster as Static Pods</title><link>https://support.tools/training/rke2-hard-way/04-setting-up-etcd-cluster/</link><pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate><guid>https://support.tools/training/rke2-hard-way/04-setting-up-etcd-cluster/</guid><description>&lt;h2 id="part-4--setting-up-etcd-cluster-as-static-pods"&gt;Part 4 – Setting up etcd Cluster as Static Pods&lt;/h2&gt;&#10;&lt;p&gt;In this part of the &lt;strong&gt;&amp;ldquo;RKE2 the Hard Way&amp;rdquo;&lt;/strong&gt; training series, we will set up &lt;strong&gt;etcd&lt;/strong&gt; as a clustered key-value store using &lt;strong&gt;static pods&lt;/strong&gt; managed by kubelet. etcd is a consistent and highly-available key-value store used by Kubernetes to store all cluster data, including the state of the cluster, configuration data, and metadata.&lt;/p&gt;&#10;&lt;p&gt;In RKE2, etcd is deployed as a static pod managed by kubelet, instead of running directly as a systemd service. This makes it easier to manage, as kubelet handles lifecycle operations, restarts, and monitoring.&lt;/p&gt;</description></item><item><title>RKE2 the Hard Way: Part 5 – Setting up kube-apiserver as Static Pods</title><link>https://support.tools/training/rke2-hard-way/05-setting-up-kube-apiserver/</link><pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate><guid>https://support.tools/training/rke2-hard-way/05-setting-up-kube-apiserver/</guid><description>&lt;h2 id="part-5--setting-up-kube-apiserver-as-static-pods"&gt;Part 5 – Setting up kube-apiserver as Static Pods&lt;/h2&gt;&#10;&lt;p&gt;In this part of the &lt;strong&gt;&amp;ldquo;RKE2 the Hard Way&amp;rdquo;&lt;/strong&gt; training series, we will set up the &lt;strong&gt;Kubernetes API Server&lt;/strong&gt; (&lt;code&gt;kube-apiserver&lt;/code&gt;) as static pods managed by kubelet on each of our nodes. The API server is the central component of the Kubernetes control plane that exposes the Kubernetes API.&lt;/p&gt;&#10;&lt;p&gt;Using static pods for the API server is a key design principle in RKE2. This approach simplifies deployment and management, as kubelet will automatically start the API server and ensure it stays running. If an API server instance fails, kubelet will automatically restart it.&lt;/p&gt;</description></item><item><title>RKE2 the Hard Way: Part 6 – Setting up kube-controller-manager and kube-scheduler as Static Pods</title><link>https://support.tools/training/rke2-hard-way/06-setting-up-kube-controller-manager-and-kube-scheduler/</link><pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate><guid>https://support.tools/training/rke2-hard-way/06-setting-up-kube-controller-manager-and-kube-scheduler/</guid><description>&lt;h2 id="part-6--setting-up-kube-controller-manager-and-kube-scheduler-as-static-pods"&gt;Part 6 – Setting up kube-controller-manager and kube-scheduler as Static Pods&lt;/h2&gt;&#10;&lt;p&gt;In this part of the &lt;strong&gt;&amp;ldquo;RKE2 the Hard Way&amp;rdquo;&lt;/strong&gt; training series, we will set up the &lt;strong&gt;Kubernetes Controller Manager&lt;/strong&gt; (&lt;code&gt;kube-controller-manager&lt;/code&gt;) and &lt;strong&gt;Scheduler&lt;/strong&gt; (&lt;code&gt;kube-scheduler&lt;/code&gt;) as static pods managed by kubelet on each of our nodes.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;The Controller Manager runs controller processes that regulate the state of the cluster (such as replication controllers, node controllers, and service account controllers)&lt;/li&gt;&#10;&lt;li&gt;The Scheduler is responsible for watching for newly created pods and assigning them to nodes&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Using static pods for these components is a key design principle in RKE2, just like we did for etcd and kube-apiserver. This approach ensures high availability and automatic recovery in case of failures.&lt;/p&gt;</description></item><item><title>RKE2 the Hard Way: Part 7 – Setting up kubelet and kube-proxy on Worker Nodes</title><link>https://support.tools/training/rke2-hard-way/07-setting-up-kubelet-and-kube-proxy/</link><pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate><guid>https://support.tools/training/rke2-hard-way/07-setting-up-kubelet-and-kube-proxy/</guid><description>&lt;h2 id="part-7--setting-up-kubelet-and-kube-proxy-on-worker-nodes"&gt;Part 7 – Setting up kubelet and kube-proxy on Worker Nodes&lt;/h2&gt;&#10;&lt;p&gt;In this part of the &lt;strong&gt;&amp;ldquo;RKE2 the Hard Way&amp;rdquo;&lt;/strong&gt; training series, we will configure &lt;strong&gt;kubelet&lt;/strong&gt; to register with the Kubernetes API server and set up &lt;strong&gt;kube-proxy&lt;/strong&gt; on our nodes. We already installed containerd and kubelet in &lt;a href="https://support.tools/training/rke2-hard-way/03-setting-up-containerd-and-kubelet/"&gt;Part 3&lt;/a&gt;, but now we need to finalize their configuration to connect to our Kubernetes control plane.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;kubelet&lt;/strong&gt; is the primary node agent that runs on each node. It ensures containers are running in a Pod and healthy.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;kube-proxy&lt;/strong&gt; maintains network rules on nodes. These network rules allow network communication to your Pods from inside or outside of your cluster.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;blockquote&gt;&lt;p&gt;✅ &lt;strong&gt;Note:&lt;/strong&gt; In our setup, all nodes (node01, node02, node03) are both control plane and worker nodes. This is common for smaller clusters and provides high availability without needing separate worker nodes.&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>RKE2 the Hard Way: Part 8 – Installing Cilium CNI</title><link>https://support.tools/training/rke2-hard-way/08-installing-cilium-cni/</link><pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate><guid>https://support.tools/training/rke2-hard-way/08-installing-cilium-cni/</guid><description>&lt;h2 id="part-8--installing-cilium-cni"&gt;Part 8 – Installing Cilium CNI&lt;/h2&gt;&#10;&lt;p&gt;In this part of the &lt;strong&gt;&amp;ldquo;RKE2 the Hard Way&amp;rdquo;&lt;/strong&gt; training series, we will install and configure the &lt;strong&gt;Cilium CNI&lt;/strong&gt; (Container Network Interface). Cilium is a powerful, open-source CNI solution that provides advanced networking, security, and observability features for Kubernetes clusters.&lt;/p&gt;&#10;&lt;p&gt;At this point in our tutorial series, we have:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Set up all the core Kubernetes components (etcd, kube-apiserver, kube-controller-manager, kube-scheduler)&lt;/li&gt;&#10;&lt;li&gt;Configured kubelet and kube-proxy on our nodes&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;However, our cluster network is not yet functional for pod-to-pod communication. The CNI plugin is essential for implementing the Kubernetes networking model, which requires that:&lt;/p&gt;</description></item><item><title>RKE2 the Hard Way: Part 9 – Installing CoreDNS</title><link>https://support.tools/training/rke2-hard-way/09-installing-coredns/</link><pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate><guid>https://support.tools/training/rke2-hard-way/09-installing-coredns/</guid><description>&lt;h2 id="part-9--installing-coredns"&gt;Part 9 – Installing CoreDNS&lt;/h2&gt;&#10;&lt;p&gt;In this part of the &lt;strong&gt;&amp;ldquo;RKE2 the Hard Way&amp;rdquo;&lt;/strong&gt; training series, we will install and configure &lt;strong&gt;CoreDNS&lt;/strong&gt; for Kubernetes cluster DNS resolution. CoreDNS is a flexible, extensible DNS server that serves as the cluster DNS provider in Kubernetes, allowing service discovery by DNS name.&lt;/p&gt;&#10;&lt;p&gt;DNS resolution is critical in a Kubernetes cluster because:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;It enables services to be discovered by their names rather than IP addresses&lt;/li&gt;&#10;&lt;li&gt;It allows pods to find and communicate with other pods and services&lt;/li&gt;&#10;&lt;li&gt;It provides a stable naming scheme even when IPs change due to pod rescheduling&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;blockquote&gt;&lt;p&gt;✅ &lt;strong&gt;Note:&lt;/strong&gt; We already configured kubelet in &lt;a href="https://support.tools/training/rke2-hard-way/07-setting-up-kubelet-and-kube-proxy/"&gt;Part 7&lt;/a&gt; to use 10.43.0.10 as the DNS server, which is the IP we&amp;rsquo;ll use for the CoreDNS service.&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Setting Up Equinix Metal Cloud Provider for RKE2</title><link>https://support.tools/training/rke2/equinix-metal-cloud-provider-rke2/</link><pubDate>Wed, 29 Jan 2025 00:00:00 +0000</pubDate><guid>https://support.tools/training/rke2/equinix-metal-cloud-provider-rke2/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;Equinix Metal (formerly Packet) provides bare-metal cloud infrastructure for running Kubernetes. RKE2 supports Equinix Metal as an &lt;strong&gt;out-of-tree&lt;/strong&gt; cloud provider, enabling integration with MetalLB for LoadBalancer services and CSI drivers for persistent storage.&lt;/p&gt;&#10;&lt;p&gt;This guide walks you through setting up the Equinix Metal Cloud Provider in RKE2.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;An active Equinix Metal account&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;A running RKE2 cluster&lt;/strong&gt; deployed on Equinix Metal&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Equinix Metal API Key&lt;/strong&gt; for authentication&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;kubectl configured&lt;/strong&gt; to interact with your cluster&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Helm installed&lt;/strong&gt; for deploying the cloud provider&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="step-1-generate-equinix-metal-api-key"&gt;Step 1: Generate Equinix Metal API Key&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Log in to the Equinix Metal Console.&lt;/li&gt;&#10;&lt;li&gt;Navigate to &lt;strong&gt;API Keys&lt;/strong&gt;.&lt;/li&gt;&#10;&lt;li&gt;Generate a &lt;strong&gt;read-write API key&lt;/strong&gt; for Kubernetes integration.&lt;/li&gt;&#10;&lt;li&gt;Store this key securely, as it will be required for configuring the cloud provider.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="step-2-configure-the-cloud-provider"&gt;Step 2: Configure the Cloud Provider&lt;/h2&gt;&#10;&lt;p&gt;The Equinix Metal Cloud Provider requires a configuration file (&lt;code&gt;cloud-provider-config&lt;/code&gt;) to be stored as a Kubernetes Secret.&lt;/p&gt;</description></item><item><title>Ingress-NGINX for RKE2: Overview, Troubleshooting, and Common Configurations</title><link>https://support.tools/rke2-ingress-nginx/</link><pubDate>Wed, 22 Jan 2025 00:00:00 -0500</pubDate><guid>https://support.tools/rke2-ingress-nginx/</guid><description>&lt;p&gt;RKE2&amp;rsquo;s Ingress-NGINX controller is a powerful solution for managing incoming HTTP and HTTPS traffic in Kubernetes clusters. This guide explores its architecture, troubleshooting techniques, common configurations, and practical examples.&lt;/p&gt;</description></item><item><title>KubeBackup: Automating Kubernetes Cluster Backups</title><link>https://support.tools/kubebackup/</link><pubDate>Sat, 19 Oct 2024 19:26:00 -0500</pubDate><guid>https://support.tools/kubebackup/</guid><description>&lt;p&gt;&lt;img src="https://github.com/mattmattox/kubebackup/raw/master/assets/kubebackup-logo.png" alt="KubeBackup Logo"&gt;&lt;/p&gt;&#10;&lt;p&gt;Backing up your Kubernetes cluster is critical for disaster recovery and operational continuity. &lt;strong&gt;KubeBackup&lt;/strong&gt; is a tool designed to simplify cluster backups by &lt;strong&gt;exporting YAML configurations&lt;/strong&gt; and &lt;strong&gt;uploading them to an S3 bucket&lt;/strong&gt;. With KubeBackup, you can automate backups, ensuring you have all necessary data to redeploy or restore your cluster quickly.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/mattmattox/kubebackup/actions/workflows/build-and-publish.yml"&gt;&lt;img src="https://github.com/mattmattox/kubebackup/actions/workflows/build-and-publish.yml/badge.svg" alt="Build, Test and Publish"&gt;&lt;/a&gt;&lt;br&gt;&#10;&lt;a href="https://goreportcard.com/report/github.com/mattmattox/kubebackup"&gt;&lt;img src="https://goreportcard.com/badge/github.com/mattmattox/kubebackup" alt="Go Report Card"&gt;&lt;/a&gt;&lt;br&gt;&#10;&lt;a href="https://hub.docker.com/r/cube8021/kubebackup"&gt;&lt;img src="https://img.shields.io/docker/pulls/cube8021/kubebackup.svg" alt="Docker Pulls"&gt;&lt;/a&gt;&lt;br&gt;&#10;&lt;a href="https://github.com/mattmattox/kubebackup/releases"&gt;&lt;img src="https://img.shields.io/github/v/release/mattmattox/kubebackup" alt="GitHub release (latest by date)"&gt;&lt;/a&gt;&lt;br&gt;&#10;&lt;a href="https://github.com/mattmattox/kubebackup/blob/master/LICENSE"&gt;&lt;img src="https://img.shields.io/github/license/mattmattox/kubebackup" alt="License"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Fixing Argo CD Out-of-Sync Due to Cilium Identity on RKE2</title><link>https://support.tools/cilium-identity-argo-out-of-sync-rke2/</link><pubDate>Tue, 15 Oct 2024 11:30:00 -0500</pubDate><guid>https://support.tools/cilium-identity-argo-out-of-sync-rke2/</guid><description>&lt;h2 id="fixing-argo-cd-out-of-sync-due-to-cilium-identity-on-rke2"&gt;Fixing Argo CD Out-of-Sync Due to Cilium Identity on RKE2&lt;/h2&gt;&#10;&lt;p&gt;If you&amp;rsquo;re running a Kubernetes cluster with RKE2 and Cilium as your networking solution, you might encounter a situation where Argo CD shows an out-of-sync status due to the presence of &lt;strong&gt;CiliumIdentity&lt;/strong&gt; resources. Although the actual application is in sync and functioning normally, this false out-of-sync status can be frustrating to see in your CI/CD workflows.&lt;/p&gt;</description></item><item><title>Monitor Etcd Cluster with Grafana and Prometheus in RKE2</title><link>https://support.tools/monitor-etcd-cluster-grafana-prometheus-rke2/</link><pubDate>Tue, 17 Sep 2024 19:26:00 -0500</pubDate><guid>https://support.tools/monitor-etcd-cluster-grafana-prometheus-rke2/</guid><description>&lt;p&gt;Monitoring your Etcd cluster is critical to ensure the health of your Kubernetes infrastructure, especially in an RKE2 environment. In this post, we’ll explore how to monitor an Etcd cluster using Grafana and Prometheus, giving you real-time insights and alerting capabilities to prevent issues before they impact your cluster’s availability.&lt;/p&gt;</description></item><item><title>Configuring Kube-apiserver Audit Logs in RKE2</title><link>https://support.tools/rke2-kube-apiserver-audit-logs-configuration/</link><pubDate>Wed, 11 Sep 2024 03:26:00 -0500</pubDate><guid>https://support.tools/rke2-kube-apiserver-audit-logs-configuration/</guid><description>&lt;p&gt;Audit logs in Kubernetes are vital in monitoring and securing your cluster. They help you track API requests, identify configuration changes, and trace actions to their source. In RKE2 (Rancher Kubernetes Engine 2), you can configure &lt;strong&gt;kube-apiserver audit logs&lt;/strong&gt; to capture high-level and detailed information about what happens in your cluster.&lt;/p&gt;&#10;&lt;p&gt;In this post, we&amp;rsquo;ll walk through how to set up basic and detailed audit logging for the kube-apiserver in RKE2, providing examples to help you monitor API activities effectively.&lt;/p&gt;</description></item><item><title>Running RKE2 Clusters on-top Harvester Using the Cloud Provider and Rancher</title><link>https://support.tools/post/harvester-cloud-provider/</link><pubDate>Wed, 14 Feb 2024 10:00:00 -0500</pubDate><guid>https://support.tools/post/harvester-cloud-provider/</guid><description>&lt;p&gt;Learn how to seamlessly integrate RKE2 clusters with Harvester&amp;rsquo;s infrastructure capabilities using the Harvester cloud provider. This workshop guide covers the entire process from initial setup to cluster deployment and configuration.&lt;/p&gt;</description></item><item><title>Monitoring RKE2 Certs with x509-certificate-exporter</title><link>https://support.tools/post/x509-certificate-exporter/</link><pubDate>Thu, 08 Feb 2024 03:24:00 -0500</pubDate><guid>https://support.tools/post/x509-certificate-exporter/</guid><description>&lt;p&gt;Monitoring SSL/TLS certificate validity is crucial to maintaining the security and reliability of any Kubernetes cluster. For Rancher Kubernetes Engine (RKE2) clusters, tracking certificate expiration helps prevent unexpected outages and ensures your applications run smoothly.&lt;/p&gt;&#10;&lt;p&gt;In this post, we&amp;rsquo;ll guide you through deploying the &lt;strong&gt;x509-certificate-exporter&lt;/strong&gt; using Helm to monitor your RKE2 certificates effectively. We&amp;rsquo;ll also demonstrate how to monitor the expiration of TLS secrets stored as Kubernetes secrets, including cert-manager and imported certificates.&lt;/p&gt;</description></item><item><title>Rancher Monitoring v2 Workshop: Comprehensive Guide</title><link>https://support.tools/post/rancher-monitoring-v2/</link><pubDate>Wed, 10 Jan 2024 09:00:00 -0500</pubDate><guid>https://support.tools/post/rancher-monitoring-v2/</guid><description>&lt;h2 id="rancher-monitoring-v2-workshop"&gt;Rancher Monitoring v2 Workshop&lt;/h2&gt;&#10;&lt;p&gt;Welcome to the Rancher Monitoring v2 Workshop! This workshop is designed to provide a comprehensive guide to deploying, managing, and troubleshooting Rancher Monitoring v2 in Kubernetes environments.&lt;/p&gt;&#10;&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;p&gt;Rancher Monitoring v2 offers advanced monitoring capabilities for Kubernetes clusters managed by Rancher. It is a powerful tool that integrates Prometheus, Grafana, and other monitoring components to provide deep insights into the health and performance of clusters.&lt;/p&gt;&#10;&lt;h3 id="goals-of-the-workshop"&gt;Goals of the Workshop&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Understanding the architecture of Rancher Monitoring v2&lt;/li&gt;&#10;&lt;li&gt;Learning how to deploy and configure Rancher Monitoring v2&lt;/li&gt;&#10;&lt;li&gt;Best practices for monitoring Kubernetes clusters&lt;/li&gt;&#10;&lt;li&gt;Troubleshooting common issues in Rancher Monitoring v2&lt;/li&gt;&#10;&lt;li&gt;Hands-on experience with Rancher Monitoring v2&lt;/li&gt;&#10;&lt;li&gt;Setting up alerts and notifications&lt;/li&gt;&#10;&lt;li&gt;Setting up ingress for Grafana and Prometheus&lt;/li&gt;&#10;&lt;li&gt;Setting up Grafana dashboards&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>RKE2 with Rancher - Disaster Recovery Guide</title><link>https://support.tools/post/rke2-with-rancher-disaster-recovery/</link><pubDate>Wed, 18 Oct 2023 01:15:00 -0600</pubDate><guid>https://support.tools/post/rke2-with-rancher-disaster-recovery/</guid><description>&lt;h2 id="rke2-with-rancher---disaster-recovery-guide"&gt;RKE2 with Rancher - Disaster Recovery Guide&lt;/h2&gt;&#10;&lt;h3 id="introduction"&gt;Introduction&lt;/h3&gt;&#10;&lt;p&gt;The purpose of this guide is to provide a comprehensive guide for disaster recovery of RKE2 clusters managed by Rancher. RKE2, a CNCF-certified Kubernetes distribution, is a fully conformant Kubernetes distribution focusing on security and simplicity. Rancher is a CNCF-certified Kubernetes management platform that provides a single pane of glass for managing multiple Kubernetes clusters. Rancher can manage RKE2 clusters and other Kubernetes distributions such as RKE, EKS, AKS, GKE, and more.&lt;/p&gt;&#10;&lt;p&gt;Please note that this guide is intended to be something other than a replacement for the official documentation. This guide is designed to supplement the official documentation and provide a comprehensive guide for disaster recovery of RKE2 clusters that Rancher manages. This guide also assumes a basic understanding of Kubernetes, RKE2, and Rancher.&lt;/p&gt;</description></item><item><title>RKE2 Standalone - Disaster Recovery Guide</title><link>https://support.tools/post/rke2-standalone-disaster-recovery/</link><pubDate>Wed, 11 Oct 2023 00:00:00 -0600</pubDate><guid>https://support.tools/post/rke2-standalone-disaster-recovery/</guid><description>&lt;h2 id="rke2-standalone---disaster-recovery-guide"&gt;RKE2 Standalone - Disaster Recovery Guide&lt;/h2&gt;&#10;&lt;h3 id="introduction"&gt;Introduction&lt;/h3&gt;&#10;&lt;p&gt;The purpose of this guide is to provide comprehensive instructions for recovering a standalone RKE2 cluster that Rancher does not manage. RKE2, a lightweight Kubernetes distribution, is a robust solution, but disasters can happen. In this guide, we&amp;rsquo;ll address common scenarios like recovering after etcd quorum loss, restoring a cluster from a backup, and troubleshooting issues when nodes cannot join the cluster.&lt;/p&gt;&#10;&lt;p&gt;Please note that this guide assumes a basic familiarity with RKE2 and Kubernetes concepts. If you encounter any challenges or have questions, please ask for assistance.&lt;/p&gt;</description></item><item><title>RKE2: A Deep Dive into CNI options</title><link>https://support.tools/post/rke2-cni-deepdive/</link><pubDate>Tue, 08 Nov 2022 01:30:00 -0500</pubDate><guid>https://support.tools/post/rke2-cni-deepdive/</guid><description>&lt;h2 id="table-of-contents"&gt;Table of Contents&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#rke2s-cni-options-canal-cilium-calico-and-multus"&gt;RKE2&amp;rsquo;s CNI Options: Canal, Cilium, Calico, and Multus&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#canal-the-best-of-flannel-and-calico"&gt;Canal: The Best of Flannel and Calico&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#canal-key-features"&gt;Canal Key Features&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#cilium-advanced-security-with-ebpf"&gt;Cilium: Advanced Security with eBPF&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#cilium-key-features"&gt;Cilium Key Features&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#calico-fine-grained-network-policies"&gt;Calico: Fine-Grained Network Policies&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#calico-key-features"&gt;Calico Key Features&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#multus-the-multi-network-swiss-army-knife"&gt;Multus: The Multi-Network Swiss Army Knife&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#multus-key-features"&gt;Multus Key Features&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>RKE2: A Deep Dive into Rancher's Kubernetes Distribution</title><link>https://support.tools/post/rke2-deepdive/</link><pubDate>Mon, 24 Oct 2022 21:01:00 -0500</pubDate><guid>https://support.tools/post/rke2-deepdive/</guid><description/></item><item><title>service rancher-monitoring-operator not found</title><link>https://support.tools/post/rancher-monitoring-operator/</link><pubDate>Thu, 29 Sep 2022 00:51:00 -0500</pubDate><guid>https://support.tools/post/rancher-monitoring-operator/</guid><description>&lt;p&gt;Error:&lt;/p&gt;&#10;&lt;div class="code-block" data-copy-label="Copy code, block 1"&gt;&#10; &lt;div class="code-block-header" data-pagefind-ignore&gt;&lt;/div&gt;&#10; &lt;pre tabindex="0"&gt;&lt;code&gt;Error: Internal error occurred: failed calling webhook &amp;#34;prometheusrulemutate.monitoring.coreos.com&amp;#34;: failed to call webhook: Post &amp;#34;https://rancher-monitoring-operator.cattle-monitoring-system.svc:443/admission-prometheusrules/mutate?timeout=10s&amp;#34;: service &amp;#34;rancher-monitoring-operator&amp;#34; not found&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;This error can be caused by a number of different issues. But first we need to understand what this error means.&lt;/p&gt;&#10;&lt;p&gt;The TLDR is that the webhook is not available. The webhook is a service that is used to validate and mutate resources. In this case, the webhook is used to validate and mutate PrometheusRule resources.&lt;/p&gt;</description></item><item><title>Harbor Redis Crashlooping</title><link>https://support.tools/post/harbor-redis-crashlooping/</link><pubDate>Tue, 12 Jul 2022 18:21:00 -0500</pubDate><guid>https://support.tools/post/harbor-redis-crashlooping/</guid><description>&lt;p&gt;My Harbor server went offline when I patched one of my RKE2 clusters, which caused pods to go into ImagePullBackoff. Within a few minutes, I noticed that Redis was crashlooping with the following error:&lt;/p&gt;&#10;&lt;div class="code-block" data-copy-label="Copy bash code, block 1"&gt;&#10; &lt;div class="code-block-header" data-pagefind-ignore&gt;&lt;span class="code-block-lang"&gt;bash&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mmattox@a1ubthorp01:~/$ kubectl -n harbor logs -f harbor-redis-0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1:C &lt;span class="m"&gt;12&lt;/span&gt; Jul &lt;span class="m"&gt;2022&lt;/span&gt; 23:15:36.208 &lt;span class="c1"&gt;# oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1:C &lt;span class="m"&gt;12&lt;/span&gt; Jul &lt;span class="m"&gt;2022&lt;/span&gt; 23:15:36.208 &lt;span class="c1"&gt;# Redis version=6.0.16, bits=64, commit=00000000, modified=0, pid=1, just started&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1:C &lt;span class="m"&gt;12&lt;/span&gt; Jul &lt;span class="m"&gt;2022&lt;/span&gt; 23:15:36.208 &lt;span class="c1"&gt;# Configuration loaded&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; _._ &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; _.-&lt;span class="sb"&gt;``&lt;/span&gt;__ &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;-._ &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; _.-&lt;span class="sb"&gt;``&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;. &lt;span class="sb"&gt;`&lt;/span&gt;_. &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;-._ Redis 6.0.16 &lt;span class="o"&gt;(&lt;/span&gt;00000000/0&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="m"&gt;64&lt;/span&gt; bit&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .-&lt;span class="sb"&gt;``&lt;/span&gt; .-&lt;span class="sb"&gt;```&lt;/span&gt;. &lt;span class="sb"&gt;```&lt;/span&gt;&lt;span class="se"&gt;\/&lt;/span&gt; _.,_ &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;-._ &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39; , .-` | `, ) Running in standalone mode&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; |`-._`-...-` __...-.``-._|&amp;#39;&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt; _.-&lt;span class="s1"&gt;&amp;#39;| Port: 6379&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; | `-._ `._ / _.-&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; PID: &lt;span class="m"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="sb"&gt;`&lt;/span&gt;-._ &lt;span class="sb"&gt;`&lt;/span&gt;-._ &lt;span class="sb"&gt;`&lt;/span&gt;-./ _.-&lt;span class="s1"&gt;&amp;#39; _.-&amp;#39;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;-._&lt;span class="sb"&gt;`&lt;/span&gt;-._ &lt;span class="sb"&gt;`&lt;/span&gt;-.__.-&lt;span class="s1"&gt;&amp;#39; _.-&amp;#39;&lt;/span&gt;_.-&lt;span class="s1"&gt;&amp;#39;| &#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; | `-._`-._ _.-&amp;#39;&lt;/span&gt;_.-&lt;span class="s1"&gt;&amp;#39; | http://redis.io &#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; `-._ `-._`-.__.-&amp;#39;&lt;/span&gt;_.-&lt;span class="s1"&gt;&amp;#39; _.-&amp;#39;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;-._&lt;span class="sb"&gt;`&lt;/span&gt;-._ &lt;span class="sb"&gt;`&lt;/span&gt;-.__.-&lt;span class="s1"&gt;&amp;#39; _.-&amp;#39;&lt;/span&gt;_.-&lt;span class="s1"&gt;&amp;#39;| &#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; | `-._`-._ _.-&amp;#39;&lt;/span&gt;_.-&lt;span class="s1"&gt;&amp;#39; | &#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; `-._ `-._`-.__.-&amp;#39;&lt;/span&gt;_.-&lt;span class="s1"&gt;&amp;#39; _.-&amp;#39;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="sb"&gt;`&lt;/span&gt;-._ &lt;span class="sb"&gt;`&lt;/span&gt;-.__.-&lt;span class="s1"&gt;&amp;#39; _.-&amp;#39;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="sb"&gt;`&lt;/span&gt;-._ _.-&lt;span class="s1"&gt;&amp;#39; &#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; `-.__.-&amp;#39;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1:M &lt;span class="m"&gt;12&lt;/span&gt; Jul &lt;span class="m"&gt;2022&lt;/span&gt; 23:15:36.210 &lt;span class="c1"&gt;# Server initialized&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1:M &lt;span class="m"&gt;12&lt;/span&gt; Jul &lt;span class="m"&gt;2022&lt;/span&gt; 23:15:36.210 &lt;span class="c1"&gt;# Can&amp;#39;t handle RDB format version 10&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1:M &lt;span class="m"&gt;12&lt;/span&gt; Jul &lt;span class="m"&gt;2022&lt;/span&gt; 23:15:36.210 &lt;span class="c1"&gt;# Fatal error loading the DB: Invalid argument. Exiting.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mmattox@a1ubthorp01:~/$&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;</description></item><item><title>How to install system-upgrade-controller for RKE2</title><link>https://support.tools/post/how-to-install-system-upgrade-controller/</link><pubDate>Fri, 24 Jun 2022 01:20:00 -0500</pubDate><guid>https://support.tools/post/how-to-install-system-upgrade-controller/</guid><description>&lt;p&gt;One of the core ideas with RKE2 is that the cluster should be able to manage itself. This means that the cluster should be able to upgrade itself. RKE2 uses a tool called &lt;code&gt;system-upgrade-controller&lt;/code&gt; to do this.&lt;/p&gt;</description></item><item><title>kernel: rc rc0: receive overflow</title><link>https://support.tools/post/rc-rc0-overflow/</link><pubDate>Thu, 23 Jun 2022 23:52:00 -0500</pubDate><guid>https://support.tools/post/rc-rc0-overflow/</guid><description>&lt;p&gt;After upgrade my build nodes from Ubuntu 20.04 to Ubuntu 22.04, I got a lot of spamming syslog messages on my Intel NUC nodes, model NUC5i5RYB. Both these nodes are running RKE2 &lt;code&gt;v1.24.1+rke2r2&lt;/code&gt;. I have them tainted so that they are only used by Drone CI to run Kubernetes runners.&lt;/p&gt;&#10;&lt;p&gt;Error message&lt;/p&gt;&#10;&lt;div class="code-block" data-copy-label="Copy code, block 1"&gt;&#10; &lt;div class="code-block-header" data-pagefind-ignore&gt;&lt;/div&gt;&#10; &lt;pre tabindex="0"&gt;&lt;code&gt;Jun 24 04:35:27 a0ubnucp02 kernel: [ 2025.557663] rc rc0: receive overflow&#10;Jun 24 04:35:27 a0ubnucp02 kernel: [ 2025.561258] rc rc0: receive overflow&#10;Jun 24 04:35:27 a0ubnucp02 kernel: [ 2025.566120] rc rc0: receive overflow&#10;Jun 24 04:35:27 a0ubnucp02 kernel: [ 2025.569739] rc rc0: receive overflow&#10;Jun 24 04:35:27 a0ubnucp02 kernel: [ 2025.618179] rc rc0: receive overflow&#10;Jun 24 04:35:27 a0ubnucp02 kernel: [ 2025.637622] rc rc0: receive overflow&#10;Jun 24 04:35:27 a0ubnucp02 kernel: [ 2025.645784] rc rc0: receive overflow&#10;Jun 24 04:35:27 a0ubnucp02 kernel: [ 2025.649311] rc rc0: receive overflow&#10;Jun 24 04:35:27 a0ubnucp02 kernel: [ 2025.656808] rc rc0: receive overflow&#10;Jun 24 04:35:27 a0ubnucp02 kernel: [ 2025.660897] rc rc0: receive overflow&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;</description></item></channel></rss>