Friendly NodeDiagnostic apply with no dependency required
Back on December 3, 2024, Amazon EKS announced Amazon EKS Auto Mode and how to use NodeDiagnostic for troubleshooting. However, not all computers have a pre-set Python environment, and it may be difficult for people who are not familiar with Python, let alone solving package dependencies, version conflicts, and virtual environment setting issues.
To remove these obstacles, eks-node-diagnostic comes to solve this complex problem, aiming to simplify the entire process into executing binaries, easy to install without having to deal with Python dependencies.
- An existing Amazon EKS AutoMode cluster or a cluster with the Node Monitoring Agent installed.
- An existing kubeconfig.
- Grant IAM users and roles access to Kubernetes APIs.
- (Only required for
destinationType: s3) An existing Amazon S3 bucket for storing node logs generated byNodeDiagnostic. - (Only required for
destinationType: s3) An IAM Role/User with s3:PutObject permission (to generate presigned S3 url).
👀 Key differences with official guidance
- Single executable binary only, no Python and no AWS SDK required.
- Run anywhere, compatible with Linux (amd64/arm64), Windows (amd64 only), macOS (amd64/arm64).
- Friendly setup with Homebrew for mac users.
Get config.yaml ready, you may find examples at examples/ folder.
Execute
eks-node-diagnostic [--config-file config.yaml]nodediagnostic.eks.amazonaws.com/i-EXAMPLE1111111111 created
nodediagnostic.eks.amazonaws.com/i-EXAMPLE2222222222 created
nodediagnostic.eks.amazonaws.com/i-EXAMPLE3333333333 created
...Check
kubectl describe nodediagnosticsWhere can I find log archive generated by NodeDiagnostic when destinationType set as s3?
-
Log archive generated by
NodeDiagnosticwould be placed at path below,s3://{{ BUCKET }}/node-diagnostic/log__{{ REGION }}__{{ NODE_NAME }}__{{ TIMESTAMP }}.tar.gz
Where can I find log archive generated by NodeDiagnostic when destinationType set as node?
- Generic Linux: Log should be available at
/var/log/support/${NODE_NAME}$-logs.tar.gz - Bottlerocket: Log should be available at
/.bottlerocket/support/${NODE_NAME}$-logs.tar.gz
How do I report an issue or submit a feature request?
- Please go for project's issue page and describe your idea in detail.
What is the version requirement for destinationType: node?
- The
"node"destination type requires Node Monitoring Agent >= v1.6.1.
Brand new install
brew tap guessi/tap && brew update && brew install eks-node-diagnosticTo upgrade version
brew update && brew upgrade eks-node-diagnosticClick to expand!
curl -fsSL https://github.com/guessi/eks-node-diagnostic/releases/latest/download/eks-node-diagnostic-Linux-$(uname -m).tar.gz -o - | tar zxvf -
mv -vf ./eks-node-diagnostic /usr/local/bin/eks-node-diagnosticcurl -fsSL https://github.com/guessi/eks-node-diagnostic/releases/latest/download/eks-node-diagnostic-Darwin-$(uname -m).tar.gz -o - | tar zxvf -
mv -vf ./eks-node-diagnostic /usr/local/bin/eks-node-diagnostic$SRC = 'https://github.com/guessi/eks-node-diagnostic/releases/latest/download/eks-node-diagnostic-Windows-x86_64.tar.gz'
$DST = 'C:\Temp\eks-node-diagnostic-Windows-x86_64.tar.gz'
Invoke-RestMethod -Uri $SRC -OutFile $DST