https://github.com/awslabs/eks-node-viewer
EKS Node Viewer
Science Score: 36.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
✓Committers with academic emails
1 of 19 committers (5.3%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.8%) to scientific vocabulary
Keywords from Contributors
Repository
EKS Node Viewer
Basic Info
Statistics
- Stars: 1,483
- Watchers: 15
- Forks: 137
- Open Issues: 22
- Releases: 16
Metadata Files
README.md
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
- Containers from the Couch: Workload Consolidation with Karpenter
- AWS re:Invent 2022 - Kubernetes virtually anywhere, for everyone
Installation
Homebrew
bash
brew tap aws/tap
brew install eks-node-viewer
Manual
Please either fetch the latest release or install manually using:
shell
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
shell
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
```shell
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
AWSPROFILE=myprofile AWSREGION=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 nodeeks-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:
```text
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 ```
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
shell
$ make build
Or local execution of GoReleaser build:
shell
$ make goreleaser
Owner
- Name: Amazon Web Services - Labs
- Login: awslabs
- Kind: organization
- Location: Seattle, WA
- Website: http://amazon.com/aws/
- Repositories: 914
- Profile: https://github.com/awslabs
AWS Labs
GitHub Events
Total
- Create event: 88
- Release event: 4
- Issues event: 8
- Watch event: 292
- Delete event: 94
- Issue comment event: 54
- Push event: 95
- Pull request review comment event: 6
- Pull request review event: 68
- Pull request event: 198
- Fork event: 37
Last Year
- Create event: 88
- Release event: 4
- Issues event: 8
- Watch event: 292
- Delete event: 94
- Issue comment event: 54
- Push event: 95
- Pull request review comment event: 6
- Pull request review event: 68
- Pull request event: 198
- Fork event: 37
Committers
Last synced: about 1 year ago
Top Committers
| Name | Commits | |
|---|---|---|
| dependabot[bot] | 4****] | 125 |
| Todd Neal | t****t@a****m | 80 |
| Brandon | w****m@a****m | 11 |
| Marko Bevc | m****o@s****m | 11 |
| Jonathan Innis | j****s@a****m | 4 |
| Ryo Nakamine | r****0@g****m | 3 |
| Abhinav Dahiya | a****a@l****m | 2 |
| pete911 | p****r@g****m | 2 |
| Steve Mason | s****m@b****m | 1 |
| nezz7 | o****n@w****m | 1 |
| Alex Koepke | a****e | 1 |
| Ellis Tarn | e****n@g****m | 1 |
| Justin Garrison | j****n@g****m | 1 |
| Nick Tran | 1****n | 1 |
| Omar kamoun | 3****7 | 1 |
| Rob | R****d | 1 |
| Serge Logvinov | s****v@s****v | 1 |
| T00mm | 3****m | 1 |
| punkwalker | p****e@m****u | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 10 months ago
All Time
- Total issues: 60
- Total pull requests: 412
- Average time to close issues: about 2 months
- Average time to close pull requests: 10 days
- Total issue authors: 50
- Total pull request authors: 24
- Average comments per issue: 2.13
- Average comments per pull request: 0.59
- Merged pull requests: 221
- Bot issues: 0
- Bot pull requests: 329
Past Year
- Issues: 8
- Pull requests: 186
- Average time to close issues: 3 months
- Average time to close pull requests: 5 days
- Issue authors: 8
- Pull request authors: 13
- Average comments per issue: 0.63
- Average comments per pull request: 0.41
- Merged pull requests: 100
- Bot issues: 0
- Bot pull requests: 160
Top Authors
Issue Authors
- runningman84 (5)
- mbevc1 (4)
- dependabot[bot] (3)
- FernandoMiguel (3)
- flavono123 (2)
- rothgar (2)
- mudasirmirza (1)
- momenthana (1)
- dcpc007 (1)
- phsmiths (1)
- itselavia (1)
- yashtandon019 (1)
- poussa (1)
- sidewinder12s (1)
- nthienan (1)
Pull Request Authors
- dependabot[bot] (421)
- tzneal (44)
- mbevc1 (9)
- bwagner5 (6)
- abhinavdahiya (4)
- rnakamine (3)
- nickdallavalentina (2)
- punkwalker (2)
- kj187 (2)
- Nezz7 (2)
- MaximeMRF (2)
- adelinag08 (2)
- sergelogvinov (1)
- rodrigorfk (1)
- thiru85 (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 1
- Total dependent repositories: 1
- Total versions: 24
proxy.golang.org: github.com/awslabs/eks-node-viewer
- Homepage: https://github.com/awslabs/eks-node-viewer
- Documentation: https://pkg.go.dev/github.com/awslabs/eks-node-viewer#section-documentation
- License: Apache-2.0
-
Latest release: v0.7.4
published about 1 year ago
Rankings
Dependencies
- cloud.google.com/go v0.97.0
- github.com/Azure/go-autorest v14.2.0+incompatible
- github.com/Azure/go-autorest/autorest v0.11.27
- github.com/Azure/go-autorest/autorest/adal v0.9.20
- github.com/Azure/go-autorest/autorest/date v0.3.0
- github.com/Azure/go-autorest/logger v0.2.1
- github.com/Azure/go-autorest/tracing v0.6.0
- github.com/PuerkitoBio/purell v1.1.1
- github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578
- github.com/aws/aws-sdk-go v1.44.131
- github.com/charmbracelet/bubbles v0.13.0
- github.com/charmbracelet/bubbletea v0.22.1
- github.com/charmbracelet/harmonica v0.2.0
- github.com/charmbracelet/lipgloss v0.5.0
- github.com/containerd/console v1.0.3
- github.com/davecgh/go-spew v1.1.1
- github.com/emicklei/go-restful/v3 v3.8.0
- github.com/go-logr/logr v1.2.3
- github.com/go-openapi/jsonpointer v0.19.5
- github.com/go-openapi/jsonreference v0.19.5
- github.com/go-openapi/swag v0.19.14
- github.com/gogo/protobuf v1.3.2
- github.com/golang-jwt/jwt/v4 v4.2.0
- github.com/golang/protobuf v1.5.2
- github.com/google/gnostic v0.5.7-v3refs
- github.com/google/go-cmp v0.5.6
- github.com/google/gofuzz v1.1.0
- github.com/imdario/mergo v0.3.6
- github.com/jmespath/go-jmespath v0.4.0
- github.com/josharian/intern v1.0.0
- github.com/json-iterator/go v1.1.12
- github.com/lucasb-eyer/go-colorful v1.2.0
- github.com/mailru/easyjson v0.7.6
- github.com/mattn/go-isatty v0.0.16
- github.com/mattn/go-localereader v0.0.1
- github.com/mattn/go-runewidth v0.0.13
- github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
- github.com/modern-go/reflect2 v1.0.2
- github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b
- github.com/muesli/cancelreader v0.2.2
- github.com/muesli/reflow v0.3.0
- github.com/muesli/termenv v0.11.1-0.20220212125758-44cd13922739
- github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
- github.com/rivo/uniseg v0.2.0
- github.com/samber/lo v1.33.0
- github.com/spf13/pflag v1.0.5
- go.uber.org/atomic v1.7.0
- go.uber.org/multierr v1.8.0
- golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd
- golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17
- golang.org/x/net v0.1.0
- golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8
- golang.org/x/sys v0.1.0
- golang.org/x/term v0.1.0
- golang.org/x/text v0.4.0
- golang.org/x/time v0.0.0-20220210224613-90d013bbcef8
- google.golang.org/appengine v1.6.7
- google.golang.org/protobuf v1.28.0
- gopkg.in/inf.v0 v0.9.1
- gopkg.in/yaml.v2 v2.4.0
- gopkg.in/yaml.v3 v3.0.1
- k8s.io/api v0.25.0
- k8s.io/apimachinery v0.25.0
- k8s.io/client-go v0.25.0
- k8s.io/klog/v2 v2.70.1
- k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1
- k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed
- sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2
- sigs.k8s.io/structured-merge-diff/v4 v4.2.3
- sigs.k8s.io/yaml v1.2.0
- 663 dependencies
- actions/checkout v3 composite
- actions/setup-go v3 composite
- goreleaser/goreleaser-action v4 composite
- actions/checkout v3 composite
- actions/setup-go v3 composite