Code Monkey home page Code Monkey logo

eks-node-viewer's Introduction

GitHub License contributions welcome Go code tests

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. It displays the scheduled pod resource requests vs the allocatable capacity on the node. It does not look at the actual pod resource usage.

Talks Using eks-node-viewer

Installation

Homebrew

brew tap aws/tap
brew install eks-node-viewer

Manual

Please either fetch the latest release or install manually using:

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:
  -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
# 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
# Specify a particular AWS profile and region
AWS_PROFILE=myprofile AWS_REGION=us-west-2

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:

# 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

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

Or local execution of GoReleaser build:

$ make goreleaser

eks-node-viewer's People

Contributors

abhinavdahiya avatar bwagner5 avatar dependabot[bot] avatar ellistarn avatar jonathan-innis avatar mbevc1 avatar nezz7 avatar njtran avatar pete911 avatar robertnorthard avatar rothgar avatar t00mm avatar tzneal avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.