/eks-node-viewer

EKS Node Viewer

Primary LanguageGoApache License 2.0Apache-2.0

GitHub License contributions welcome

Usage

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.

Talks Using eks-node-viewer

Installation

go install github.com/awslabs/eks-node-viewer/cmd/eks-node-viewer@latest

Note: This will install it to your GOBIN directory, typically ~/go/bin if it is unconfigured.

Usage

Usage of ./eks-node-viewer:
  -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
  -resources string
    	List of comma separated resources to monitor (default "cpu")

Examples

# Standard usage
eks-node-viewer
# Karenter nodes only
eks-node-viewer --node-selector "karpenter.sh/provisioner-name"
# Display both CPU and Memory Usage 
eks-node-viewer --resources cpu,memory
# Specify a particular AWS profile and region 
AWS_PROFILE=myprofile AWS_REGION=us-west-2 

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:

# select only Karpenter managed nodes
node-selector=karpenter.sh/provisioner-name

# display both CPU and memory
resources=cpu,memory

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

$ make build