我需要帮助在EKS集群之外配置普罗米修斯?
我所做的:
- 创建了一个EKS集群
- 将普罗米修斯安装在EKS之外的EC2中
- 添加了具有EKS对EC2的完全访问权限的
IAM Role
。(能够从aws-cli访问群集( - 已配置
aws-auth
配置映射以包括上述IAM角色,可以使用curl -k https://kubeapi-url/healthz --header "Authorization: Bearer $TOKEN"
获取带有IAM角色令牌的EKS的/healthz
问题:
默认情况下,代币的到期时间为15分钟(出于安全原因,我不需要更改(。因此,我不能直接在prometheus.yml
配置中使用此令牌。
我需要什么:
- 如何在没有Token和Kuectl的情况下访问EKS
- 如何配置
prometheus.yml
使其自动获取令牌就像EKS的Kubeconfig文件使用
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
args:
- --region
- ap-south-1
- eks
- get-token
- --cluster-name
- eks-cluster-name
command: aws
- 或者有没有其他方法可以在没有kubernetes令牌的情况下配置Prometheus
(非常感谢普罗米修斯的配置以及我对EKS的要求。(
仅针对第二个问题:
由于您有一个自动更新的Kubeconfig文件,因此在prometheus.yml
配置文件中您可以直接使用它。
# Optional path to a kubeconfig file.
# Note that api_server and kube_config are mutually exclusive.
[ kubeconfig_file: <filename> ]
不确定这对你的案子有用。
不是确切的答案,但您可以使用普罗米修斯联盟。
- 使用默认配置在集群内设置Prometheus,它会自动抓取所有内容。不需要太多配置
- 在EC2 Box上设置prometheus,并使用这里提到的联邦配置
scrape_configs:
- job_name: 'federate'
scrape_interval: 15s
honor_labels: true
metrics_path: '/federate'
params:
'match[]':
- '{job="prometheus"}'
- '{__name__=~"job:.*"}'
static_configs:
- targets:
- '<k8s-prometheus-endpoint>'
- '<someother-prometheus-endpoint>'
不会使用任何令牌,因此相对而言更安全。全部使用k8s服务帐户和联盟。消耗更多的资源,但我们仍然可以获得某种HA。
优化:您可以减少k8s普罗米修斯中1-2天的数据(取决于具体情况(,并在EC2普罗米修斯中将数据保存更长时间。