Managing Versions
Complete guide to installing, switching, and managing kubectl versions with Kuve.
Installing Versions
Basic Installation
Install any kubectl version from official Kubernetes releases:
kuve install v1.29.1
Installation Process
When you install a version, Kuve:
- Downloads the kubectl binary from
dl.k8s.io - Verifies the download was successful
- Stores it in
~/.kuve/versions/<version>/kubectl - Makes it executable
- Confirms successful installation
Installation Requirements
- Internet connection to download from dl.k8s.io
- Disk space (~50MB per version)
- Write permissions in
~/.kuve/directory
Platform Detection
Kuve automatically detects your platform:
- Linux:
linux/amd64,linux/arm64 - macOS:
darwin/amd64,darwin/arm64
Version Already Installed
If the version is already installed:
$ kuve install v1.28.0
Version v1.28.0 is already installed
To reinstall, uninstall first:
kuve uninstall v1.28.0
kuve install v1.28.0
Switching Versions
Instant Switching
Kuve uses symbolic links for instant version switching:
kuve switch v1.29.0
What Happens During Switch
- Validates the version is installed
- Updates the symlink:
~/.kuve/bin/kubectl → ~/.kuve/versions/v1.29.0/kubectl - Confirms the switch
Auto-Install on Switch
If a version isn't installed, Kuve prompts to install it:
$ kuve switch v1.30.0
Version v1.30.0 is not installed. Would you like to install it? [y/N]
Verify Switch
Always verify after switching:
kuve current
kubectl version --client --short
Listing Versions
List Installed Versions
See all locally installed kubectl versions:
$ kuve list installed
Installed kubectl versions:
v1.26.3
v1.27.5
* v1.28.0
v1.29.1
* = current version (v1.28.0)
Output Details
- Listed versions: All installed kubectl versions
- Current marker (
*): Indicates the active version - Sorted: Displayed in version order
List Remote Versions
Check the latest stable kubectl version:
$ kuve list remote
Latest stable version: v1.29.1
This queries the official Kubernetes release information.
No Versions Installed
If no versions are installed:
$ kuve list installed
No kubectl versions installed
Install a version using: kuve install <version>
Uninstalling Versions
Basic Uninstall
Remove versions you no longer need:
kuve uninstall v1.27.0
Uninstall Process
- Validates the version is installed
- Checks if it's the current version
- Removes the version directory
- Confirms successful removal
Cannot Uninstall Current Version
Kuve prevents uninstalling the active version:
$ kuve uninstall v1.28.0
Error: cannot uninstall the currently active version (v1.28.0)
Switch to another version first using 'kuve switch <version>'
Solution:
# Switch to another version first
kuve switch v1.29.0
# Now uninstall
kuve uninstall v1.28.0
Version Not Installed
If trying to uninstall a non-existent version:
$ kuve uninstall v1.25.0
Error: version v1.25.0 is not installed
Checking Current Version
Show Active Version
Display the currently active kubectl version:
$ kuve current
Current kubectl version: v1.28.0
No Version Active
If no version is set:
$ kuve current
No kubectl version is currently active
Install and switch to a version using:
kuve install <version>
kuve switch <version>
Cross-Verify with kubectl
Always verify with kubectl itself:
kubectl version --client --short
# Output: Client Version: v1.28.0
Version Storage
Directory Structure
Kuve stores versions in a clean, organized structure:
~/.kuve/
├── bin/
│ ├── kuve # Kuve executable
│ └── kubectl # Symlink → versions/v1.28.0/kubectl
└── versions/
├── v1.27.5/
│ └── kubectl # kubectl v1.27.5 binary
├── v1.28.0/
│ └── kubectl # kubectl v1.28.0 binary
└── v1.29.1/
└── kubectl # kubectl v1.29.1 binary
Disk Space Usage
Each kubectl version uses approximately 50MB of disk space.
Check usage:
du -sh ~/.kuve/versions/*
# Output:
# 50M ~/.kuve/versions/v1.27.5
# 50M ~/.kuve/versions/v1.28.0
# 50M ~/.kuve/versions/v1.29.1
Manual Cleanup
You can manually remove version directories:
rm -rf ~/.kuve/versions/v1.27.0
Always use kuve uninstall instead of manual removal to ensure proper cleanup.
Version Strategies
Strategy 1: Minimal Versions
Keep only actively used versions:
# Install only what you need
kuve install v1.28.0 # Production cluster
kuve install v1.29.0 # Staging cluster
# Regularly clean up
kuve list installed
kuve uninstall <old-version>
Benefits:
- Minimal disk usage
- Easier management
- Clear purpose per version
Strategy 2: Range Testing
Install a range for compatibility testing:
# Install multiple versions for testing
kuve install v1.27.0
kuve install v1.28.0
kuve install v1.29.0
kuve install v1.30.0
Benefits:
- Test across versions
- Validate manifests
- Ensure compatibility
Strategy 3: Latest + LTS
Keep latest and long-term support versions:
# Latest stable
kuve install v1.29.1
# LTS versions
kuve install v1.27.9 # Previous LTS
kuve install v1.24.12 # Older LTS
Benefits:
- Support old clusters
- Use latest features
- Cover common cases
Advanced Operations
Batch Installation
Install multiple versions in sequence:
# Using a loop
for version in v1.27.0 v1.28.0 v1.29.0; do
kuve install $version
done
Version Migration
Move from one version to another across projects:
# Find all .kubernetes-version files
find ~/projects -name .kubernetes-version -exec cat {} \;
# Update them
find ~/projects -name .kubernetes-version -exec sh -c 'echo "v1.29.0" > {}' \;
# Verify and switch
cd ~/projects/my-project
kuve use
Backup Versions
Backup your installed versions:
# Create backup
tar -czf kuve-versions-backup.tar.gz ~/.kuve/versions/
# Restore backup
tar -xzf kuve-versions-backup.tar.gz -C ~/
Troubleshooting
Download Failures
If download fails:
- Check internet connection
- Verify version exists:
kuve list remote - Check dl.k8s.io status
- Try again: Downloads may be transient
Permission Issues
If you get permission errors:
# Fix permissions
chmod +x ~/.kuve/versions/v1.28.0/kubectl
# Fix directory permissions
chmod -R u+w ~/.kuve/
Corrupted Installation
If a version seems corrupted:
# Reinstall
kuve uninstall v1.28.0
kuve install v1.28.0
Symlink Issues
If kubectl command doesn't work:
# Check symlink
ls -l ~/.kuve/bin/kubectl
# Recreate if needed
kuve switch v1.28.0
Next Steps
- Version Files - Use project-specific versions
- Workflows - Learn advanced patterns
- Cluster Detection - Auto-detect versions