{"id":13522068,"url":"https://github.com/awslabs/eks-node-viewer","last_synced_at":"2025-05-14T13:08:13.713Z","repository":{"id":64476233,"uuid":"575555632","full_name":"awslabs/eks-node-viewer","owner":"awslabs","description":"EKS Node Viewer","archived":false,"fork":false,"pushed_at":"2025-05-06T17:17:48.000Z","size":23541,"stargazers_count":1410,"open_issues_count":16,"forks_count":127,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-05-06T18:29:16.010Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/awslabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-12-07T19:23:53.000Z","updated_at":"2025-05-06T17:17:49.000Z","dependencies_parsed_at":"2023-10-12T09:11:14.252Z","dependency_job_id":"29737842-dca8-4c1e-8eee-121d5469b143","html_url":"https://github.com/awslabs/eks-node-viewer","commit_stats":{"total_commits":170,"total_committers":16,"mean_commits":10.625,"dds":0.5941176470588235,"last_synced_commit":"98c26f3bc694b3ae7a7e8004acdbccd29fc6d1b7"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2Feks-node-viewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2Feks-node-viewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2Feks-node-viewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2Feks-node-viewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/awslabs","download_url":"https://codeload.github.com/awslabs/eks-node-viewer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254149960,"owners_count":22022851,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T06:00:41.861Z","updated_at":"2025-05-14T13:08:08.693Z","avatar_url":"https://github.com/awslabs.png","language":"Go","funding_links":[],"categories":["Table of Contents","Go","Applications"],"sub_categories":["Cloud and DevOps"],"readme":"[![GitHub License](https://img.shields.io/badge/License-Apache%202.0-ff69b4.svg)](https://github.com/awslabs/eks-node-viewer/blob/main/LICENSE)\n[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/awslabs/eks-node-viewer/issues)\n[![Go code tests](https://github.com/awslabs/eks-node-viewer/actions/workflows/test.yaml/badge.svg)](https://github.com/awslabs/eks-node-viewer/actions/workflows/test.yaml)\n\n## Usage\n\n`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](https://karpenter.sh/).  It displays the scheduled pod resource requests vs the allocatable capacity on the node.  It *does not* look at the actual pod resource usage.\n\n![](./.static/screenshot.png)\n\n### Talks Using eks-node-viewer\n\n- [Containers from the Couch: Workload Consolidation with Karpenter](https://www.youtube.com/watch?v=BnksdJ3oOEs)\n- [AWS re:Invent 2022 - Kubernetes virtually anywhere, for everyone](https://www.youtube.com/watch?v=OB7IZolZk78)\n\n### Installation\n\n#### Homebrew\n\n```bash\nbrew tap aws/tap\nbrew install eks-node-viewer\n```\n\n#### Manual\nPlease either fetch the latest [release](https://github.com/awslabs/eks-node-viewer/releases) or install manually using:\n```shell\ngo install github.com/awslabs/eks-node-viewer/cmd/eks-node-viewer@latest\n```\n\nNote: This will install it to your `GOBIN` directory, typically `~/go/bin` if it is unconfigured.\n\n## Usage\n```shell\nUsage of ./eks-node-viewer:\n  -attribution\n    \tShow the Open Source Attribution\n  -context string\n    \tName of the kubernetes context to use\n  -disable-pricing\n    \tDisable pricing lookups\n  -extra-labels string\n    \tA comma separated set of extra node labels to display\n  -kubeconfig string\n    \tAbsolute path to the kubeconfig file (default \"~/.kube/config\")\n  -node-selector string\n    \tNode label selector used to filter nodes, if empty all nodes are selected\n  -node-sort string\n    \tSort 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\")\n  -resources string\n    \tList of comma separated resources to monitor (default \"cpu\")\n  -style string\n    \tThree color to use for styling 'good','ok' and 'bad' values. These are also used in the gradients displayed from bad -\u003e good. (default \"#04B575,#FFFF00,#FF0000\")\n  -v\tDisplay eks-node-viewer version\n  -version\n    \tDisplay eks-node-viewer version\n```\n\n### Examples\n```shell\n# Standard usage\neks-node-viewer\n# Karpenter nodes only\neks-node-viewer --node-selector karpenter.sh/nodepool\n# Display both CPU and Memory Usage\neks-node-viewer --resources cpu,memory\n# Display extra labels, i.e. AZ\neks-node-viewer --extra-labels topology.kubernetes.io/zone\n# Sort by CPU usage in descending order\neks-node-viewer --node-sort=eks-node-viewer/node-cpu-usage=dsc\n# Specify a particular AWS profile and region\nAWS_PROFILE=myprofile AWS_REGION=us-west-2\n```\n\n### Computed Labels\n\n`eks-node-viewer` supports some custom label names that can be passed to the `--extra-labels` to display additional node information. \n\n- `eks-node-viewer/node-age` - Age of the node\n- `eks-node-viewer/node-cpu-usage` - CPU usage (requests)\n- `eks-node-viewer/node-memory-usage` - Memory usage (requests)\n- `eks-node-viewer/node-pods-usage` - Pod usage (requests)\n- `eks-node-viewer/node-ephemeral-storage-usage` - Ephemeral Storage usage (requests)\n\n### Default Options\nYou can supply default options to `eks-node-viewer` by creating a file named `.eks-node-viewer` in your home directory and specifying\noptions there. The format is `option-name=value` where the option names are the command line flags:\n```text\n# select only Karpenter managed nodes\nnode-selector=karpenter.sh/nodepool\n\n# display both CPU and memory\nresources=cpu,memory\n\n# show the zone and nodepool name by default\nextra-labels=topology.kubernetes.io/zone,karpenter.sh/nodepool\n\n# sort so that the newest nodes are first\nnode-sort=creation=asc\n\n# change default color style\nstyle=#2E91D2,#ffff00,#D55E00\n```\n\n### Troubleshooting\n\n#### NoCredentialProviders: no valid providers in chain. Deprecated.\n\nThis 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.\n\nSee [credential provider documentation](https://docs.aws.amazon.com/sdk-for-go/api/aws/session/) for more.\n\n#### I get an error of `creating client, exec plugin: invalid apiVersion \"client.authentication.k8s.io/v1alpha1\"`\n\nUpdating your AWS cli to the latest version and [updating your kubeconfig](https://docs.aws.amazon.com/cli/latest/reference/eks/update-kubeconfig.html) should resolve this issue.\n\n## Development\n\n### Building\n\n```shell\n$ make build\n```\n\nOr local execution of GoReleaser build:\n```shell\n$ make goreleaser\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawslabs%2Feks-node-viewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fawslabs%2Feks-node-viewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawslabs%2Feks-node-viewer/lists"}