
EKS Node Viewer for Windows πͺ
This is a Windows-optimized fork of the original AWS Labs EKS Node Viewer with enhanced Windows support, PowerShell scripts, and comprehensive Windows documentation.
π Windows Enhancements
- β
PowerShell Build Scripts - Native Windows build experience
- β
Windows Terminal Support - Optimized for modern Windows terminals
- β
Comprehensive Windows Documentation - Step-by-step Windows setup guide
- β
Cross-Platform Configuration - Smart platform detection and path handling
- β
Windows CI/CD - GitHub Actions for Windows testing
- β
Enhanced Error Handling - Windows-specific troubleshooting
π Quick Start for Windows
Option 1: PowerShell Build (Recommended)
git clone https://github.com/brunokktro/eks-node-viewer-for-windows.git
cd eks-node-viewer-for-windows
.\build.ps1
Option 2: Go Install
go install github.com/brunokktro/eks-node-viewer-for-windows/cmd/eks-node-viewer@latest
Option 3: Download Binary
Download the latest Windows binary from Releases
π For detailed Windows instructions, see WINDOWS.md
About
eks-node-viewer is a tool for visualizing dynamic node usage within a cluster. It was originally developed as an internal tool at AWS for demonstrating consolidation with Karpenter. It displays the scheduled pod resource requests vs the allocatable capacity on the node. It does not look at the actual pod resource usage.
This Windows-optimized fork adds comprehensive Windows support while maintaining full compatibility with Linux and macOS.

πͺ Windows-Specific Features
- PowerShell Integration: Native PowerShell build and deployment scripts
- Windows Terminal Optimization: Enhanced color support and Unicode rendering
- Smart Path Handling: Automatic Windows path normalization and detection
- Terminal Detection: Automatic detection of Command Prompt, PowerShell, and Windows Terminal
- Windows CI/CD: Dedicated GitHub Actions for Windows testing and builds
Talks Using eks-node-viewer
Installation
Windows (Enhanced Support) πͺ
PowerShell Build Script (Recommended)
git clone https://github.com/brunokktro/eks-node-viewer-for-windows.git
cd eks-node-viewer-for-windows
.\build.ps1 -Generate -Test
Pre-built Binary
- Download the latest Windows binary from GitHub Releases
- Extract
eks-node-viewer.exe to a directory in your PATH
- Verify installation:
eks-node-viewer --version
Go Install
go install github.com/brunokktro/eks-node-viewer-for-windows/cmd/eks-node-viewer@latest
π For comprehensive Windows setup instructions, see WINDOWS.md
Homebrew (macOS/Linux)
# Note: Use original repository for Homebrew
brew tap aws/tap
brew install eks-node-viewer
Please either fetch the latest release or install manually using:
go install github.com/brunokktro/eks-node-viewer-for-windows/cmd/eks-node-viewer@latest
Note: This will install it to your GOBIN directory, typically ~/go/bin on Unix systems or %USERPROFILE%\go\bin on Windows if it is unconfigured.
Usage
Usage of ./eks-node-viewer:
-attribution
Show the Open Source Attribution
-context string
Name of the kubernetes context to use
-disable-pricing
Disable pricing lookups
-extra-labels string
A comma separated set of extra node labels to display
-kubeconfig string
Absolute path to the kubeconfig file (default "~/.kube/config")
-node-selector string
Node label selector used to filter nodes, if empty all nodes are selected
-node-sort string
Sort order for the nodes, either 'creation' or a label name. The sort order can be controlled by appending =asc or =dsc to the value. (default "creation")
-resources string
List of comma separated resources to monitor (default "cpu")
-style string
Three color to use for styling 'good','ok' and 'bad' values. These are also used in the gradients displayed from bad -> good. (default "#04B575,#FFFF00,#FF0000")
-v Display eks-node-viewer version
-version
Display eks-node-viewer version
Examples
# Standard usage
eks-node-viewer
# Windows PowerShell with environment variables
$env:AWS_PROFILE = "myprofile"
$env:AWS_REGION = "us-west-2"
eks-node-viewer
# Karpenter nodes only
eks-node-viewer --node-selector karpenter.sh/nodepool
# Display both CPU and Memory Usage
eks-node-viewer --resources cpu,memory
# Display extra labels, i.e. AZ
eks-node-viewer --extra-labels topology.kubernetes.io/zone
# Sort by CPU usage in descending order
eks-node-viewer --node-sort=eks-node-viewer/node-cpu-usage=dsc
# Windows-specific: Disable pricing for faster startup
eks-node-viewer --disable-pricing
Computed Labels
eks-node-viewer supports some custom label names that can be passed to the --extra-labels to display additional node information.
eks-node-viewer/node-age - Age of the node
eks-node-viewer/node-cpu-usage - CPU usage (requests)
eks-node-viewer/node-memory-usage - Memory usage (requests)
eks-node-viewer/node-pods-usage - Pod usage (requests)
eks-node-viewer/node-ephemeral-storage-usage - Ephemeral Storage usage (requests)
Default Options
You can supply default options to eks-node-viewer by creating a file named .eks-node-viewer in your home directory and specifying
options there. The format is option-name=value where the option names are the command line flags:
Unix/Linux/macOS:
# select only Karpenter managed nodes
node-selector=karpenter.sh/nodepool
# display both CPU and memory
resources=cpu,memory
# show the zone and nodepool name by default
extra-labels=topology.kubernetes.io/zone,karpenter.sh/nodepool
# sort so that the newest nodes are first
node-sort=creation=asc
# change default color style
style=#2E91D2,#ffff00,#D55E00
Windows:
The config file is located at %USERPROFILE%\.eks-node-viewer with the same format as above.
Troubleshooting
NoCredentialProviders: no valid providers in chain. Deprecated.
This CLI relies on AWS credentials to access pricing data if you don't use the --disable-pricing option. You must have credentials configured via ~/aws/credentials, ~/.aws/config, environment variables, or some other credential provider chain.
See credential provider documentation for more.
I get an error of creating client, exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha1"
Updating your AWS cli to the latest version and updating your kubeconfig should resolve this issue.
Development
Building
Unix/Linux/macOS:
$ make build
Windows (PowerShell):
.\build.ps1
Cross-platform with GoReleaser:
$ make goreleaser
Windows Development
# Full development build with tests
.\build.ps1 -Generate -Test
# Clean build
.\build.ps1 -Clean
# Release build
.\build.ps1 -Release
π€ Contributing
This fork welcomes contributions, especially those that improve Windows compatibility and user experience.
Areas for Contribution:
- Windows-specific bug fixes
- PowerShell script improvements
- Windows Terminal enhancements
- Documentation improvements
- Cross-platform testing
π License
This project maintains the same Apache 2.0 license as the original AWS Labs project.
π Acknowledgments
- Original project by AWS Labs
- Windows enhancements by brunokktro
- All contributors to the original project