πŸ’€ KubeNidra
πŸ’» KubeNidra CLI

Troubleshooting

This guide helps you diagnose and resolve common issues with the KubeNidra CLI.

Quick Diagnostics

Check CLI Installation

# Check if CLI is installed
kubenidra --version

# Check help
kubenidra --help

# Test basic functionality
kubenidra list-enabled deployment

Check Kubernetes Connection

# Test permissions
kubectl auth can-i get deployments

# Test namespace access
kubectl get namespaces

Common Issues

1. Workload Not Found

Symptoms:

  • deployments.apps "my-app" not found
  • Workload doesn't exist in namespace

Diagnosis:

# Check if workload exists
kubectl get deployment my-app -n development

# List all workloads
kubectl get deployments -n development

# Check namespace
kubectl get namespaces

Solutions:

  1. Wrong Namespace
# Use correct namespace
kubenidra -n correct-namespace enable deployment my-app

# Check available namespaces
kubectl get namespaces
  1. Wrong Workload Type
# Check workload type
kubectl get all -n development

# Use correct type
kubenidra enable statefulset my-app -n development # if it's a StatefulSet

2. Invalid Schedule Format

Symptoms:

  • invalid schedule format
  • Schedule validation errors

Diagnosis:

# Test schedule format
kubenidra enable deployment my-app -n test --schedule "invalid-format"

Solutions:

  1. Use Correct Format
# Correct formats
kubenidra enable deployment my-app -n test --schedule "09:00-17:00,mon-fri"
kubenidra enable deployment my-app -n test --schedule "08:00-18:00,mon-sun"
kubenidra enable deployment my-app -n test --schedule "22:00-03:00,fri-mon"
  1. Multiple Time Ranges
# Multiple ranges with semicolon
kubenidra enable deployment my-app -n test --schedule "09:00-17:00,mon-wed,fri;08:00-18:00,thu"

3. KubeNidra Not Enabled

Symptoms:

  • KubeNidra is not enabled for deployment
  • Commands fail with "not enabled" message

Diagnosis:

# Check if KubeNidra is enabled
kubectl get deployment my-app -n development -o jsonpath='{.metadata.annotations.kubenidra/enabled}'

# Check all annotations
kubectl get deployment my-app -n development -o jsonpath='{.metadata.annotations}'

Solutions:

  1. Enable KubeNidra
# Enable KubeNidra
kubenidra enable deployment my-app -n development

# Verify
kubenidra status deployment my-app -n development
  1. Check Annotations
# View annotations
kubectl get deployment my-app -n development -o yaml | grep kubenidra

# Manual annotation
kubectl patch deployment my-app -n development \
  -p '{"metadata":{"annotations":{"kubenidra/enabled":"true"}}}'

4. Operation Conflicts

Symptoms:

  • is already snoozed
  • is already pinned
  • is not pinned

Diagnosis:

# Check current state
kubenidra status deployment my-app -n development

# Check annotations
kubectl get deployment my-app -n development -o jsonpath='{.metadata.annotations}'

Solutions:

  1. Already Snoozed
# Wake first, then snooze again
kubenidra wake deployment my-app -n development
kubenidra snooze deployment my-app -n development
  1. Already Pinned
# Unpin first
kubenidra unpin deployment my-app -n development

# Then perform operation
kubenidra snooze deployment my-app -n development
  1. Not Pinned
# Pin first
kubenidra pin deployment my-app -n development

# Then unpin
kubenidra unpin deployment my-app -n development

Advanced Troubleshooting

Check RBAC

# Check permissions
kubectl auth can-i --list

# Check specific permissions
kubectl auth can-i update deployments --namespace development
kubectl auth can-i patch deployments --namespace development