Kube eagle是一个prometheus exporter,暴露kubernetes pod资源请求、限制和它的实际使用的各种指标。可以通过它更好地查看kubernetes集群资源,以便优化资源分配。
Kube eagle eks 在Kube eagle的基础上有一个附加特性,即向所有度量添加nodegroup标签。这对于EKS部署很有用,并允许按节点组进行过滤。
https://github.com/liorfranko/kube-eagle-eks
https://github.com/liorfranko/kube-eagle-eks-helm-chart
通过监控各个节点组实际资源使用率,最终达到控制成本的目的。
Note: Metrics-server is a prerequisite for Kube Eagle to work. Most managed Kubernetes clusters come with metrics-server installed by default - you can find the associated helm chart in the helm stable repo.
通过eksctl创建的节点已经打了标签:alpha.eksctl.io/nodegroup-name=shared-t3-xlarge,但是识别不到,于是给node打 nodegroup-name 标签,就成功监控到数据了。官方提供的dashborad都是基于此标签出数据,务必打上。
场景1,自行管理的节点组(非托管)
修改存量的节点,或者新建节点组(建议,新增节点也需要手动添加)
# 添加标签
kubectl label nodes <node-name> <label-key>=<label-value>
kubectl label nodes ip-xx-xx-x-x.cn-northwest-1.compute.internal nodegroup-name=shared-t3-xlarge
kubectl label nodes <node-name> <label-key>=<label-value> --overwrite
通过eksctl修改节点组labels(托管节点组会动态更新到现有节点组)
eksctl set labels --cluster dev-cluster --nodegroup test-t3-small --labels "nodegroup-name=test-t3-small"
附:根据eksctl get nodegroup --cluster=dev到的信息拼接批量修改命令
cat a|awk '{print "eksctl set labels --cluster dev-cluster --nodegroup "$2" --labels \"nodegroup-name="$2"\""}'
注:后续通过eksctl管理节点组在创建前都增加一个标签nodegroup-name: xxx,如下:
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: dev-cluster
region: cn-northwest-1
version: "1.20"
managedNodeGroups:
- name: shared-t3-xlarge
labels: { role: workers, nodegroup-name: shared-t3-xlarge}
当然,如果不想打标签,可以试试修改下面这段代码,获取现有的节点组label:alpha.eksctl.io/nodegroup-name。
helm repo add kube-eagle https://raw.githubusercontent.com/liorfranko/kube-eagle-eks-helm-chart/master
helm repo update
helm install kube-eagle kube-eagle/kube-eagle
部署在default namespace,默认部署的是kube-eagle的镜像,临时改一下:quay.io/liorfranko/kube-eagle-eks:1.1.5
prometheus增加配置
- job_name: kube-eagle
honor_labels: true
honor_timestamps: true
scrape_interval: 30s
scrape_timeout: 10s
metrics_path: /metrics
scheme: http
follow_redirects: true
static_configs:
- targets:
- kube-eagle.default.svc:8080
默认的grafana dashborad(id:15463)变量有点问题,变量取不到值,将如下几个变量,按照如下修改就可以用了
最终效果展示